iOSアプリ UIテスト自動化入門
-
Upload
shingo-tamaki -
Category
Technology
-
view
730 -
download
4
Transcript of iOSアプリ UIテスト自動化入門
![Page 1: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/1.jpg)
iOSアプリ
UIテスト自動化入門~AppiumによるE2Eテスト~
![Page 2: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/2.jpg)
agenda• 前提知識
• OS標準のUIテストツール
• Appiumとは
• 今後の展開
![Page 3: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/3.jpg)
前提知識
Ruby Bundler Gem RSpec Cucumber Turnip Gherkin BDD
UIAutomation Tuneup.js uiautomator Javascript Node.js npm Selenium
![Page 4: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/4.jpg)
![Page 5: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/5.jpg)
UIテストどうしてます?
![Page 6: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/6.jpg)
目視
![Page 7: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/7.jpg)
スクリーンショット (手動)をExcelに
![Page 8: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/8.jpg)
ある人は言いました
![Page 9: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/9.jpg)
これはもう人類のやる作業じゃないよね
![Page 10: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/10.jpg)
自動化しましょう
![Page 11: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/11.jpg)
UIAutomation
iOSアプリ開発の標準ツールInstrumentsのテンプレートの一つ、UIの操作をjavascriptでレコードし、iPhoneSimulator及びiPhone実機で操作を追実行出来る。スクリーンショットなども取れる。https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/
UsingtheAutomationInstrument/UsingtheAutomationInstrument.html#//apple_ref/doc/uid/TP40004652-CH20
https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/_index.html#//apple_ref/doc/uid/TP40009771
![Page 12: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/12.jpg)
使い勝手を良くする為の フレームワークもあります。
![Page 13: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/13.jpg)
Turneup JS
![Page 14: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/14.jpg)
Turneup JS
UIAutomationのコードを素のまま書くとちょっと冗長になので、その点を補完されている。jsライブラリ
http://www.tuneupjs.org
![Page 15: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/15.jpg)
iOSだけ?
![Page 16: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/16.jpg)
UIテスト自動化ツールはAndroid標準もあります。
![Page 17: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/17.jpg)
uiautomator
![Page 18: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/18.jpg)
また新しいツール使い方覚えなきゃいけないの?
![Page 19: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/19.jpg)
ある程度は仕方ない
![Page 20: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/20.jpg)
既存のテスティングフレームワークを使えないの?
![Page 21: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/21.jpg)
既存のテスティングフレームワークって?
![Page 22: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/22.jpg)
xUnit系(JUnit、OCUnit、NUnit)、BDD系(RSpec,Cucumebr)
![Page 23: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/23.jpg)
慣れたツール・言語でやれるに越したことはないよね?
![Page 24: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/24.jpg)
こっから今日の本題
![Page 25: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/25.jpg)
Appium
![Page 26: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/26.jpg)
Appium
iOS/AndroidのUIテスト自動化ツール、Selenium WebDriverを使用している為、
Web系の開発でSeleniumを使ってた人は 比較的導入が楽。
![Page 27: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/27.jpg)
Appiumの構成
![Page 28: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/28.jpg)
Appiumのイイトコ
・リリースビルドのバイナリを使える。 アプリにSDKの埋め込みをする必要がありません。
・言語・テスティングフレームワークが自由
![Page 29: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/29.jpg)
Appiumのビミョーなトコ
・ちょっと遅い ・Selenium WebDriverの知識必須
![Page 30: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/30.jpg)
Turnip
Turnip は、受け入れテストのフレームワークである Cucumber によって整備されてきた feature ファイルと step_definitions ファイルの構成 (Gherkin 書式) を RSpec 内でテスト実行することができる新鋭のライブラリで、Cucumber の改善案として提案されました。Cucumberの後継としてWeb システムでのエンドツーエンドのテストを自動化する際に利用できます。 Cucumber の問題点を改善して実装されている筋の良さで、今後の普及が期待されています。(下記リンクから抜粋)
http://magazine.rubyist.net/?0042-FromCucumberToTurnip
![Page 31: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/31.jpg)
http://www.slideshare.net/KazuMatsu/20141018-selenium-appiumcookpad
![Page 32: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/32.jpg)
Scenario機能: UI操作テスト Appiumの操作を理解する為にアプリでよくある操作を行ってみます。
シナリオ: スイッチを操作する * "Switches" をタップ * 1 番目のスイッチをON * 2 番目のスイッチをOFF * 戻る
シナリオ: スライダーを操作する * "Sliders" をタップ * 1 番目のスライダーに 80 %を指定 * 戻る
シナリオ: 日付ピッカーを操作する * "Date Picker" をタップ * 日付ピッカーに "2014/11/25 12:23:55" を指定 * 戻る
![Page 33: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/33.jpg)
Step#タップ step ":name をタップ" do |name| find(name).click end
#スイッチ step ":index 番目のスイッチをON" do |index| sleep 0.5 ele_index('UIASwitch',index.to_i).send_keys("1") end
#DatePicker操作 step "日付ピッカーに :dateTime を指定" do |dateTime| sleep 0.5 pickerDate = tags("UIAPickerWheel")[0] pickerHour = tags("UIAPickerWheel")[1] pickerMinute = tags("UIAPickerWheel")[2] pickerAmPm = tags("UIAPickerWheel")[3]
date = DateTime.strptime(dateTime,"%Y/%m/%d %H:%M:%S") pickerDate.send_keys(date.strftime("%Y/%m/%d %H:%M:%S")) pickerHour.send_keys(date.hour.to_s) pickerMinute.send_keys(date.minute.to_s) pickerAmPm.send_keys(date.strftime("%p")) end
![Page 34: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/34.jpg)
demo
![Page 35: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/35.jpg)
学習コスト
![Page 36: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/36.jpg)
Stepの作成する場合は結構手間
![Page 37: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/37.jpg)
Scenarioが書ければいい
![Page 38: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/38.jpg)
今後の予定
・ImageMagickでスクリーンショットの差分画像作成の自動化 ・Jenkins、Grunt、gulpと組み合わせる
・hubot等のChatOpsからの実行
・Androidで同じシナリオを実行する
![Page 39: iOSアプリ UIテスト自動化入門](https://reader036.fdocuments.net/reader036/viewer/2022082213/55a9310f1a28ab8d2a8b4607/html5/thumbnails/39.jpg)
以上ご静聴ありがとうございました。