Submit Search
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
18 likes
9,048 views
Koji Hasegawa
1 of 38
Download now
Downloaded 15 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
More Related Content
PPTX
JaSST'16 Tokyo モバイルセッション
mirer
PDF
VRの入力デバイス #JAGVR
Koji Hasegawa
PDF
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
Koji Hasegawa
PPTX
Sansan における Android アプリ自動テスト導入事例
Kenichi Tatsuhama
PDF
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
Koji Hasegawa
PDF
iOSアプリ UIテスト自動化入門
Shingo Tamaki
PDF
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Yahoo!デベロッパーネットワーク
PDF
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
JaSST'16 Tokyo モバイルセッション
mirer
VRの入力デバイス #JAGVR
Koji Hasegawa
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
Koji Hasegawa
Sansan における Android アプリ自動テスト導入事例
Kenichi Tatsuhama
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
Koji Hasegawa
iOSアプリ UIテスト自動化入門
Shingo Tamaki
事例 アジャイルと自動化 後半(ヤフオク!アプリでの自動テストの事例紹介) at Ques vol.7( #ques7 ) 11/20/2015
Yahoo!デベロッパーネットワーク
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
What's hot
(20)
PPTX
Androidアプリ開発のテスト環境
Toshiyuki Hirata
PPTX
Appiumを用いたwebブラウザ自動テスト
yumi_chappy
PPTX
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
yuichi_kuwahara
PPTX
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
PPTX
Appium を使って iOS / Android の UI テストを共通化
Kenichi Tatsuhama
PDF
iOSアプリ開発でもTravis CI #eytokyo
Koji Hasegawa
PPTX
STFとAppiumをもちいたAndroidアプリの自動テスト
Toshiyuki Hirata
PPTX
iOSにおけるUIテスト@potetotips
Yusuke Kita
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
PPTX
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
PPTX
Robotium を使った UI テストとレイアウト確認の効率化
Kenichi Tatsuhama
PDF
ビルドプロセスとCI #STAC2014
Koji Hasegawa
PPTX
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
PDF
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
PDF
テストの自動化を考える前に
bleis tift
PDF
第3回Ques ここからはじめる!Androidアプリのテスト自動化
Koji Hasegawa
PDF
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
PPTX
Stack2017 自動化困難な状況での活動方法
Tatsuya Ishikawa
PDF
詳解!自動結合テスト #jasst
kyon mm
PPTX
テスト自動化の現場で困ること SI-Toolkitが解決すること
yuichi_kuwahara
Androidアプリ開発のテスト環境
Toshiyuki Hirata
Appiumを用いたwebブラウザ自動テスト
yumi_chappy
SI-Toolkitでテスト自動化を実現する現場で遭遇したこと
yuichi_kuwahara
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
Appium を使って iOS / Android の UI テストを共通化
Kenichi Tatsuhama
iOSアプリ開発でもTravis CI #eytokyo
Koji Hasegawa
STFとAppiumをもちいたAndroidアプリの自動テスト
Toshiyuki Hirata
iOSにおけるUIテスト@potetotips
Yusuke Kita
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
Robotium を使った UI テストとレイアウト確認の効率化
Kenichi Tatsuhama
ビルドプロセスとCI #STAC2014
Koji Hasegawa
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
テストの自動化を考える前に
bleis tift
第3回Ques ここからはじめる!Androidアプリのテスト自動化
Koji Hasegawa
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
Stack2017 自動化困難な状況での活動方法
Tatsuya Ishikawa
詳解!自動結合テスト #jasst
kyon mm
テスト自動化の現場で困ること SI-Toolkitが解決すること
yuichi_kuwahara
Ad
Similar to Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
(20)
PDF
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
PDF
AppCodeNight testcode
Akira SUGIMOTO
PDF
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
PDF
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Akira Inoue
PDF
Sharoid Service Menu
sharoid
PDF
iOSアプリケーションの Unit Test
Katsumi Kishikawa
PDF
Xcode7時代のアプリ配布
toyship
PPTX
Visual Studio Code 拡張の勘所
Masaki Takeda
PDF
はてなにおける Android アプリのソフトウェアテスト
Yu Nobuoka
PDF
Xcode 6の新機能
Shingo Sato
PPTX
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
PPTX
How to implement CI with OutSystems using Jenkins and BDD Framework
YutoMiyazaki
PDF
もう怖くないモバイルアプリ開発!
Toshiki Iga
PPTX
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
PPTX
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
PPTX
静的解析ツール Klocworkによる 機能安全規格への対応
Masaru Horioka
PDF
XcodeのTargetについてのTIPS
Yoichiro Sakurai
PDF
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
Satoru Yamaguchi
PDF
20150421 Geeks Night @ Money Foward
Naoki Shimizu
PPTX
Device Farm を使ったスマホアプリの自動テスト
Kenichi Tatsuhama
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
AppCodeNight testcode
Akira SUGIMOTO
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Akira Inoue
Sharoid Service Menu
sharoid
iOSアプリケーションの Unit Test
Katsumi Kishikawa
Xcode7時代のアプリ配布
toyship
Visual Studio Code 拡張の勘所
Masaki Takeda
はてなにおける Android アプリのソフトウェアテスト
Yu Nobuoka
Xcode 6の新機能
Shingo Sato
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
How to implement CI with OutSystems using Jenkins and BDD Framework
YutoMiyazaki
もう怖くないモバイルアプリ開発!
Toshiki Iga
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
静的解析ツール Klocworkによる 機能安全規格への対応
Masaru Horioka
XcodeのTargetについてのTIPS
Yoichiro Sakurai
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
Satoru Yamaguchi
20150421 Geeks Night @ Money Foward
Naoki Shimizu
Device Farm を使ったスマホアプリの自動テスト
Kenichi Tatsuhama
Ad
More from Koji Hasegawa
(12)
PDF
Blender-like SceneView Hotkeys Unity extensions
Koji Hasegawa
PDF
IntelliJ plugin の作りかた
Koji Hasegawa
PDF
AltUnityTesterを試してみた #gotandaunity
Koji Hasegawa
PDF
テストの種類とBDD #33testing
Koji Hasegawa
PDF
テストフィクスチャTips(主にCoreData) #potatotips
Koji Hasegawa
PDF
Androidで使えるモックフレームワーク
Koji Hasegawa
PDF
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Koji Hasegawa
KEY
Testterチーム2011年まとめ
Koji Hasegawa
KEY
Testter単体テストのビアレビュー報告
Koji Hasegawa
KEY
山吹色の茸疾走におけるテストの実例
Koji Hasegawa
PDF
Testterを叩け!
Koji Hasegawa
PDF
Atec mtg7 unittest
Koji Hasegawa
Blender-like SceneView Hotkeys Unity extensions
Koji Hasegawa
IntelliJ plugin の作りかた
Koji Hasegawa
AltUnityTesterを試してみた #gotandaunity
Koji Hasegawa
テストの種類とBDD #33testing
Koji Hasegawa
テストフィクスチャTips(主にCoreData) #potatotips
Koji Hasegawa
Androidで使えるモックフレームワーク
Koji Hasegawa
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Koji Hasegawa
Testterチーム2011年まとめ
Koji Hasegawa
Testter単体テストのビアレビュー報告
Koji Hasegawa
山吹色の茸疾走におけるテストの実例
Koji Hasegawa
Testterを叩け!
Koji Hasegawa
Atec mtg7 unittest
Koji Hasegawa
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
1.
Xcode 7における UIテストとカバレジ計測 2015.07.11 #yidev
第20回勉強会 @nowsprinting / Koji Hasegawa
2.
自己紹介 • id: @nowsprinting •
フリーランス (iOS/Androidアプリ受託開発) • アプリ『山吹色の茸疾走』『フットサル ルールと雑学』 『電エースQuiz - 河崎実監督と特撮映画の世界』 • コミュニティ: テスト自動化研究会、Androidテスト部、VR部 • エバンジェリスト
3.
著書
4.
アジェンダ • UIテストの位置づけ • UI
Testing API • UI recording • Code coverage • Test Reports
5.
UIテストの位置づけ
6.
テストレベル
7.
テストレベル テスト工程
8.
テストレベル テスト工程 結合度
9.
テストレベル 開発者 QA 顧客 誰が実施するか、という区切り方
10.
テストレベル
11.
システムテスト(1/2) • アプリ(.ipa)を端末にインストールし、UIを操作す る(リリースビルド、proguard) • サーバと通信する場合、ステージングもしくはプロ ダクション環境を使用する(End
to End) • 一般に、独立したテストチーム(QA)が行なう (ISTQBにおける定義)
12.
システムテスト(2/2) • 自動化ツール: UI Automation,
MonkeyTalk, Calabash, Appium • E2Eなので、日時、天気、株価、為替、乱数など、 自動テストで成否判定が困難となる要因が多い • バックエンドが のようなMBaaS の場合、自動テスト専用のサーバインスタンスを準備 して実現できることも(ncmbでは追加費用なし)
13.
テストレベル
14.
ユニットテスト(1/2) • XCTestを使用する(Xcode 5より導入) Edit
-> Add Target -> iOS Unit Testing Bundle を選択してテストターゲットを追加する • MVCのM(Model)を中心に、原則自動化すべき。 ただし無理にカバレッジを追わない。 ViewControllerやAppDelegateのテストは困難。
15.
ユニットテスト(2/2) • OCMock, OCHamcrest,
Kiwiなどの補助ツール • バックエンドが のような MBaaSの場合、SDKをMock化してテスト • バックエンドのAPIを直接呼び出す場合は、スタブ サーバを利用する NLTHTTPStubServer, OHHTTPStubs, Nocilla
16.
テストレベル
17.
統合テスト • iOSアプリ開発ではユニットテストとの明確な境目 はないが、『UIを操作すること』を境界と仮定。 • XCTestを使用することで、カバレジ計測、CIまで、 まとめて実行できる •
自動化ツール: - これまでは、KIF(Keep It Functional) - Xcode 7からは、iOS UI Testing Bundle
18.
参考: Hermetic Servers •
End to Endでなく、ユニットテストのようにDIや Mock/Stubを使うでもなく、Hermetic Serverと呼 ぶモックサーバを使用してテストを自動化する。 Hermetic==気密 • 統合テストレベルの機能テスト自動化と相性が良い • 出典はGoogle testing blog http://googletesting.blogspot.jp/2012/10/ hermetic-servers.html
19.
参考: テストタイプ • テスト活動をまとめたもの •
たとえば、機能テスト、使用性テスト、回帰テスト など、特定のテスト目的に焦点を当てたもの • 一つ又は複数のテストレベルで行なわれる 『ISTQB ソフトウェアテスト標準用語集 日本語版』より引用
20.
結局、UIテストはどこで? • システムテストレベルでの自動化はスモークテスト にとどめる。もしくはBDD。 • UI操作を伴なう機能テストは統合テストレベル中心 に行なうのがよさそう (iOS
UI Testing Bundle + Hermetic Servers) • それでも限界はある。あきらめ、割り切りは必要。
21.
UI Testing API
22.
UI Testing API •
XCTestに追加された、UI操作を行なうクラス • XCUIApplication • XCUIElement • XCUIElementQuery • Editor -> Add Target -> iOS UI Testing Bundle でテストターゲットを追加
23.
XCUIApplication • XCUIElementのサブクラス • let
app = XCUIApplication() app.launch() で、テスト対象アプリを起動 • app.terminate() で停止 • launchArguments, launchEnvironmentを設定で きる(未確認)
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
26.
XCUIElementQuery(2/2) • XCUIElementを取り出すには、例えば、 tomCells.elementAtIndex(0) • ヒエラルキのパスを正しく指定する必要はない(チェ インを
って検索してくれる) • wait/sleepを考慮する必要がない。適宜waitしてUI エレメントを探してくれる
27.
UI recording
28.
UI recording(1/2) • テストメソッドにカーソルが置かれた状態で、エディ タ下の赤丸(Record
UI Test)をクリック • iOSシミュレータでアプリが起動し、アプリに対す る操作がテストコードに反映される
29.
UI recording(2/2) Record UI
Test UI Testing in Xcode (WWDC 2015 Video) より
30.
Code coverage
31.
Code coverage New Features
in Xcode 7 より • スキーム設定でチェックをonにするだけで、以降のテスト実行で コードカバレジが採取できる • 結果はReport Navigatorで確認できる。ファイル出力について は未調査
32.
Test Reports
33.
Test Reports(1/3) • Report
Navigatorを選択すると、テストの結果、 カバレジ、ログが参照できる UI Testing in Xcode (WWDC 2015 Video) より Report Navigator
34.
Test Reports(2/3) • UI
Testの場合、操作ステップごとの詳細まで確認できる UI Testing in Xcode (WWDC 2015 Video) より
35.
Test Reports(3/3) • ステップごとにスクリーンショットが撮影・保管さ れており、目のマークをクリックすると表示される UI
Testing in Xcode (WWDC 2015 Video) より
36.
まとめ
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
Download