Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Toshiyuki Hirata
PPTX, PDF
1,846 views
Xcode10での テスト周りの進化をふりかえる
HAKATA Test Night #1での登壇資料です。
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 32
2
/ 32
3
/ 32
4
/ 32
5
/ 32
6
/ 32
7
/ 32
8
/ 32
9
/ 32
10
/ 32
11
/ 32
12
/ 32
13
/ 32
14
/ 32
15
/ 32
16
/ 32
17
/ 32
18
/ 32
19
/ 32
20
/ 32
21
/ 32
22
/ 32
23
/ 32
24
/ 32
25
/ 32
26
/ 32
27
/ 32
28
/ 32
29
/ 32
30
/ 32
31
/ 32
32
/ 32
More Related Content
PPTX
Xcodeの管理を楽に - Jenkins編 -
by
Toshiyuki Hirata
PPTX
バージョンアップの対応を軽減するためのサービスの構築
by
Toshiyuki Hirata
PPTX
UIテストの実行時間の短縮の方法
by
Toshiyuki Hirata
PPTX
iOSアプリの自動テストをはじめよう
by
Toshiyuki Hirata
PPTX
fastlane x iOSアプリのCI
by
Toshiyuki Hirata
PPTX
iOSアプリ開発のCI環境 - Jenkins編 -
by
Toshiyuki Hirata
PPTX
iOSアプリにおけるリリースフローとCI環境
by
Toshiyuki Hirata
PPTX
バージョンアップ対応を軽減するサービス:マスティフ
by
Toshiyuki Hirata
Xcodeの管理を楽に - Jenkins編 -
by
Toshiyuki Hirata
バージョンアップの対応を軽減するためのサービスの構築
by
Toshiyuki Hirata
UIテストの実行時間の短縮の方法
by
Toshiyuki Hirata
iOSアプリの自動テストをはじめよう
by
Toshiyuki Hirata
fastlane x iOSアプリのCI
by
Toshiyuki Hirata
iOSアプリ開発のCI環境 - Jenkins編 -
by
Toshiyuki Hirata
iOSアプリにおけるリリースフローとCI環境
by
Toshiyuki Hirata
バージョンアップ対応を軽減するサービス:マスティフ
by
Toshiyuki Hirata
What's hot
PPTX
fastlane snapshotの並列実行についてまとめてみた
by
Toshiyuki Hirata
PPTX
2017年のiOSアプリ開発におけるCI事情
by
Toshiyuki Hirata
PPTX
Bluepillを使ったiOS自動テストの並列化
by
Toshiyuki Hirata
PPTX
DroidKaigi_devicefarm
by
Shunsuke Maeda
PPTX
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
by
Toshiyuki Hirata
PPTX
DeNAにおけるSWETの役割
by
Toshiyuki Hirata
PPTX
スマホアプリディレクターが考えていること
by
Kazuaki KURIU
PPTX
コードレビューをより良くする Danger x Android
by
Toshiyuki Hirata
PPTX
Pull request時の画面差分取得の自動化
by
Shunsuke Maeda
PPTX
Android e2e testing at mercari
by
Vishal Banthia
PPTX
Androidアプリ開発のテスト環境
by
Toshiyuki Hirata
PDF
iOSにおけるコードレビューを一歩先へ進める
by
Shunsuke Maeda
PPTX
Dangerでpull requestレビューの指摘事項を減らす
by
Shunsuke Maeda
PDF
iOSで利用できるデバイスファームのメリット・デメリットの紹介
by
Shunsuke Maeda
PPTX
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
by
Toshiyuki Hirata
PDF
20151021 cookpad talk_test_engineer
by
Kazuaki Matsuo
PPTX
5minQues - SWET近況報告
by
Masaki Nakagawa
PDF
Androidのテストを効率的にするために考えたこと
by
Ataru Osaka
PPTX
STFとAppiumをもちいたAndroidアプリの自動テスト
by
Toshiyuki Hirata
PDF
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
by
Kouhei Sutou
fastlane snapshotの並列実行についてまとめてみた
by
Toshiyuki Hirata
2017年のiOSアプリ開発におけるCI事情
by
Toshiyuki Hirata
Bluepillを使ったiOS自動テストの並列化
by
Toshiyuki Hirata
DroidKaigi_devicefarm
by
Shunsuke Maeda
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
by
Toshiyuki Hirata
DeNAにおけるSWETの役割
by
Toshiyuki Hirata
スマホアプリディレクターが考えていること
by
Kazuaki KURIU
コードレビューをより良くする Danger x Android
by
Toshiyuki Hirata
Pull request時の画面差分取得の自動化
by
Shunsuke Maeda
Android e2e testing at mercari
by
Vishal Banthia
Androidアプリ開発のテスト環境
by
Toshiyuki Hirata
iOSにおけるコードレビューを一歩先へ進める
by
Shunsuke Maeda
Dangerでpull requestレビューの指摘事項を減らす
by
Shunsuke Maeda
iOSで利用できるデバイスファームのメリット・デメリットの紹介
by
Shunsuke Maeda
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
by
Toshiyuki Hirata
20151021 cookpad talk_test_engineer
by
Kazuaki Matsuo
5minQues - SWET近況報告
by
Masaki Nakagawa
Androidのテストを効率的にするために考えたこと
by
Ataru Osaka
STFとAppiumをもちいたAndroidアプリの自動テスト
by
Toshiyuki Hirata
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
by
Kouhei Sutou
Similar to Xcode10での テスト周りの進化をふりかえる
PDF
はこだてIKA 第4回勉強会 単体テスト
by
Seiji KOMATSU
PDF
第4回勉強会 単体テストのすすめ
by
hakoika-itwg
PDF
xUnit Test Patterns - Chapter16
by
Takuto Wada
PDF
超簡単!!なTestLinkの使い方
by
Cake YOSHIDA
PPTX
60分でわかった気になるISO29119 #wacate
by
Kinji Akemine
PDF
ぼくのかんがえた iOSテスト戦略
by
Naoki Umehara
PPTX
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
by
慎一 古賀
PDF
テストツールで効率化 Internet Explorerバージョンアップに伴うWebコンテンツの移行作業
by
Osamu Monoe
PDF
xUTP Chapter19 (2). Testcase Class
by
Takuto Wada
PDF
テストファースト、自動テストを導入するという事について(@社内勉強会)
by
kyon mm
PDF
テスティングフレームワークに入門してみた - Swift編
by
Hisakuni Fujimoto
KEY
テスト初心者Androiderのためのソフトウェアテスト入門
by
Satoshi Watanabe
PDF
TDDを研ぎ究める
by
pocketberserker
PDF
Test remix 2016
by
Makoto Yonezawa
PDF
SGT2013 技術トークス「アジャイルテスティング」
by
yasuohosotani
PDF
【JaSST'11 Tokyo】 テスト イノベーション
by
智治 長沢
PDF
テストを分類してみよう!
by
Kenji Okumura
PDF
アジャイル×テスト開発を考える
by
yasuohosotani
PDF
xUnit Test Patterns - Chapter19
by
Takuto Wada
PPT
CruiseControl.NET設置
by
Kuniaki Igarashi
はこだてIKA 第4回勉強会 単体テスト
by
Seiji KOMATSU
第4回勉強会 単体テストのすすめ
by
hakoika-itwg
xUnit Test Patterns - Chapter16
by
Takuto Wada
超簡単!!なTestLinkの使い方
by
Cake YOSHIDA
60分でわかった気になるISO29119 #wacate
by
Kinji Akemine
ぼくのかんがえた iOSテスト戦略
by
Naoki Umehara
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
by
慎一 古賀
テストツールで効率化 Internet Explorerバージョンアップに伴うWebコンテンツの移行作業
by
Osamu Monoe
xUTP Chapter19 (2). Testcase Class
by
Takuto Wada
テストファースト、自動テストを導入するという事について(@社内勉強会)
by
kyon mm
テスティングフレームワークに入門してみた - Swift編
by
Hisakuni Fujimoto
テスト初心者Androiderのためのソフトウェアテスト入門
by
Satoshi Watanabe
TDDを研ぎ究める
by
pocketberserker
Test remix 2016
by
Makoto Yonezawa
SGT2013 技術トークス「アジャイルテスティング」
by
yasuohosotani
【JaSST'11 Tokyo】 テスト イノベーション
by
智治 長沢
テストを分類してみよう!
by
Kenji Okumura
アジャイル×テスト開発を考える
by
yasuohosotani
xUnit Test Patterns - Chapter19
by
Takuto Wada
CruiseControl.NET設置
by
Kuniaki Igarashi
More from Toshiyuki Hirata
PDF
iOSにおけるパフォーマンス計測
by
Toshiyuki Hirata
PDF
iOSにおけるパフォーマンス計測
by
Toshiyuki Hirata
PDF
iOSにおける自動テストの並列化
by
Toshiyuki Hirata
PDF
UIテスト(Espresso)の高速化をさらにすすめる
by
Toshiyuki Hirata
PDF
UIテストの実行時間を短縮させる方法
by
Toshiyuki Hirata
PDF
我が家のLINEを中心とした情報共有
by
Toshiyuki Hirata
PDF
レビューのコストを削減するための施策
by
Toshiyuki Hirata
iOSにおけるパフォーマンス計測
by
Toshiyuki Hirata
iOSにおけるパフォーマンス計測
by
Toshiyuki Hirata
iOSにおける自動テストの並列化
by
Toshiyuki Hirata
UIテスト(Espresso)の高速化をさらにすすめる
by
Toshiyuki Hirata
UIテストの実行時間を短縮させる方法
by
Toshiyuki Hirata
我が家のLINEを中心とした情報共有
by
Toshiyuki Hirata
レビューのコストを削減するための施策
by
Toshiyuki Hirata
Xcode10での テスト周りの進化をふりかえる
1.
Xcode10での テスト周りの進化をふりかえる 2018/12/14(Fri) @ HAKATA
Test Night #1 平田敏之(@tarappo)
2.
自己紹介 平田 敏之@DeNA /
SWET (Software Engineer in Test) ミッション • DeNAサービス全般の品質向上 • DeNAエンジニアの開発生産性向上 私の担当(の一部) • 自動テスト(iOS領域) • プロセス(CI/CD周り) • Test Night 主宰
3.
はじめに • 2018年が終わるいま「WWDC」を思い出してみましょう • 「What’s
New in Testing」を見ましたか? • Appleのプラットフォームを取り巻く「Testing周り」は進化 しています • Xcode10のテスト周りの進化をふりかえってみましょう Xcode 10から開発時におけるサポートが増えました 今なら日本語訳もあります
4.
本発表で話すこと (15分) • What’s New
in Testing 2018 • ❌ Code coverage • ⭕ Test selection and ordering • Automatically include new tests • Randomize execution order • ⭕ Parallel testing • Execute parallel on Simulator
5.
Xcode10からの新機能 Xcode9.4.1 Edit Scheme Xcode10.1 Edit Scheme
6.
Xcode10からの新機能 1. Automatically include
new tests 2. Randomize execution order 3. Execute parallel on Simulator
7.
Automatically include new
tests 新規に実装したテストコードを自動で含めるか否か • 「Automatically include new tests」が指定できるよ うになりました • デフォルトはオン
8.
Automatically include new
tests 新規に実装したテストコードを自動で含めるか否か • Xcode 9までの世界 • 新規テストコードはすべてEnabled • 実行対象外にしたい場合は手動でDisableにする 必要がある
9.
Automatically include new
tests 新規に実装したテストコードを自動で含めるか否か • Xcode 9までの世界 • SchemeのTestの箇所のチェックを外すと全て対 象外になるが… Enableを選択しても対象外のまま
10.
Automatically include new
tests 新規に実装したテストコードを自動で含めるか否か • Xcode10からの世界 • 「Automatically include new tests」のチェックを 外すと新規テストコードはDisableになる
11.
Automatically include new
tests 新規に実装したテストコードを自動で含めるか否か • Xcode10からの世界 • Schemeからの一括Enabledもちゃんと動きます
12.
Automatically include new
tests 新規に実装したテストコードを自動で含めるか否か • この機能はどんなときに利用するのか? • 例えば • 自動で追加しない:チェックをオフ • 対象:常に動かすテストコード • 安定してから実行対象にする • 自動で追加する:チェックをオン • 対象:Nightlyなどで動かすテストコード • 安定するかを確かめる
13.
Randomize execution order テストのランダム実行 •
「Randomize execution order」が指定できるよう になりました 🙌 • デフォルトはオフ
14.
Randomize execution order テストのランダム実行 •
テストの実行順序 • Xcode 9までの世界 • アルファベット順(Alphabetical) • 名前が変わらない限り常に一定 • Xcode 10からの世界 • (new) ランダム実行 • アルファベット順:デフォルト
15.
Randomize execution order テストのランダム実行 自動テストをランダム実行できると何が良いのか? •
自動テストはそれぞれのテストケースが独立しているのが良い • 他のテストケースに副作用を与えてはいけない • 副作用を与えているかどうかは分かりづらいこともある • テストの実行順が常に固定であれば問題が発見されづらい ランダム実行をするとそんな依存関係が見つかるかも
16.
Randomize execution order テストのランダム実行 自動テストはそれぞれのテストケースが独立しているのが良い ? •
テストケースが増えたときなどにテストが急に失敗することがある • 特定のテストケース「だけ」で実行したときに失敗することがある • 本来テストしたかったことをちゃんと考えられてない可能性がある 全てのテストを実行すると成功するけど、 一部を指定して実行するとテストが失敗する という世界もありえます
17.
Randomize execution order テストのランダム実行 •
Arrange-Act-Assert • http://wiki.c2.com/?ArrangeActAssert • Arrange • 前提条件 • Act • 操作 • Assert • 期待値の確認 別のテストケースの実行(Arrange-Act)が 他のテストケースのArrangeに なっていることがある
18.
Randomize execution order テストのランダム実行 ランダム実行にして実行すると良い! しかしまだ課題もあります
19.
Randomize execution order 現状の課題 •
ランダムで実行してテストが落ちた場合、再度そのランダム順で 実行する術がない • Rspecの場合 • ランダム実行時は、シードが生成されるので、そのシードを使 って再度同じ順番で実行することができる • Rspec2.8(2012/1)からの機能 • -order rand: xxxx https://openradar.appspot.com/radar?id=4953802914398208
20.
Execute parallel on
Simulator 並列実行 • Xcodeからの実行でもシミュレーターの並列実行を することができるようになりました 🎉 • コマンドラインからもできます • デフォルトはオフ
21.
Execute parallel on
Simulator 並列実行 • Xcode 9までの世界 • 複数のシミュレーターを起動可能になった 🎉 • fastlaneも対応 • 欠点 • xcodebuildからの実行のみ対応 • destinationsで指定 • Xcode 10からの世界 • Xcodeからの実行に対応 • destinations毎ではない実行
22.
Execute parallel on
Simulator 並列実行 • Xcodeからの実行方法 • チェック状態になっていれば自動で並列化 • テストを実行する「だけ」でOK • 並列の仕方 • クラス単位での並列化(テストメソッド単位ではない) • メインとなるシミュレーターの複数のクローンを作っての実行 • 数はコマンドラインからオーバーロードできる
23.
Execute parallel on
Simulator 並列実行 • コマンドラインからの実行時は次を指定して設定の 上書きが可能 • -parallel-testing-worker-count n • nの数はマシンのスペック次第 • -parallel-testing-enabled YES | NO • xcprettyは未対応(テストレポート出力はできない) • https://github.com/supermarin/xcpretty/issues/344
24.
Execute parallel on
Simulator 並列実行 • コマンドからの実行 • fastlaneの場合の例 • xcodebuildコマンド直接の場合の例 • xcodebuild -scheme testnight-testScheme -project ./testnight.xcodeproj -destination 'platform=iOS Simulator,name=iPhone X' -parallel-testing-enabled YES -parallel- testing-worker-count 4 test
25.
並列化により実行時間が短縮! 開発が捗る! しかし落とし穴もあります Execute parallel on
Simulator 並列実行
26.
1. テストの実行時間は各クラスの実行時間に依存する • 並列化はクラス単位おこなわれます •
Espresso(Android)のtest shardingはcase単位 • 1つでも実行時間が長いクラスがあると… 2. 並列実行を許容するテストコードでなければならない • 例えば、同じデータを並列して変更すると… • データの不整合の発生 Execute parallel on Simulator 現状の課題(の例)
27.
テストの実行時間 A B C D E 実行時間 Execute parallel on
Simulator 現状の課題の対策例
28.
テストの実行時間 A B C D E 実行時間 A’ A’ クラスを良い感じに 分割しましょう Execute parallel on
Simulator 現状の課題の対策例
29.
並列化におけるさらなる工 夫
30.
• テスト実行するクラスを絞ることができます • -only-testing:実行する対象を指定 •
複数指定ができる • -skip-testing:実行しない対象を指定 • 動かない..? Execute parallel on Simulator さらなる工夫 活用しましょう
31.
(今の)自動テストは毎回すべてを実行するというものでもない • 自動テストをあらかじめグルーピングしておく • test
sizeそれぞれでわけておき実行パターンを変える • 実行時間の履歴を用いてグルーピングする • 並列数に応じてどうグルーピングするかを決める Execute parallel on Simulator さらなる工夫
32.
さいごに • iOS周りも以前に比べると進化しています • WWDC
2017 「What’s New in Testing」 • 要チェック • WWDC 2018 「What’s New in Testing」 • 要チェック! • ぜひ、さわってみましょう • 知見はぜひ、Test Night(など)で
Download