컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Android용 Firebase Test Lab이 American Express 앱 테스트 비용을 50% 절감
소개
Android 다운로드가 100만 회에 달하는 AMEX 모바일 앱은 카드 회원이
지출과 보상을 추적하고, 혜택을 찾고, 청구서를 결제하고, 앱
전용 기능을 이용하는 데 사용됩니다. 잦은 업데이트를 수월하게
만들기 위해 American Express는 출시 전에 모든 플랫폼에서 앱의
코드 변경사항을 테스트하기 위한 기기 실험실을 구축했습니다.
도전
수십 개의 기기에서 다양한 Android 출시를 실행하는 실험실을
확장하기가 어려웠습니다. 새로운 테스트를 추가하면 기기 실험실의
처리량이 제한되어 있기 때문에 생산성이 감소했으며, 새로운 팀 구성원이
가입하면 코드 변경 수가 늘어나기 때문에 더 많은 부하가 추가되었습니다.
기기 실험실을 유지 관리하는 데 시간과 비용이 많이 들었고, 유지 관리를
하지 않는다면 카드 회원을 위한 부가 가치를 창출하기 위한 개선에
집중했을 엔지니어들의 주의가 분산되었습니다. 기기에는 일반적으로 수동 개입이 필요한 문제가 있어서
전체 테스트 모음을 다시 실행해야 하는 경우가 많았습니다.
문제가 있는 기기는 기기 실험실에서 정기적으로 제거되었으며
이러한 기기를 교체할 때 팀에서 새로운 기기의 도착을 기다리는 동안
다운타임이 발생하는 경우가 많았습니다.
해결책
제품의 알파 기간 동안 AMEX 앱의 업데이트 빈도, 고품질
출시를 위한 노력, 엔지니어의 협업을 위한 의지가
Firebase Test Lab팀에게 이상적인 환경을 제공했습니다. American Express는
제품의 출시 버전을 형성하는 데 도움이 된 귀중한 피드백을
제공했습니다. Firebase Test Lab은 수백
개의 계측 테스트로 구성된 American Express의 복잡한 제품군과
통합되었습니다. Test Lab이 초기 개발 단계에 있는
동안에도 American Express는 지속적인 통합 테스트를 모두 Test Lab으로
전환하고 대부분의 기기 실험실을 사용 중지했습니다. 그 결과 기기를
유지 관리하는 엔지니어가 높은 제품 품질을 보장하기 위해
테스트를 작성하고 실행하는 동시에 카드 회원에게 새로운 기능을 제공하는 데
집중할 수 있게 되었습니다.
또한 American Express는 테스트 묶음 실행의 속도 저하나 직접
개발한 기기 실험실의 확장을 걱정할 필요 없이 테스트 수를 늘릴 수
있었습니다. 여기에는 새로운
팀원이 합류할 때 테스트 수가 급증하는 것을 처리하고 추가 코드 변경을
생성하는 일이 포함됩니다. American Express는 현재
모든 pull 요청에 대해 1,000개 이상의 계측 테스트를 실행하며, 이는
공개 출시당 수십만 개의 테스트에 해당합니다.
동시 테스트를 많이 실행하면 새로운 버그와 반복되는
버그를 방지하는 능력이 크게 향상되며 이는 모두
테스트를 대규모로 병렬화할 수 있는
Firebase Test Lab의 기능 덕분입니다.
면책 조항: 결과가 다를 수 있습니다.
결과
절반의 시간에 30% 더 많은 테스트
테스트를 추가해도 속도 저하 없이 전체 테스트 묶음을 2배 이상
더 빠르게 실행
내부 기기 실험실에 비해 비용을 50% 절감
Firebase Test Lab은 American Express가 모든 pull 요청에 대해 광범위한 전체 Android 테스트 제품군을 실행할 수 있게 해줍니다. Firebase가 테스트 인프라 확장을 처리하므로 엔지니어는 코드에 집중하여 앱을 개선하고 테스트 제품군에 적절한 변경 사항을 적용할 수 있습니다."
- 마이클 베일리, American Express 부사장 겸 수석 엔지니어
[null,null,[],[],[],null,["# American Express Case Study\n\n[*arrow_back*\nExplore other case studies](/case-studies) \n[View more solutions](/solutions) \n\n##### Firebase Test Lab for Android reduced American Express app test costs by 50%\n\n*** ** * ** ***\n\n##### Introduction\n\nThe 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\n##### Challenge\n\nWith 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\n##### Solution\n\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\n#### All Firebase products\n\n##### Build\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\n##### Run\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)"]]