##今回調査した自動化ツールまとめ
- XCUITest
- Earl Grey
- appium
- KIF
##XCUITest
Xcode7から利用できるようになったデフォルトツール
XCTestを拡張し、さらにはAccessibilityの機構を使うことができる
###メリット
アプリケーションと同じ言語で書かれている(swift)
テストステップ毎にスクリーンショットを自動で撮影してログに残してくれる
シミュレータを操作してテストコードを生成することもできる(UI Recoding)
sleep/waitの処理を書かなくてもある程度はやってくれる(3回tryしてくる)
Xcode内に統合されているため導入が簡単
シュミレーターでのUIテストは結構はやい
###デメリット
レコーディングで作成したコードだけでは完璧なUIテストはできない
XCUIElementTypeではないUIオブジェクトは扱えない
長い通信状態が発生する場合ではsleep/wait処理を書かなくてはいけない
任意のタイミングでスクリーンショットが取れない
任意のタイミングでスクリーンショットを撮りたいのであればfastlane/snapshotで補完する方がいい
fastlane/snapshotではスクリーンショットを一覧するためのHTMLファイルも作成してくれる
snapshot run
で実行が簡単である
##Earl Grey
Google製のiOS自動テストフレームワーク
https://github.com/google/EarlGrey
###メリット
Cocoapodによるインストールで使えるので導入が簡単
Xcode内に統合できる
UI automationを簡単に書けるようにしているのでAccessinility Identifierによる認識ができる
GithubでのEarlGreyのドキュメントが結構充実している
テストはUIと対話する前のアニメーションや、ネットワーク接続などのイベントを自動的に待機しする。
この際、特にスリープなどを書く必要がないため、テストコードはシンプルになる。
###デメリット
長い通信状態が発生する場合ではsleep/wait処理を書かなくてはいけない
任意のタイミングでスクリーンショットが取れない
accessibilityIDで要素を取得しているので内部コードを変更しなくてはいけない
Recording機能がないので最初から全て自分で書かなくてはならない
##Appium
オープンソースのテスト自動化フレームワーク
https://github.com/appium/appium
###メリット
お気に入りの言語(rubyやpythonなど)でテストがかける
iOSとAndroidでテストコードを共通化できる
シミュレータを操作してテストコードを生成するRecording機能が使える
Appium自体はHttpServerであり、iOSの場合はこのサーバーからInstrumentsを経由してクライアント(端末側)を操作しているので、テストするアプリに全く手を加えなくていい
###デメリット
appiumの導入は他のUIテストツールも多少時間がかかる
iOS開発言語であるswiftでテストコードが書けない
Recording機能でのテストコードの作成がかなり遅い
##KIF
Squareが開発しているiOSテスト自動化フレームワーク
###メリット
SwiftとObject-Cでテストコードが書ける
CocoaPodsによるインストールで使えるので導入が簡単である
開発者自身で操作の定義をすることもできる
###デメリット
accessibilityIDで要素を取得しているので内部コードを変更しなくてはいけない
Swiftでも書けるがSwiftの文献がかなり少ない
##参考文献
http://qiita.com/dreamagicjp/items/d48fc2be16b8e04937d4
http://qiita.com/IsaoTakahashi/items/f9c3ef367d7e0f60e2d6
http://www.slideshare.net/kenichitatsuhama/appium-ios-android-ui