狠狠撸

狠狠撸Share a Scribd company logo
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 Client
Test 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 Sample
curl -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":"C
hrome","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.97124767
3034668,"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":n
ull,"phone":{"iccid":null,"imei":"359250051959219","network":"UNKNOWN","phoneNumber":null},"platform":"Androi
d","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,"sta
tusChangedAt":"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
? 是非、STF@2.0.0のAPIをご利用ください!
? STF用のJenkins pluginを現在開発中です。
? 公開をお待ち下さい!!
開発中
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
最後に
さらに先に進むために
? SWET Gは人材を募集しております!!
? (特に)クライアント周りをがっつりやりたい人
は是非!

More Related Content

厂罢贵と础辫辫颈耻尘をもちいた础苍诲谤辞颈诲アフ?リの自动テスト

  • 1. Copyright ? DeNA Co.,Ltd. All Rights Reserved. STF と Appium をもちいた Android アプリの自動テスト 2016/02/06(Sat) 平田 敏之@DeNA
  • 2. 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 ? 主にスマホアプリ周りを担当
  • 3. Copyright ? DeNA Co.,Ltd. All Rights Reserved. 今日の流れ ? Androidアプリの自動テストにおける課題 ? Androidアプリの自動テスト / デモ ? Appium ? 自動テストの実行環境 / デモ ? STF + Jenkins ? デモ ? まとめ
  • 4. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Androidアプリの自動テストにおける課題 ? 自動テストに何を使うか? ? 最近は選択肢が増えており用途に応じて使い分けるのが良い ? 自動テストを実行する環境のよくある制約 ? テストを実行する環境に端末が接続されてないといけない ? 端末でテストが実行されているかの判断をしないといけない ? 「Selenium実践入門」のP365-366にも同様のことを書いています。 [求む] 端末のリモートデバッグ?端末の管理をしてくれるサービス 「特定のメーカーの端末で」「API Level 18以上の端末全て」 に自動テストを実行!とかをしたい!!
  • 5. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Androidアプリの自動テスト ? 自動テスト書いていますか? ? 何を使っていますか?
  • 6. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Androidアプリの自動テスト ? JUnit4 ? Robolectric ? Espresso ? UI Automator ? Appium
  • 7. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Appium Appium Client Test 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 を使える
  • 8. 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” /> デモ動画
  • 9. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Appium / デモ(MERY) 世に出ているアプリでの動作例 ? 対象アプリMERY ? テストケース ? loginをしてusernameを確認 デモ動画
  • 10. Copyright ? DeNA Co.,Ltd. All Rights Reserved. 自動テストの実行環境 ? 自動テストを動かす環境どうしてますか? ? 手元で動かしていますか? ? Jenkinsで動かしていても制約がありませんか? ? 端末が全てJenkinsに接続されている。 ? 自動テストを実行する端末を固定化している。
  • 11. Copyright ? DeNA Co.,Ltd. All Rights Reserved. STF(Smartphone Test Farm) / Device Farm ? ブラウザから端末を操作することができる ? リモートデバッグができる etc etc
  • 12. Copyright ? DeNA Co.,Ltd. All Rights Reserved. STF / デモ デモ動画
  • 13. Copyright ? DeNA Co.,Ltd. All Rights Reserved. STFの新機能@2.0.0 ? 自動テストでの利用も考え、APIを追加。 ? 端末のstatus(利用中 / オンライン etc)が取得/変更可能 ? 端末の情報(OS / Model etc)が取得可能
  • 14. Copyright ? DeNA Co.,Ltd. All Rights Reserved. STF / APIサンプル ? GET /api/v1/devices (端末一覧) Curl Sample curl -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":"C hrome","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.97124767 3034668,"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":n ull,"phone":{"iccid":null,"imei":"359250051959219","network":"UNKNOWN","phoneNumber":null},"platform":"Androi d","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,"sta tusChangedAt":"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
  • 15. Copyright ? DeNA Co.,Ltd. All Rights Reserved. デモ / STF + Jenkins + Appium + Docker デモ動画
  • 16. Copyright ? DeNA Co.,Ltd. All Rights Reserved. まとめ ? Androidアプリの自動テストは ? STF + Jenkins + Appium + Docker ? 是非、STF@2.0.0のAPIをご利用ください! ? STF用のJenkins pluginを現在開発中です。 ? 公開をお待ち下さい!! 開発中
  • 17. Copyright ? DeNA Co.,Ltd. All Rights Reserved. 最後に さらに先に進むために ? SWET Gは人材を募集しております!! ? (特に)クライアント周りをがっつりやりたい人 は是非!

Editor's Notes

  1. 第3回 日本Seleniumユーザーコミュニティ勉強会 (注意)デモ動画は全て画像のみとなっております。
  2. 全てに颈诲がふられているので、简単に操作をすることができます。
  3. 実机とブラウザから操作したときの诲别濒补测をデモ动画で确认。
  4. 「STF + Jenkins + Appium + Docker」により「デバイス全て」「特定デバイスのみ」に自動テストをはしらせるということが可能になった。