American Express の事例: Firebase Test Lab for Android を使用してアプリテストのコストを 50% 削減
はじめに
Android でのダウンロード数が 100 万件を数える AMEX のモバイルアプリは、カード会員によって支出や特典の追跡、オファーの検索、請求書の支払い、アプリ限定機能の活用に使用されています。頻繁なアップデートを容易にするため、American Express は、リリース前にアプリのコード変更をすべてのプラットフォームでテストするデバイスラボを構築しました。
課題
多数のデバイスでさまざまな Android リリースが稼働しているラボは、拡張するのが困難でした。デバイスラボのスループットは限られているため、新しいテストを追加すると生産性が低下し、新しいチームメンバーが加わるとコード変更の量が増えて負荷がさらに高まりました。
デバイスラボの維持には時間とコストがかかりました。また、エンジニアがデバイスラボの維持に気を取られ、カード会員のための付加価値を高める機能の強化に注力するというエンジニア本来の業務に集中できませんでした。デバイスに手動介入を必要とする問題が起こるのは日常茶飯事で、テストスイート全体の再実行を強いられることもしばしばでした。問題のあるデバイスはデバイスラボから定期的に除去されて別のデバイスに入れ替えられましたが、多くの場合、新しいデバイスの到着を待つ間にダウンタイムが生じました。
解決方法
Firebase Test Lab がアルファ期間にあるとき、AMEX アプリのアップデートの頻度、高品質のリリースを提供しなければならないという責務、積極的に協力しようとするエンジニアの姿勢は、Firebase Test Lab チームにとって理想的な環境でした。American Express からは、プロダクトのリリース バージョンを形作るうえで役立つ貴重なフィードバックが提供されました。Firebase Test Lab は、数百のインストルメンテーション テストからなる American Express の複雑なテストスイートと統合されました。Test Lab の開発初期段階でさえ、American Express はすべての継続的統合テストを Test Lab に切り替え、デバイスラボの大部分を廃止することができました。これにより、デバイスをメンテナンスするエンジニアがカード会員に新機能を提供することに専念できるようになり、テストを記述および実行して高いサービス品質を確保することも可能になりました。
さらに、テストスイートの実行速度の低下を心配することなく、自社製のデバイスラボを拡張することもなしに、テストの数を増やすこともできました。これには、新しいチームメンバーが加わることによるテスト数の急増への対処や、追加のコード変更の生成が含まれます。今では、すべての pull リクエストに対して 1,000 を超えるインストルメンテーション テストが実施されており、これは 1 回の一般リリースに換算すると数十万のテストに相当します。これだけ多くの同時テストを実行すれば、新しいバグの発生やバグの再発を防ぐ能力は大幅に向上します。これらはすべて、大量のテストを並列処理する Firebase Test Lab の能力のおかげです。
免責事項: 必ずしもこれと同じ結果が得られるとは限りません。
結果
半分の時間でテスト数が 30% 増加
テストスイート全体の実行速度が 2 倍以上高速になり、テストを追加しても速度は低下しなかった
社内デバイスラボと比較してコストが 50% 低下
「Firebase Test Lab を使用することで、当社はすべての pull リクエストに対応する大規模な Android テストスイート全体を実行できるようになりました。テスト インフラストラクチャのスケーリングは Firebase に任せられるので、エンジニアはコーディングに専念でき、アプリの機能改善やそれに応じたテストスイートの変更が促進されています。」
- American Express 社バイス プレジデント兼プリンシパル エンジニア Michael Bailey 氏