More Related Content
Similar to Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Similar to Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会 (20)
More from Koji Hasegawa (12)
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
- 2. 自己紹介
• id: @nowsprinting
• フリーランス
(iOS/Androidアプリ受託開発)
• アプリ『山吹色の茸疾走』『フットサル ルールと雑学』
『電エースQuiz - 河崎実監督と特撮映画の世界』
• コミュニティ:
テスト自動化研究会、Androidテスト部、VR部
• エバンジェリスト
- 12. システムテスト(2/2)
• 自動化ツール:
UI Automation, MonkeyTalk, Calabash, Appium
• E2Eなので、日時、天気、株価、為替、乱数など、
自動テストで成否判定が困難となる要因が多い
• バックエンドが のようなMBaaS
の場合、自動テスト専用のサーバインスタンスを準備
して実現できることも(ncmbでは追加費用なし)
- 18. 参考: Hermetic Servers
• End to Endでなく、ユニットテストのようにDIや
Mock/Stubを使うでもなく、Hermetic Serverと呼
ぶモックサーバを使用してテストを自動化する。
Hermetic==気密
• 統合テストレベルの機能テスト自動化と相性が良い
• 出典はGoogle testing blog
http://googletesting.blogspot.jp/2012/10/
hermetic-servers.html
- 22. UI Testing API
• XCTestに追加された、UI操作を行なうクラス
• XCUIApplication
• XCUIElement
• XCUIElementQuery
• Editor -> Add Target -> iOS UI Testing Bundle
でテストターゲットを追加
- 24. XCUIElement
• let addButton = app.buttons[ Add ]
//ヒエラルキからAddボタンを探して取得
//指定はAccessibility identifier, label, title, etc..
• addButton.tap()
//Addボタンをタップ
• XCAssertEqual(app.tables.cells.count, 1)
//UITableCellの数を取得、1個であればok
- 25. XCUIElementQuery(1/2)
• let allButtons =
app.descendantsMatchingType(.Button)
//すべてのButtonのサブクラス
• let tomCells = app.cells.containingType(
.StaticText, identifier: Tom )
//ラベル Tom を持つすべてのUITableViewCell
• XCAssertEqual(tomCells.count, 2)
//Cellの数が2であればok
- 31. Code coverage
New Features in Xcode 7 より
• スキーム設定でチェックをonにするだけで、以降のテスト実行で
コードカバレジが採取できる
• 結果はReport Navigatorで確認できる。ファイル出力について
は未調査
- 37. まとめ
• UI Testing APIは、統合レベルのUIテスト自動化フ
レームワークとして、KIFの代わりになりうる
• UI Testing APIとUI recordingにより、統合テスト
レベルのUIテスト自動化コストが低減されそう
• ただし、UIテストの自動化は、実行時間がかかる、
メンテコストもかかる点を忘れない。
iOS 8.x以下での回帰テストをどうするかも考慮。
- 38. 参考
• UI Testing in Xcode (WWDC 2015 Video)
• Testing with Xcode
• New Features in Xcode 7