More Related Content
Similar to Bluepillを使ったiOS自動テストの並列化 (19)
More from Toshiyuki Hirata (7)
Bluepillを使ったiOS自動テストの並列化
- 1. Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOS Test Night #3
2017/03/13(Mon)
平田敏之@DeNA
Bluepillを使った
iOS自動テストの並列化
- 2. Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
平田 敏之@DeNA
⁃ SWET (Software Engineer in Test)
• 事業サポートチーム / テスト基盤チーム
• ミッション
⁃ DeNAサービス全般の品質向上
⁃ DeNAエンジニアの開発生産性向上
⁃ 私がやっていること(の一部)
• クライアントアプリ周りのテスト戦略、自動テストの開発
• CI/CD環境整備
• テスト基盤環境の開発
• iOS Test Night主催
⁃ iOS以外のTest Nightも開催したいと目論んでいる
- 3. Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日の発表の流れ(5分)
はじめに
⁃ iOSの自動テスト導入後のツラミ(一部)について
解決策になりうるBluepillとは?
⁃ 簡単な説明
⁃ 利用方法
⁃ デモ
終わりに
- 4. Copyright © DeNA Co.,Ltd. All Rights Reserved.
はじめに
自動テストには苦労する点が色々あります
⁃ 導入するまでの苦労
⁃ 導入してからの苦労
自動テストを導入して苦労する点(の一部)
⁃ テストの実行時間
• テストの終了が待てなくなってくる(特にUIテストが増えてくると…
⁃ iOSシミュレーターの不安定さ
そんな、解決策を色々と模索している最中に
LinkedinがBluepillを公開
⁃ 参考記事
• https://www.infoq.com/jp/news/2017/01/linkedin-bluepill-ios-
testing
- 5. Copyright © DeNA Co.,Ltd. All Rights Reserved.
Bluepillとは?
一体なに?
⁃ LinkedInが公開した複数のiOSシミュレーターを使って自動テストを
実行可能にしてくれるもの
何が嬉しいの?
⁃ iOSシミュレーターを複数実行しテストを並列実行できる
• テストケースを分割して実行してくれる
⁃ 許容リトライ数やタイムアウトなど色々と設定できる
• さらにヘッドレスまで可能!
注意点「だった」ところ (3/10まで)
⁃ Xcode UI Tesingはサポート外!(だった)
• READMEには以下のように書かれていた
⁃ Unfortunately, we don't support Xcode UI Testing bundles yet and we are working on that [**help wanted**].
⁃ ※ただし現時点(3/11)ではreleaseはされていない※
⁃ Unit Testing Bundleは元々サポートしているのでKIFやEarlGreyが使える
- 6. Copyright © DeNA Co.,Ltd. All Rights Reserved.
利用方法(1/2)
事前準備(BluepillはDL済みとします)
build for testingで対象となるテストコードをbuildする
⁃ Case 1) Xcodeから作成する
⁃ Case 2) xcodebuildを利用する
• 例) xcodebuild build-for-testing –workspace <path> -scheme <name> -destination <specifier>
• 成果物の一部) xxxx.app(このapp内部のPlugins dirにxxxx.xctestが含まれている)
⁃ Case 3) fastlaneを利用する
xcodebuild(
workspace: '対象のworkspace',
scheme: ‘テストのscheme',
destination: 'platform=iOS Simulator,name=iPhone 5s,OS=latest',
derivedDataPath: ‘保存先',
xcargs: "build-for-testing"
)
- 7. Copyright © DeNA Co.,Ltd. All Rights Reserved.
利用方法(2/2)
BluePillの実行方法
⁃ コマンドからオプション指定で動かす
• ./bluepill -a ./Sample.app -s ./SampleAppTestScheme.xcscheme -o ./output/
⁃ ここのSample.appは前提でビルドして生成されたappファイル
⁃ 事前に用意したConfigファイルを指定してコマンドから動かす
• ./bluepill -c config.json
オプション (詳細はhttps://github.com/linkedin/bluepill/blob/master/README.md)
⁃ 必須
• 対象となるapp → app | -a
• 結果出力 → output-dir | -o
• 対象となるschemeのパス → scheme-path | -s
⁃ 任意
• シミュレーターの起動数 → num-sims | -n (4)
• テストのタイムアウト(sec) → test-timeout | -T (300s)
• ヘッドレス → headless | -H (off)
- 8. Copyright © DeNA Co.,Ltd. All Rights Reserved.
デモ
シミュレーター起動数:2
テストケース数:4
起動方法
./bluepill –c config.json
実行の流れ
1) Create Simulator
2) Started Simulator
3) Install Appliication
4) Launch Application
5) Tests started
6) Tests Completed
7) Delete Simulator
- 9. Copyright © DeNA Co.,Ltd. All Rights Reserved.
最後に - 皆さんが思う(であろう)疑問と返答 -
そんなに並列化する必要あるか?
⁃ 自動テストが増えてくると実行時間は悩みのタネになります
• 実行時間が問題となり自動テストが放置されるというケースもあります
テストの数が少ないうちから使う必要があるか?
⁃ テストの待機時間や、リトライ数などを設定できるだけでなく
Junit形式でテスト結果を出せるので最初から使っても効果はある
※利用方法の詳細などはQiitaに掲載しました※
http://qiita.com/tarappo/items/f2ff7f2e72a2663f0525