2017/01/19iOS Test Night #2 Tadashi Nemotoappium-xcuitest-driverとCI環境
View Slide
自己紹介• 根本 征 (github/tadashi0713)• 2016年4月に新卒でメルカリに入社• 2016年10月に作られたSETチームに所属• 現在はクライアント(iOS・Android)のE2Eテストを実装
クライアントアプリのE2Eテスト• クライアントリリース前にQAが手動で行っていた回帰試験• Regionが増えていくと工数が多くなる & 繰り返しの作業が多い• 自動化できる部分はAppiumを使ってテストできるように
CI環境を早めに用意しておこう• 自分の環境でしか動かないテストにはしたくない• 後々放置状態になっていくのを避けたい• テスト結果が開発者・QAにも見える状況が望ましい• 実行しているところを確認したい(スクリーンショット・動画)• クラウドサービスを使うのが妥当と考えた
2つのクラウドサービスを検討• Sauce Labs• AWS Device Farm
Sauce Labs• ブラウザテスト、モバイルテストの実行環境を提供しているサービス• シミュレーターを起動して動作させる• .appファイル・.apkファイルをアップロードして実行• desiredCapabilitiesを変更して実行させる• Appiumのバージョンも選択可能• 以前はAppiumの開発元でもあった
AWS Device Farm• 実機端末を使ったテスト実行環境を提供しているサービス• .ipaファイル・.apkファイルをアップロードして実行• Appiumは現在Python・Javaのみ対応• 該当テストファイルをzip化・アップロードさせて実行させる• Appiumのバージョンは選択できず、現在1.4固定
AWS Device Farmを選択• SauceLabsのAndroidエミュレーターでテストを実行するのに制約が多かった• Google Play Serviceのバージョンなど• AWS Device Farmは両OS(iOS9)正しく動作したため選択• Jenkins プラグインを利用して定期実行できる環境を構築
appium-xcuitest-driverの登場• iOS10からUIAutomation廃止• 今までのUIAutomationを使っていたAppiumは使えないことに• Appium1.6からXCUITestをベースにしたwebdriverを提供• appium-xcuitest-driver• https://github.com/appium/appium-xcuitest-driver
AWS Device Farmの対応状況• Appiumのバージョンは固定されており、現在は1.4• 現状はappium-xcuitest-driverは動かせない• もうじき1.6.3にアップデートされるらしい• https://forums.aws.amazon.com/ann.jspa?annID=4341
Sauce Labsは対応済https://saucelabs.com/blog/new-support-for-ios-10-simulator-testing-and-more-real-devices-
学んだこと• クラウドの制約はテストを実行できる・できないに関わるのでよく調べて理解することが重要だと感じた• 特にAppium・クライアントOSのバージョン• 対応の早さも今後見ていきたい• 制約を把握した上でツール選択することも大事だと感じた• 今回だとAWS Device Farmで実行させられるために、言語はPythonにした