コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
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 氏
[null,null,[],[],[],null,["[*arrow_back*\nExplore other case studies](/case-studies) \n[View more solutions](/solutions) \n\nFirebase Test Lab for Android reduced American Express app test costs by 50%\n\n*** ** * ** ***\n\nIntroduction The AMEX mobile app, with a million Android downloads, is used by\nCard Members to track spending and rewards, find offers, pay\nbills, and enjoy app-only features. To facilitate frequent\nupdates, American Express built a device lab to test code changes\nin their app across all platforms before release.\n\n*** ** * ** ***\n\nChallenge With dozens of devices running various Android releases, the lab\nwas tough to scale. Adding new tests decreased productivity\nbecause of the device lab's limited throughput, and when new team\nmembers joined, the increased number of code changes added even\nmore load.\n\nMaintaining the device lab was time-consuming and costly,\ndiverting the attention of engineers who otherwise would have\nbeen focused on enhancements to drive additional value for Card\nMembers. The devices commonly had issues that required manual\nintervention, often forcing reruns of the entire test suite.\nProblematic devices were regularly removed from the device lab,\nand replacing them often created down-time while the team awaited\nthe arrival of new devices. \n\n*** ** * ** ***\n\nSolution \nDuring the product's alpha period, the frequency of updates\nto the AMEX app, commitment to high-quality releases, and\nwillingness of engineers to collaborate provided an ideal\nenvironment for the Firebase Test Lab team. American Express,\nin turn, provided valuable feedback that helped to shape the\nreleased version of the product. Firebase Test Lab integrated\nwith American Express' complex suite of hundreds of\ninstrumentation tests. Even while Test Lab was in early\ndevelopment, American Express was able to switch all of their\ncontinuous integration testing to Test Lab and successfully\nretire much of their device lab. This enabled the engineers\nmaintaining the devices to shift their focus to shipping new\nfeatures to Card Members while also writing and running tests\nto ensure high product quality. \nIn addition, American Express was able to scale the number of\ntests without worrying about slowing down test-suite execution\nand scaling up a homegrown device lab. This includes handling\nsurges in the number of tests as new team members join and\ngenerating additional code changes. American Express now runs\nover 1,000 instrumentation tests on every pull request, which\nequals hundreds of thousands of tests per public release.\nRunning so many concurrent tests dramatically increases\ntheir ability to prevent new and recurring bugs, all thanks\nto Firebase Test Lab's ability to massively parallelize\ntesting.\n\nDISCLAIMER: Results may vary.\n\n*** ** * ** ***\n\nResults\n\n30% more tests in half the time\n\n2X+ faster execution of full test suite, with no slowdown when adding\ntests\n\n50% lower cost vs. internal device lab \n\nFirebase Test Lab enables American Express to execute our entire extensive Android test suite for every pull request. Firebase takes care of scaling the test infrastructure, so our engineers can focus on the code, driving improvements to the app and corresponding changes to our test suite.\"\n\n\n- Michael Bailey, VP and Principal Engineer, American Express \nTry Firebase today\n\n\nIntegrating it into your app is easy.\n[Get started](https://console.firebase.google.com/) \n\nAll Firebase products \n\nBuild\n\n- [App Check](/products/app-check)\n- [App Hosting](/products/app-hosting)\n- [Authentication](/products/auth)\n- [Cloud Functions](/products/functions)\n- [Cloud Storage](/products/storage)\n- [Data Connect](/products/data-connect)\n- [Extensions](/products/extensions)\n- [Firestore](/products/firestore)\n- [Firebase ML](/products/ml)\n- [Genkit](https://genkit.dev/)\n- [Hosting](/products/hosting)\n- [Realtime Database](/products/realtime-database)\n- [Firebase AI Logic client SDKs](/products/firebase-ai-logic)\n\n[Generative AI](/products/generative-ai) \n\nRun\n\n- [A/B Testing](/products/ab-testing)\n- [App Distribution](/products/app-distribution)\n- [Cloud Messaging](/products/cloud-messaging)\n- [Crashlytics](/products/crashlytics)\n- [Google Analytics](/products/analytics)\n- [In-App Messaging](/products/in-app-messaging)\n- [Performance Monitoring](/products/performance)\n- [Remote Config](/products/remote-config)\n- [Test Lab](/products/test-lab)"]]