Naoto KISHINO
NEXT Co.,Ltd.
Quality Assurance Group
Windows × appium で
android実機自動テストやってみた
Outline
1. 目的
2. やったこと
3. 今後
What for ?
目的
What for?
自動テストの網羅率向上
スマデバの普及拡大に対応
“実機” で自動テスト
What for?
なぜ実機テストなのか?
正常動作の担保
エミュレータは重い
機種・OS依存バグの発見
やっぱり面白そう!!
Try
やってみた
Tryの前に
QAで使っている回帰テスト環境
Execution Server
Selenium Server Standalone
Order Server
Tryの前に
Seleniumとは
“Webブラウザーを使ったテストの自動化を実現す
るテストフレームワークです。
・Webブラウザーの操作を自動化
・Web画面の要素の値を検証
・Web画面のスクリーンショットを取得“
(引用 http://www.selenium.jp/selenium-and-appium)
Tryの前に
今回はスマートデバイス実機テスト自動化の
第一歩として、各端末標準のブラウザでの
テスト実行環境を構築します。
また、使用可能なテスト実行環境機はWindows7な
ので、Androidのみ構築可能です。
Windows7 * Android実機 * 標準ブラウザ
あらためて
Try
やってみた
Try
1. Seleniumだけでやってみた
2. appiumつかってやってみた
Try 1. Selenium のみ
なぜSeleniumだけなのか
ソフトウェアのバージョン管理
Selenium3
http://seleniumhq.wordpress.com/2013/08/28/the-road-to-selenium-3/
Try 1. Selenium 単体
なぜSeleniumだけなのか
ソフトウェアのバージョン管理
Selenium3
http://seleniumhq.wordpress.com/2013/08/28/the-road-to-selenium-3/
Try 1. Selenium のみ
構成
Windows7
Selenium Android Webdriver
https://code.google.com/p/selenium/wiki/AndroidDriver
Android SDK
Try 1. Selenium のみ
android-server.apk
(Android WebDriver)
Android
SDK
Win7
> driver = webdriver.Remote(
command_executor='http://localhost:8080/wd/hub',
desired_capabilities=webdriver.DesiredCapabilities.ANDROID)
> driver.get(“http://google.com/”)
Try 1. Selenium のみ
android-server.apk
(Android WebDriver)
Android
SDK
Win7
> driver = webdriver.Remote(
command_executor='http://localhost:8080/wd/hub',
desired_capabilities=webdriver.DesiredCapabilities.ANDROID)
> driver.get(“http://google.com/”)
Try 1. Selenium のみ
android-server.apk
(Android WebDriver)
Android
SDK
Win7
> driver = webdriver.Remote(
command_executor='http://localhost:8080/wd/hub',
desired_capabilities=webdriver.DesiredCapabilities.ANDROID)
> driver.get(“http://google.com/”)
Order Server
Try 1. Selenium のみ
使えなかった理由
Timeout
Socat
Selenium Grid
Selenium3でのモバイル対応
http://seleniumhq.wordpress.com/2013/12/24/android-and-ios-support/
Try 1. Selenium のみ
使えなかった理由
Timeout
Socat
Selenium Grid
Selenium3でのモバイル対応
http://seleniumhq.wordpress.com/2013/12/24/android-and-ios-support/
orz
Try 1. Selenium のみ
使えなかった理由
Timeout解消できず
Socat導入が困難
Selenium Grid 使えず
Selenium3でのモバイル対応されず
http://seleniumhq.wordpress.com/2013/12/24/android-and-ios-support/
Try
1. Seleniumだけでやってみた
2. appiumつかってやってみた
Try 2. appium
選定理由
公式(っぽい)サードパーティモジュール
ios, android対応
selendroid -> androidのみ
ios driver -> iosのみ
全部のアプリ種別に対応(しているみた
い)
Try 2. appium
TODO
実行環境構築
appium動作確認・調査
(os別, version別、アプリ別)
テストシナリオ作成
実運用
Try 2. appium
環境構築
Node.js
Android SDK
Java JDK
Apach Ant
Apach maven
Git
各種環境変数の設定
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別
Android 全Ver. ネイティブ/ハイブリッド/ブラウザ
iOS 全Ver. ネイティブ/ハイブリッド/ブラウザ
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別
Android 全Ver. ネイティブ/ハイブリッド/ブラウザ
iOS 全Ver. ネイティブ/ハイブリッド/ブラウザ
行けるはずでし
た・・・・・。
orz
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別 テスト実行機OS
Android 全Ver. ネイティブ/ハイブ
リッド/ブラウザ
\(^o^)/\(^o^)/
Windows7
\(^o^)/\(^o^)/
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別 テスト実行機OS
Android 4.2以降 ネイティブ / ブラウザ Windows7
Android 4.1以前 ネイティブ Windows7
Android 全Ver. ハイブリッド Windows7
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別 テスト実行機OS
Android 4.2以降 ネイティブ / ブラウザ Windows7
Android 4.1以前 ネイティブ Windows7
Android 全Ver. ハイブリッド Windows7
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別 テスト実行機OS
※Appium純正のUI操作モジュール
Android 4.2以降 ネイティブ / ブラウザ Windows7
※Appiumのインターフェースだが
内部的にSelendroidという別のUI操作モジュール
Android 4.1以前 ネイティブ Windows7
Android 全Ver. ハイブリッド Windows7
Try 2. appium
appium動作確認・調査
OS種別 Version アプリ種別 テスト実行機
Android 全Ver. ネイティブ/ハイブリッド/ブ
ラウザ mac os
iOS 全Ver. ネイティブ/ハイブリッド/ブ
ラウザ mac os
Try 2. appium
appium動作確認・調査
今回は下記の設定のみ実装しました。
OS種別 Version アプリ種別 テスト実行機OS
※Appium純正のUI操作モジュール
Android 4.2以降 ネイティブ / ブラウザ Windows7
Try 2. appium
real
device(USB)
Execution
Server
Android SDK
adb
port: 5037
appium
port: 4723
Try 2. appium
real
device(USB)
Execution
Server
Android SDK
adb
port: 5037
appium
port: 4723
Order
Server
Try 2. appium
real
device(USB)Execution
Server
terminal
ware
Android SDK
adb
port: 5037
appium
port: 4723
>>> desired_caps = {desired_caps = {
'device':'Android',
'browserName': '',
'version': '4.2',
'app': r'D:workspaceeclipsesample_appbinsample_app.apk',
'app-package': 'com.example.sample_app',
'app-activity': 'MainActivity'
}
>>> driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
Next!
今後
Next!
mac os x以下に再構築
iOS対応
ネイティブ対応
シナリオ設計・追加
スクリーンショット
画像差分テストにつかえるかも
Next!
開発者が開発しやすい環境に
スピード + 品質
より面白い技術を組み込みたい
テスト自動再実行化
分散実行で高速化
運用の最適化(ステージアップ時に自動実行)
プッシュ通知など実機独自の機能検証
ご清聴ありがとうございました。

Win7 * appium * androidで実機自動テストやってみた。