Upload
Download free for 30 days
Login
Submit search
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
18 likes
9,049 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回勉強会
(18)
PPTX
Uiテスト@yidev
Yusuke Kita
PPTX
Swiftビギナーズ 2016/01/09
Yutaka Tajika
PPTX
Robotium を使った UI テスト
Kenichi Tatsuhama
PDF
iOSアプリケーションの Unit Test
Katsumi Kishikawa
KEY
Cocoa勉強会201203公開
Satoshi Oomori
PDF
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
Takeshi Fujimoto
PDF
2015 12 03_uiテストツールについて
Natsuki Yamanaka
KEY
初めての単体テスト
Basuke Suzuki
PDF
AppCodeNight testcode
Akira SUGIMOTO
PDF
Kifの紹介
Keita Otsuka
PDF
iOS Traning #0
yuichi takeda
PDF
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
PDF
Code Coverage for Xcode 5 & iOS 7
Yuta Tokoro
PDF
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
PDF
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
PDF
第4回勉強会 単体テストのすすめ
hakoika-itwg
PDF
nomad-cliの紹介
Kohki Miki
PDF
Little tips ios
akitsukada
Uiテスト@yidev
Yusuke Kita
Swiftビギナーズ 2016/01/09
Yutaka Tajika
Robotium を使った UI テスト
Kenichi Tatsuhama
iOSアプリケーションの Unit Test
Katsumi Kishikawa
Cocoa勉強会201203公開
Satoshi Oomori
20170625 JXUG Fukuoka 発表資料 : Unit / UI Testing - Xamarin
Takeshi Fujimoto
2015 12 03_uiテストツールについて
Natsuki Yamanaka
初めての単体テスト
Basuke Suzuki
AppCodeNight testcode
Akira SUGIMOTO
Kifの紹介
Keita Otsuka
iOS Traning #0
yuichi takeda
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
Code Coverage for Xcode 5 & iOS 7
Yuta Tokoro
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
第4回勉強会 単体テストのすすめ
hakoika-itwg
nomad-cliの紹介
Kohki Miki
Little tips ios
akitsukada
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