LinkedInのBluepillは、開発者がひとつのマシンで複数のシミュレータを使ってOS UIテストを実行するのを可能にする。LinkedInのソフトウェアエンジニアKeqiu Hu氏によると、ツールの安定性とテストのスケーラビリティをもたらすことを目的としているという。
Bluepillは、LinkedInの3x3フィロソフィー(1日に3つのリリース、「コードをコミットしてからメンバーが使えるまで3時間以内」を目標とする)において不可欠なものだ。これは2つの非常に望ましい特性をもたらす。
- テストプラットフォームの安定性。これは主にXcode iOS Simulatorの「不安定さ(Flakiness)」に関係がある。自分のコードではなくシミュレータ自身の問題で、テストが失敗することがあるのだ。LinkedInの統計によると、それは彼らが実行したテストの2%がに相当するという。
- テストのスケーラビリティ。基本的にテストを並列に動作させて、複数のシミュレート環境をカバーできるようになる。
Bluepillはプラットフォームの安定性とスケーラビリティの2つを、AppleのプライベートフレームワークCoreSimulatorによって解決している。このフレームワークを使うことで、各種デバイスシミュレータの作成、ランタイムバージョンの選択、シミュレータからの通知処理などが可能になる。Hu氏によると、CoreSimulatorを使うことで、Xcodeをアップデートするたびに進化するブラックボックスのXcodeシミュレータからBluepillを隔離し、複数のシミュレータを使ってテストを並列に実行できるという。
最も単純なユースケースの場合、次のように実行すればよい。
./bluepill -a ./Sample.app -s ./SampleAppTestScheme.xcscheme -o ./output/
上記コマンドは4つのシミュレータを起動するが、使用するシミュレータ数、ランタイム、失敗したテストの許容リトライ数、スタックしたテストの待機時間など、各種オプションによってテスト環境はカスタマイズできる。
BluepillはBSD–2ライセンスのもとGitHubに公開されている。ツールのビルドを待ちたくない開発者向けに、バイナリも公開されている。
Rate this Article
- Editor Review
- Chief Editor Action