bluepillを使ったios自動テストの並列化

9
Copyright © DeNA Co.,Ltd. All Rights Reserved. iOS Test Night #3 2017/03/13(Mon) 平平平平 @DeNA Bluepill 平平平平 iOS 平平平平平平平平平

Upload: toshiyuki-hirata

Post on 12-Apr-2017

206 views

Category:

Technology


0 download

TRANSCRIPT

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

iOS Test Night #32017/03/13(Mon)平田敏之 @DeNA

Bluepill を使った

iOS 自動テストの並列化

Page 2: 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 も開催したいと目論んでいる

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今日の発表の流れ (5 分 )

はじめに⁃ iOS の自動テスト導入後のツラミ ( 一部 ) について

解決策になりうる Bluepill とは?⁃ 簡単な説明⁃ 利用方法⁃ デモ

終わりに

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

はじめに

自動テストには苦労する点が色々あります⁃ 導入するまでの苦労⁃ 導入してからの苦労

自動テストを導入して苦労する点 ( の一部 )⁃ テストの実行時間• テストの終了が待てなくなってくる ( 特に UI テストが増えてくると…

⁃ iOS シミュレーターの不安定さ

そんな、解決策を色々と模索している最中に Linkedin が Bluepill を公開

⁃ 参考記事• https://www.infoq.com/jp/news/2017/01/linkedin-bluepill-ios-testing

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

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 が使える

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

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"

)

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

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)

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

デモシミュレーター起動数: 2テストケース数: 4

起動方法./bluepill –c config.json

実行の流れ1) Create Simulator2) Started Simulator3) Install Appliication4) Launch Application5) Tests started6) Tests Completed7) Delete Simulator

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

最後に - 皆さんが思う ( であろう ) 疑問と返答 -

そんなに並列化する必要あるか?⁃ 自動テストが増えてくると実行時間は悩みのタネになります• 実行時間が問題となり自動テストが放置されるというケースもあります

テストの数が少ないうちから使う必要があるか?⁃ テストの待機時間や、リトライ数などを設定できるだけでなく

Junit 形式でテスト結果を出せるので最初から使っても効果はある

※ 利用方法の詳細などは Qiita に掲載しました※http://qiita.com/tarappo/items/f2ff7f2e72a2663f0525