Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Bluepillを使ったiOS自動テストの並列化

839 views

Published on

iOS Test Night #3で発表した資料です。

Published in: Technology
  • Be the first to comment

Bluepillを使ったiOS自動テストの並列化

  1. 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOS Test Night #3 2017/03/13(Mon) 平田敏之@DeNA Bluepillを使った iOS自動テストの並列化
  2. 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. 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日の発表の流れ(5分)  はじめに ⁃ iOSの自動テスト導入後のツラミ(一部)について  解決策になりうるBluepillとは? ⁃ 簡単な説明 ⁃ 利用方法 ⁃ デモ  終わりに
  4. 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. 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. 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. 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. 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. 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. 最後に - 皆さんが思う(であろう)疑問と返答 -  そんなに並列化する必要あるか? ⁃ 自動テストが増えてくると実行時間は悩みのタネになります • 実行時間が問題となり自動テストが放置されるというケースもあります  テストの数が少ないうちから使う必要があるか? ⁃ テストの待機時間や、リトライ数などを設定できるだけでなく Junit形式でテスト結果を出せるので最初から使っても効果はある ※利用方法の詳細などはQiitaに掲載しました※ http://qiita.com/tarappo/items/f2ff7f2e72a2663f0525

×