Weitere ähnliche Inhalte Ähnlich wie Xcode10での テスト周りの進化をふりかえる (20) Mehr von Toshiyuki Hirata (7) Kürzlich hochgeladen (10) Xcode10での テスト周りの進化をふりかえる2. 自己紹介
平田 敏之@DeNA / SWET (Software Engineer in Test)
ミッション
• DeNAサービス全般の品質向上
• DeNAエンジニアの開発生産性向上
私の担当(の一部)
• 自動テスト(iOS領域)
• プロセス(CI/CD周り)
• Test Night 主宰
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
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になる
12. Automatically include new tests
新規に実装したテストコードを自動で含めるか否か
• この機能はどんなときに利用するのか?
• 例えば
• 自動で追加しない:チェックをオフ
• 対象:常に動かすテストコード
• 安定してから実行対象にする
• 自動で追加する:チェックをオン
• 対象:Nightlyなどで動かすテストコード
• 安定するかを確かめる
17. Randomize execution order
テストのランダム実行
• Arrange-Act-Assert
• http://wiki.c2.com/?ArrangeActAssert
• Arrange
• 前提条件
• Act
• 操作
• Assert
• 期待値の確認
別のテストケースの実行(Arrange-Act)が
他のテストケースのArrangeに
なっていることがある
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