stfとappiumをもちいたandroidアプリの自動テスト

17
Copyright © DeNA Co.,Ltd. All Rights Reserved. STF と Appium ととととと Android ととととととととと 2016/02/06(Sat) とと とと @DeNA

Upload: toshiyuki-hirata

Post on 08-Jan-2017

3.491 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

STF と Appium をもちいたAndroid アプリの自動テスト

2016/02/06(Sat)平田 敏之 @DeNA

Page 2: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

自己紹介

平田 敏之⁃ DeNA (2013/04- )• 以前は GW の開発・テストやスマホアプリの開発・テストなど

⁃ SWET G 所属• Software Engineer in Test

⁃ http://www.slideshare.net/masaki/dena-software-engineer-in-test

• 主にスマホアプリ周りを担当

Page 3: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今日の流れ

Android アプリの自動テストにおける課題

Android アプリの自動テスト / デモ⁃ Appium

自動テストの実行環境 / デモ⁃ STF + Jenkins

デモ

まとめ

Page 4: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Android アプリの自動テストにおける課題

自動テストに何を使うか?⁃ 最近は選択肢が増えており用途に応じて使い分けるのが良い

自動テストを実行する環境のよくある制約⁃ テストを実行する環境に端末が接続されてないといけない⁃ 端末でテストが実行されているかの判断をしないといけない

• 「 Selenium 実践入門」の P365-366 にも同様のことを書いています。

[ 求む ]端末のリモートデバッグ・端末の管理をしてくれるサービス

「特定のメーカーの端末で」「 API Level 18 以上の端末全て」    に自動テストを実行!とかをしたい!!

Page 5: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Android アプリの自動テスト

自動テスト書いていますか?

何を使っていますか?

Page 6: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Android アプリの自動テスト

JUnit4 Robolectric Espresso UI Automator Appium

Page 7: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Appium

Appium ClientTest Script

(Ruby / Java etc)

Appium Server(node)

UI Automator

SmartPhone

テスト対象アプリ

Architecture iOS/Android に対応 Native App/ Hybrid App / Mobile Web に対応

⁃ アプリが手に入れば OK

Ruby / Java / javascript(node.js) などでテストコードの記述が可能

⁃ Rspec や Junit など慣れた Testing Framework を使える

Page 8: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Appium / サンプルアプリ

サンプルコード (Ruby w/appium_lib) - button("com.thirata.appium_sample:id/button_sample_1").click - find("com.thirata.appium_sample:id/button_sample_2").click - textfield_exact(com.thirata.appium_sample:id/text_1").type 1 - textfields[1].send_keys("2")

Layout ( 全てに id がふられています )<Button ….

android:id=“@+id/button_sample_1” /><Button ….

android:id=“@+id/button_sample_2” /><EditText ….

android:id=“@+id/text_1” /><EditText ….

android:id=“@+id/text_2” />

デモ動画

Page 9: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Appium / デモ (MERY)

世に出ているアプリでの動作例 • 対象アプリ MERY•  テストケース

• login をして username を確認

デモ動画

Page 10: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

自動テストの実行環境

自動テストを動かす環境どうしてますか?

手元で動かしていますか?

Jenkins で動かしていても制約がありませんか?⁃ 端末が全て Jenkins に接続されている。⁃ 自動テストを実行する端末を固定化している。

Page 11: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

STF(Smartphone Test Farm) / Device Farm

ブラウザから端末を操作することができる リモートデバッグができる etc etc

Page 12: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

STF / デモ

デモ動画

Page 13: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

STF の新機能 @2.0.0

自動テストでの利用も考え、 API を追加。⁃ 端末の status( 利用中 / オンライン etc) が取得 / 変更可能⁃ 端末の情報 (OS / Model etc) が取得可能

Page 14: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

STF / API サンプル

GET /api/v1/devices ( 端末一覧 )

Curl Samplecurl -H "Authorization: Bearer OAUTH-TOKEN" https://stf.example.org/api/v1/devices

Response Sample{"success":true,"devices":[{"abi":"armeabi-v7a","airplaneMode":false,"battery":

{"health":"good","level":100,"scale":100,"source":"usb","status":"full","temp":27.6,"voltage":4.348},"browser":{"apps":[{"id":"com.android.chrome/com.google.android.apps.chrome.Main","name":"Chrome","selected":true,"system":true,"type":"chrome","developer":"Google Inc."}],"selected":true},"channel":"d7V3Zoo5B2Kc6MdCrbsvcBABG+w=","createdAt":"2016-01-26T11:29:20.444Z","display":{"density":3,"fps":60,"height":1920,"id":0,"rotation":0,"secure":true,"size":4.971247673034668,"url":"ws://localhost:7400","width":1080,"xdpi":442.45098876953125,"ydpi":443.3450012207031,"inches":5},"manufacturer":"LGE","model":"Nexus 5","network":{"connected":true,"failover":false,"roaming":false,"subtype":"","type":"WIFI"},"operator":null,"owner":null,"phone":{"iccid":null,"imei":"359250051959219","network":"UNKNOWN","phoneNumber":null},"platform":"Android","presenceChangedAt":"2016-02-01T03:36:13.365Z","present":true,"product":"hammerhead","provider":{"channel":"xxxxxx","name":"xxxxxx"},"ready":true,"remoteConnect":false,"remoteConnectUrl":null,"reverseForwards":[],"sdk":"19","serial":"xxxxx","status":3,"statusChangedAt":"2016-02-01T03:36:13.216Z","version":"4.4.2","name":"Nexus 5","releasedAt":"2013-11-14T15:00:00.000Z","image":"Nexus_5.jpg","cpu":{"cores":4,"freq":2.26,"name":"Qualcomm Snapdragon 800 MSM8974"},"memory":{"ram":2048,"rom":32768},"using":false}]}

https://github.com/openstf/stf/blob/2.0.0/doc/API.md

Page 15: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

デモ / STF + Jenkins + Appium + Docker

デモ動画

Page 16: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

まとめ

Android アプリの自動テストは⁃ STF + Jenkins + Appium + Docker

是非、 [email protected] の API をご利用ください!

STF 用の Jenkins plugin を現在開発中です。⁃ 公開をお待ち下さい!!

開発中

Page 17: STFとAppiumをもちいたAndroidアプリの自動テスト

Copyright © DeNA Co.,Ltd. All Rights Reserved.

最後に

さらに先に進むために

SWET G は人材を募集しております!!⁃ ( 特に ) クライアント周りをがっつりやりたい

人は是非!