狠狠撸

狠狠撸Share a Scribd company logo
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
iOS Test Night #3
2017/03/13(Mon)
平田敏之@DeNA
Bluepillを使った
iOS自動テストの並列化
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
自己紹介
? 平田 敏之@DeNA
? SWET (Software Engineer in Test)
? 事業サポートチーム / テスト基盤チーム
? ミッション
? DeNAサービス全般の品質向上
? DeNAエンジニアの開発生産性向上
? 私がやっていること(の一部)
? クライアントアプリ周りのテスト戦略、自動テストの開発
? CI/CD環境整備
? テスト基盤環境の開発
? iOS Test Night主催
? iOS以外のTest Nightも開催したいと目論んでいる
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
今日の発表の流れ(5分)
? はじめに
? iOSの自動テスト導入後のツラミ(一部)について
? 解決策になりうるBluepillとは?
? 簡単な説明
? 利用方法
? デモ
? 終わりに
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
はじめに
? 自動テストには苦労する点が色々あります
? 導入するまでの苦労
? 導入してからの苦労
? 自動テストを導入して苦労する点(の一部)
? テストの実行時間
? テストの終了が待てなくなってくる(特にUIテストが増えてくると…
? iOSシミュレーターの不安定さ
そんな、解決策を色々と模索している最中に
? LinkedinがBluepillを公開
? 参考記事
? https://www.infoq.com/jp/news/2017/01/linkedin-bluepill-ios-
testing
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が使える
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"
)
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)
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
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
最後に - 皆さんが思う(であろう)疑問と返答 -
? そんなに並列化する必要あるか?
? 自動テストが増えてくると実行時間は悩みのタネになります
? 実行時間が問題となり自動テストが放置されるというケースもあります
? テストの数が少ないうちから使う必要があるか?
? テストの待機時間や、リトライ数などを設定できるだけでなく
Junit形式でテスト結果を出せるので最初から使っても効果はある
※利用方法の詳細などはQiitaに掲載しました※
http://qiita.com/tarappo/items/f2ff7f2e72a2663f0525

More Related Content

叠濒耻别辫颈濒濒を使った颈翱厂自动テストの并列化

  • 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