stfとappiumをもちいたandroidアプリの自動テスト
TRANSCRIPT
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF と Appium をもちいたAndroid アプリの自動テスト
2016/02/06(Sat)平田 敏之 @DeNA
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
• 主にスマホアプリ周りを担当
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日の流れ
Android アプリの自動テストにおける課題
Android アプリの自動テスト / デモ⁃ Appium
自動テストの実行環境 / デモ⁃ STF + Jenkins
デモ
まとめ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Android アプリの自動テストにおける課題
自動テストに何を使うか?⁃ 最近は選択肢が増えており用途に応じて使い分けるのが良い
自動テストを実行する環境のよくある制約⁃ テストを実行する環境に端末が接続されてないといけない⁃ 端末でテストが実行されているかの判断をしないといけない
• 「 Selenium 実践入門」の P365-366 にも同様のことを書いています。
[ 求む ]端末のリモートデバッグ・端末の管理をしてくれるサービス
「特定のメーカーの端末で」「 API Level 18 以上の端末全て」 に自動テストを実行!とかをしたい!!
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Android アプリの自動テスト
自動テスト書いていますか?
何を使っていますか?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Android アプリの自動テスト
JUnit4 Robolectric Espresso UI Automator Appium
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 を使える
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” />
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Appium / デモ (MERY)
世に出ているアプリでの動作例 • 対象アプリ MERY• テストケース
• login をして username を確認
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テストの実行環境
自動テストを動かす環境どうしてますか?
手元で動かしていますか?
Jenkins で動かしていても制約がありませんか?⁃ 端末が全て Jenkins に接続されている。⁃ 自動テストを実行する端末を固定化している。
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF(Smartphone Test Farm) / Device Farm
ブラウザから端末を操作することができる リモートデバッグができる etc etc
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF / デモ
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF の新機能 @2.0.0
自動テストでの利用も考え、 API を追加。⁃ 端末の status( 利用中 / オンライン etc) が取得 / 変更可能⁃ 端末の情報 (OS / Model etc) が取得可能
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
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デモ / STF + Jenkins + Appium + Docker
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
まとめ
Android アプリの自動テストは⁃ STF + Jenkins + Appium + Docker
是非、 [email protected] の API をご利用ください!
STF 用の Jenkins plugin を現在開発中です。⁃ 公開をお待ち下さい!!
開発中
Copyright © DeNA Co.,Ltd. All Rights Reserved.
最後に
さらに先に進むために
SWET G は人材を募集しております!!⁃ ( 特に ) クライアント周りをがっつりやりたい
人は是非!