Firebase Test Lab là dịch vụ đám mây của Google dành cho kiểm thử tự động ứng dụng di động trên các thiết bị thật đặt tại trung tâm dữ liệu của Google. Test Lab cho phép bạn chạy kiểm thử công cụ, kiểm thử ảnh chụp màn hình và kiểm thử robot trên hàng trăm cấu hình thiết bị với các phiên bản Android và iOS khác nhau mà không cần duy trì trại thiết bị riêng. Theo Firebase Documentation, 2026, kiểm thử robot Firebase tự động đi qua tất cả các màn hình của ứng dụng, phát hiện sự cố, ANR và vấn đề giao diện mà không cần viết một dòng mã kiểm thử nào. Dịch vụ hỗ trợ tích hợp với hệ thống CI/CD và cung cấp báo cáo chi tiết kèm video và nhật ký.
Những điểm chính
Firebase Test Lab là cơ sở hạ tầng đám mây của Google để kiểm thử tự động ứng dụng di động trên các thiết bị vật lý đặt tại trung tâm dữ liệu toàn cầu của Google. Không giống như trình giả lập trên máy cục bộ, Test Lab chạy kiểm thử trên thiết bị Android thật và thiết bị iOS với nhiều phiên bản hệ điều hành, độ phân giải màn hình, kích thước RAM và cấp độ API khác nhau. Dịch vụ tự động xử lý kết quả kiểm thử, cung cấp video thực thi, ảnh chụp màn hình các bước và nhật ký chi tiết.
Duy trì trại thiết bị riêng đòi hỏi đầu tư vốn đáng kể vào việc mua và bảo trì thiết bị vật lý. Firebase Test Lab cung cấp quyền truy cập vào hàng nghìn thiết bị trên cơ sở trả tiền theo mức sử dụng với giới hạn miễn phí trên gói Spark. Test Lab tự động cập nhật nhóm thiết bị lên các mẫu hiện tại, bao gồm các flagship mới nhất Google Pixel, Samsung Galaxy, Xiaomi và iPhone. Các kiểm thử chạy song song trên nhiều thiết bị, giảm tổng thời gian xác minh ứng dụng.
Đối với Android, Test Lab hỗ trợ kiểm thử trên thiết bị có cấp độ API từ 21 đến phiên bản Android ổn định mới nhất. Hỗ trợ iOS bao gồm thiết bị iPhone và iPad thật với phiên bản iOS từ 15 đến phiên bản ổn định mới nhất. Kiểm thử robot và XCTest có sẵn cho iOS. Mỗi kiểm thử có thể chạy trên thiết bị vật lý hoặc trình giả lập — để có kết quả chính xác nhất, Google khuyên dùng thiết bị vật lý vì chúng phát hiện vấn đề về cảm biến, camera và giao diện mạng.
Firebase Test Lab hỗ trợ nhiều loại kiểm thử, mỗi loại giải quyết nhiệm vụ riêng trong chu kỳ phát triển: kiểm thử robot để kiểm tra độ ổn định nhanh, kiểm thử công cụ để xác minh chức năng và kiểm thử ảnh chụp màn hình để phát hiện hồi quy hình ảnh. Việc chọn loại kiểm thử phụ thuộc vào giai đoạn phát triển và mục tiêu của lần chạy cụ thể.
Kiểm thử robot là tính năng độc đáo của Firebase Test Lab không yêu cầu viết mã kiểm thử. Firebase Crawler tự động khám phá ứng dụng: tìm tất cả các yếu tố tương tác của giao diện, nhấp vào chúng, điền biểu mẫu với dữ liệu kiểm thử, điều hướng giữa các màn hình và ghi lại mọi sự cố (sập, ANR, ngoại lệ). Kiểm thử robot phát hiện tới 80% lỗi nghiêm trọng mà không cần một dòng mã kiểm thử nào, khiến chúng trở thành công cụ lý tưởng để đánh giá độ ổn định cơ bản của ứng dụng trong giai đoạn đầu phát triển.
Kiểm thử công cụ là kiểm thử do nhà phát triển viết bằng khung Espresso (Android) hoặc XCTest (iOS). Test Lab chạy APK với kiểm thử trên thiết bị đích và thu thập kết quả thực thi. Kiểm thử có thể đơn giản (kiểm tra hiển thị yếu tố) hoặc phức tạp (kịch bản đầu cuối: đăng nhập, thêm vào giỏ hàng, thanh toán). Firebase Test Lab hỗ trợ Android Test Orchestrator để cách ly các kiểm thử với nhau, ngăn một kiểm thử thất bại ảnh hưởng đến các kiểm thử khác.
Kiểm thử ảnh chụp màn hình được dùng để phát hiện hồi quy hình ảnh trong ứng dụng. Game loop là loại kiểm thử đặc biệt truyền danh sách kịch bản cho ứng dụng qua intent, và ứng dụng phải thực thi các kịch bản này và chụp ảnh màn hình chính. Test Lab thu thập ảnh chụp màn hình từ tất cả thiết bị trong ma trận và cho phép so sánh với ảnh tham chiếu để phát hiện khác biệt. Loại kiểm thử này đặc biệt phổ biến trong ứng dụng trò chơi để kiểm tra kết xuất trên các GPU khác nhau.
| Loại kiểm thử | Mã | Nội dung kiểm tra | Khi nào sử dụng |
|---|---|---|---|
| Kiểm thử robot | Không yêu cầu | Sập, ANR, ngoại lệ | Kiểm tra độ ổn định nhanh |
| Công cụ | Espresso / XCTest | Chức năng kịch bản | Kiểm thử hồi quy |
| Ảnh chụp màn hình | Game loop | Hồi quy hình ảnh | Kiểm tra giao diện trên thiết bị khác nhau |
Ma trận kiểm thử trong Firebase Test Lab là một tập hợp các cấu hình thiết bị mà kiểm thử được chọn sẽ chạy trên đó. Mỗi cấu hình bao gồm mẫu thiết bị, phiên bản hệ điều hành, hướng màn hình (dọc/ngang) và cài đặt khu vực (ngôn ngữ). Kiểm thử chạy song song trên tất cả các cấu hình được chọn, giảm đáng kể tổng thời gian thực thi so với chạy tuần tự trên từng thiết bị.
Google khuyên nên đưa vào ma trận các thiết bị có đặc điểm khác nhau: mẫu flagship (Google Pixel, Samsung Galaxy S), thiết bị bình dân (Moto G, Xiaomi Redmi), thiết bị có phiên bản API tối thiểu được ứng dụng hỗ trợ. Ma trận tối ưu bao gồm 5–10 cấu hình bao phủ tất cả phiên bản hệ điều hành mà ứng dụng hỗ trợ. Đối với iOS, các mẫu iPhone và iPad thuộc các thế hệ khác nhau được chọn (ví dụ: iPhone SE, iPhone 14, iPad Air) với các phiên bản iOS khác nhau.
Test Lab tự động phân phối kiểm thử trên các thiết bị được chọn, chạy từng kiểm thử trên mỗi cấu hình. Thời gian thực thi của toàn bộ ma trận bằng thời gian thực thi của kiểm thử chậm nhất trên thiết bị chậm nhất — tất cả các kiểm thử khác chạy song song. Nếu một kiểm thử thất bại trên tất cả thiết bị, Test Lab dừng thực thi trên các cấu hình còn lại để tiết kiệm tài nguyên. Kết quả được nhóm theo kiểm thử và theo thiết bị, cho phép nhanh chóng xác định lỗi có cụ thể cho một cấu hình nhất định hay không.
Kiểm thử robot là tính năng flagship của Firebase Test Lab cho phép bạn tự động khám phá ứng dụng mà không cần viết một kiểm thử nào. Firebase Crawler (robot) phân tích cấu trúc phân cấp giao diện của ứng dụng, tìm tất cả các yếu tố tương tác (nút, trường văn bản, danh sách, menu) và tương tác với chúng, mô phỏng hành vi người dùng thực. Kiểm thử robot đặc biệt hiệu quả trong giai đoạn đầu phát triển, khi kiểm thử chưa được viết, hoặc để kiểm tra mã kế thừa.
Để chạy kiểm thử robot, chỉ cần tải APK hoặc IPA lên Firebase Console và chọn tùy chọn Robo test. Robot có thể tự động đăng nhập vào ứng dụng qua thông tin đăng nhập được cấu hình trước (tên đăng nhập/mật khẩu) để truy cập các màn hình ẩn sau xác thực. Bạn cũng có thể đặt độ sâu khám phá (max depth) để giới hạn số bước của robot, hoặc chỉ định các yếu tố cụ thể mà robot nên nhấp vào ưu tiên.
<!-- res/xml/robo_directives.xml -->
<!-- Robot sẽ điền các trường đăng nhập và mật khẩu -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
Kiểm thử robot không thay thế kiểm thử thủ công và kiểm thử công cụ đã viết cho các kịch bản phức tạp. Robot không thể kiểm tra logic nghiệp vụ: nó nhấp vào tất cả các yếu tố theo trình tự, nhưng không biết kết quả có đúng không. Ngoài ra, robot không thể tương tác với các view tùy chỉnh không kế thừa từ ViewGroup tiêu chuẩn và không xử lý được WebView. Trong những trường hợp này, cần sử dụng kiểm thử công cụ hoặc Game loop.
Tích hợp Firebase Test Lab với hệ thống CI/CD cho phép tự động chạy kiểm thử mỗi khi push vào kho lưu trữ. Test Lab hỗ trợ tác vụ Gradle cho Android và Fastlane cho cả hai nền tảng. Thiết lập đường ống CI/CD bao gồm xây dựng ứng dụng, tải APK/IPA lên Google Cloud Storage, chạy kiểm thử qua Firebase CLI và nhận báo cáo về hệ thống CI để hiển thị trạng thái xây dựng.
Google cung cấp plugin gcloud-test-lab cho Gradle, tự động hóa việc tải lên và chạy kiểm thử. Tác vụ assembleAndroidTest xây dựng APK với kiểm thử, và các tác vụ gcloud tải nó lên Test Lab và chạy ma trận. Kết quả kiểm thử được trả về Graddưới dạng pass/fail, cho phép tích hợp Test Lab vào bất kỳ đường ống CI nào hỗ trợ Gradle. Tài khoản dịch vụ Firebase có quyền Test Lab được sử dụng để ủy quyền.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane cung cấp plugin firebase_test_lab để tích hợp với kiểm thử iOS và Android. Một lane Fastlane thực hiện xây dựng, chạy kiểm thử và xử lý kết quả. Đối với XCTest trên iOS, Test Lab yêu cầu tệp xctestrun, được tạo tự động khi xây dựng mục tiêu kiểm thử. Fastlane cũng có thể tải kết quả kiểm thử lên Slack hoặc các ứng dụng nhắn tin khác để thông báo cho nhóm về trạng thái kiểm thử sau mỗi lần chạy.
Sau khi hoàn thành kiểm thử, Firebase Test Lab cung cấp báo cáo toàn diện có sẵn trong Firebase Console và qua gcloud CLI. Báo cáo bao gồm tóm tắt ngắn (số lượng kiểm thử đạt, thất bại và bỏ qua), thông tin chi tiết cho từng kiểm thử trên từng thiết bị, video thực thi, ảnh chụp màn hình các bước chính và nhật ký thiết bị (logcat cho Android, nhật ký hệ thống cho iOS). Đối với kiểm thử thất bại, có sẵn dấu vết ngăn xếp với vị trí lỗi chính xác.
Đối với kiểm thử robot, báo cáo khác với kiểm thử công cụ: thay vì pass/fail cho từng trường hợp kiểm thử, báo cáo hiển thị thống kê khám phá. Các chỉ số chính — số lượng màn hình tìm thấy và đã truy cập, số lượng tương tác của robot (nhấp, vuốt, nhập văn bản), sự cố và ANR được phát hiện, và đường đi qua ứng dụng. Video thực thi robot cho phép đánh giá trực quan màn hình nào đã được kiểm thử và màn hình nào chưa được kiểm tra.
Kết quả kiểm thử được lưu trữ trong Google Cloud Storage trong bucket liên kết với dự án. Dữ liệu có sẵn để xuất và tích hợp với hệ thống phân tích bên ngoài. Để lưu trữ dài hạn và so sánh kết quả giữa các lần chạy, nên thiết lập xuất BigQuery hoặc sử dụng API Firebase Test Lab để lấy kết quả theo chương trình. Google cung cấp khả năng tải xuống tệp ZIP với đầy đủ kết quả cho mỗi lần chạy kiểm thử.
Câu hỏi thường gặp
Gói Spark bao gồm 10 kiểm thử Robo mỗi ngày và 5 giờ kiểm thử công cụ mỗi tháng miễn phí. Gói Blaze tính phí theo thời gian: ~1 USD mỗi giờ-thiết bị cho kiểm thử Robo và ~5 USD cho kiểm thử công cụ. Chi phí chính xác phụ thuộc vào khu vực và loại thiết bị.
Thiết bị vật lý cho kết quả chính xác hơn, bao gồm vấn đề về cảm biến, camera, GPS, Bluetooth và hiệu suất thực tế. Trình giả lập khởi động nhanh hơn và rẻ hơn, nhưng không phát hiện vấn đề liên quan đến đặc điểm phần cứng. Google khuyên dùng thiết bị vật lý cho kiểm thử trước khi phát hành.
Tạo tệp XML robo_directives.xml với các trường nhập (tên đăng nhập, mật khẩu) và nút để nhấp. Tải tệp lên cùng với APK khi bắt đầu kiểm thử qua Firebase Console hoặc CLI. Robot sẽ thực hiện các hành động được chỉ định trước khi bắt đầu khám phá.
Có, Firebase Test Lab hỗ trợ iOS từ năm 2024. Kiểm thử Robo (khám phá tự động) và XCTest (kiểm thử công cụ) có sẵn trên thiết bị iPhone và iPad thật. Cần có tệp IPA với mục tiêu kiểm thử để tải lên.
Sử dụng Firebase CLI trong GitHub Actions: thiết lập xác thực qua Service Account JSON, cài đặt gcloud SDK, chạy lệnh firebase test android run với APK và cấu hình. Kết quả kiểm thử có sẵn qua Firebase Console hoặc gcloud CLI.
Tóm tắt
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm