Appiumをはじめとしたモバイルテストを安定・高速化させる重要性
Appiumは実際に対象アプリを動かすため、主にモバイルアプリのE2E UIテストとして用いられます。
テストピラミッドからも分かる通り、E2E UIテストは以下の特徴があります。
- 実行時間がかかりやすい
- 環境要因などで不安定(Freaky)になりがち
- すべてを結合させた上でテストをするため、テストの忠実度は高い
そのため、適切なサイズのE2E UIテストをいかにして安定・高速に動かすことができるかが重要になってきます。
今回のAppiumConfでも、AppiumをメインにE2E UIテストを安定・高速で実行できる環境に関するセッションがいくつかありました。
安定した複数のブラウザ・モバイルテスト環境を作るためには
Diego Molina氏による「Building a Mobile Testing Infracture: What I Learned」では、彼がブラウザ・モバイルテスト環境を作る中で得た学びやTipsを紹介していました。
セッションでは、安定したテスト環境を提供するためには下記のポイントが重要だと主張していました。
- 独立性(Docker, Virtual Box, QEMU)
- Infrastructure as Code(Puppet, Ansible, Chef)
- パフォーマンスモニタリング(Prometheus)
テスト環境起因による不安定を減らし、安定的にテストを動かすためには、テスト環境にも本番アプリケーションと同レベルの環境を提供すべきという点でついては私も共感しました。
また、そのテスト環境のスコープ・戦略をよく考える必要があるとも主張していました。
例えば実機デバイスを使ったテスト環境の場合、簡単にスケールしたりクリーンな状態にするのは難しく、メンテナンスコストも高くなりがちです。そのテスト環境でWeb画面のレスポンシブだけを確認するのはコストパフォーマンスに見合いません。提供するテスト環境ではどういうテストを実行させたいのか、それは他のプラットフォーム(今回だとエミュレーターなど)でも代替できないかなどを十分に検討する必要があると主張していました。
Diego Molina氏はSauceLabsというブラウザ・モバイルのクラウドテスト環境を提供するサービスのエンジニアのため、ブラウザ・モバイルテスト環境に関する豊富な知見がありました。セッションでも、それぞれのブラウザ・モバイルOSなどでどのようにテスト環境を作ればよいか解説してあり、現場でも活用していきたいと思います。