Hướng dẫn này mô tả cách chạy một kiểm thử đo lường, Robo hoặc Vòng lặp trò chơi bằng gcloud CLI.
Để xem danh sách đầy đủ các lệnh gcloud
mà bạn có thể dùng với ứng dụng Android trong Test Lab, hãy truy cập vào tài liệu tham khảo về gcloud firebase test android
.
Trước khi bắt đầu
Nếu bạn chưa thực hiện, hãy thêm Firebase vào dự án Android.
Bước 1. Thiết lập gcloud CLI
- Tải Google Cloud SDK xuống
- Đảm bảo rằng bản cài đặt của bạn là bản mới nhất:
gcloud components update
- Đăng nhập vào gcloud CLI bằng Tài khoản Google của bạn:
gcloud auth login
- Đặt dự án Firebase của bạn trong gcloud, trong đó PROJECT_ID là mã dự án Firebase của bạn:
gcloud config set project
PROJECT_ID
Điều này bao gồm cả công cụ gcloud CLI.
Bước 2. Kiểm tra các thiết bị kiểm thử có sẵn
Dùng các lệnh gcloud sau để xem các thiết bị và ngôn ngữ kiểm thử có sẵn cho kiểm thử của bạn.
Ngoài ra, bạn cũng có thể tải ứng dụng Notepad mẫu xuống để bắt đầu chạy các lệnh ngay lập tức. Sử dụng tệp nhị phân app-debug-unaligned.apk
và tệp kiểm thử đo lường app-debug-test-unaligned.apk
. Các tệp này nằm trong NotePad/app/build/outputs/apk/
.
models list
: Lấy danh sách hiện tại các thiết bị Android mà bạn có thể dùng để kiểm thử.gcloud firebase test android models list
Trong đầu ra lệnh:
- Cột
MODEL_ID
chứa mã nhận dạng mà sau này bạn có thể dùng để chạy kiểm thử trên mô hình thiết bị. - Cột
OS_VERSION_ID
chứa các phiên bản hệ điều hành mà thiết bị hỗ trợ.
Ví dụ về đầu ra
- Cột
models describe
: Nhận thêm thông tin về mộtMODEL_ID
Android cụ thể.gcloud firebase test android models describe
MODEL_ID Đầu ra chứa thương hiệu, nhà sản xuất, phiên bản hệ điều hành, các cấp độ API được hỗ trợ, Giao diện nhị phân ứng dụng (ABI) được hỗ trợ, ngày phát hành của mẫu thiết bị và liệu thiết bị đó là thiết bị thực hay ảo.
versions list
: Lấy danh sách các phiên bản hệ điều hành hiện có để kiểm thử.gcloud firebase test android versions list
Bạn có thể sử dụng giá trị nhận dạng từ một trong hai cột đầu tiên của đầu ra lệnh (
OS_VERSION_ID
vàVERSION
) để sau này chạy các kiểm thử trên một phiên bản Android OS. Nếu bạn không chỉ định phiên bản hệ điều hành Android để kiểm thử, thì hệ thống sẽ sử dụng phiên bản mặc định được ghi chú trong cộtTAGS
.Ví dụ về đầu ra
locales list
: Lấy danh sách ngôn ngữ hiện tại có thể dùng để kiểm thử.gcloud firebase test android versions list
Cột đầu tiên của đầu ra lệnh,
LOCALE
, chứa giá trị nhận dạng mà bạn có thể dùng sau này để chạy kiểm thử theo một ngôn ngữ. Nếu bạn không chỉ định ngôn ngữ để kiểm thử, thì tiếng Anh sẽ được dùng làm ngôn ngữ mặc định.
Bước 3. Chạy kiểm thử
Giờ đây, khi đã biết phạm vi của các mẫu thiết bị, ngôn ngữ và phiên bản hệ điều hành có sẵn để kiểm thử ứng dụng, bạn có thể chỉ định thiết bị bằng lệnh gcloud firebase test android run
và cờ --device
để chạy kiểm thử Robo hoặc kiểm thử đo lường.
Chạy thử nghiệm Robo
Ngay cả khi không có bất kỳ kiểm thử đo lường nào, bạn vẫn có thể tìm lỗi trong ứng dụng của mình. Hãy sử dụng kiểm thử Robo để thực hiện quy trình xem xét tự động giao diện người dùng của ứng dụng. Kiểm thử bằng Robo sẽ thực hiện phân tích tĩnh các đường dẫn khác nhau thông qua giao diện người dùng của ứng dụng, sau đó thu thập dữ liệu trong ứng dụng để tìm lỗi và các vấn đề tiềm ẩn khác.
Để chạy một kiểm thử Robo, hãy chạy lệnh ví dụ sau:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Tham số
--type robo
là tham số ngầm ẩn nếu bạn không chỉ định giá trị--type
. - Để giúp bạn xác định và định vị ma trận kiểm thử trong bảng điều khiển của Firebase, bạn có thể dùng cờ
--client-details matrixLabel="Example matrix label"
(không bắt buộc) để gắn nhãn ma trận kiểm thử. - Bạn có thể xem toàn bộ các lựa chọn dòng lệnh để chạy kiểm thử bằng cách nhập:
gcloud help firebase test android run
.
Ngoài cách chỉ định các đối số này trên dòng lệnh, bạn cũng có thể chỉ định các đối số trong một tệp đối số có định dạng YAML (không bắt buộc). Chạy gcloud topic arg-files
để tìm hiểu cách sử dụng tính năng này.
Để tìm hiểu cách điều tra kết quả kiểm thử từ kiểm thử Robo, hãy xem phần Phân tích kết quả kiểm thử.
Chạy một bài kiểm thử đo lường
Giờ đây, hãy dùng công cụ dòng lệnh gcloud
để chạy các kiểm thử Espresso của ứng dụng Notepad trên các cấu hình thiết bị Android mà bạn chỉ định. Sử dụng loại kiểm thử instrumentation
để chạy các kiểm thử trong app-debug-test-unaligned.apk
như sau:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Tham số đo lường
--type
là tham số ngầm ẩn nếu bạn chỉ định một APK kiểm thử bằng--test
. - Để giúp bạn xác định và định vị ma trận kiểm thử trong bảng điều khiển Firebase, bạn có thể dùng cờ
--client-details matrixLabel="Example matrix label"
(không bắt buộc) để gắn nhãn ma trận kiểm thử. - Bạn có thể xem toàn bộ các lựa chọn dòng lệnh để chạy kiểm thử bằng cách nhập
gcloud help firebase test android run
.
Ngoài cách chỉ định các đối số này trên dòng lệnh, bạn cũng có thể chỉ định các đối số trong một tệp đối số có định dạng YAML (không bắt buộc). Chạy gcloud topic arg-files
để tìm hiểu cách sử dụng tính năng này.
Giao diện dòng lệnh gcloud hỗ trợ Android Test Orchestrator.
Orchestrator yêu cầu AndroidJUnitRunner phiên bản 1.1 trở lên. Để bật tính năng này, hãy dùng gcloud firebase test android run
với cờ --use-orchestrator
. Để tắt tính năng này, hãy dùng cờ --no-use-orchestrator
.
Bạn cũng có thể kiểm soát cách Test Lab chạy các kiểm thử đo lường bằng những cờ bổ sung không xuất hiện ở trên. Ví dụ: bạn có thể dùng cờ --test-targets
để kiểm thử một lớp hoặc phương thức lớp duy nhất mà APK kiểm thử của bạn dùng. Bạn cũng có thể biết liệu kiểm thử không thành công có thực sự không ổn định hay không bằng cách sử dụng cờ --num-flaky-test-attempts
. Cờ này chỉ định số lần thực hiện kiểm thử cần được thử lại nếu một hoặc nhiều trường hợp kiểm thử của kiểm thử đó không thành công vì bất kỳ lý do nào. Để tìm hiểu thêm, hãy xem phần gcloud firebase test android run.
Báo cáo mức độ bao phủ mã cho kiểm thử đo lường
Test Lab hỗ trợ các công cụ báo cáo mức độ phù hợp của mã EMMA và JaCoCo. Nếu đã tích hợp một trong hai công cụ này vào bản dựng cho ứng dụng, bạn có thể nhận được báo cáo mức độ bao phủ mã cho các kiểm thử Test Lab bằng cách chạy gcloud firebase test android run
với một số đối số bổ sung. Nếu Android Test Orchestrator không được bật, hãy sử dụng nội dung sau:
gcloud firebase test android run \ --type instrumentation \ --appyour-app.apk \ --testyour-app-test.apk \ --device model=TestDevice ,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Nếu bạn đang tạo báo cáo về mức độ phù hợp của mã trong khi cũng sử dụng Android Test Orchestrator, hãy sửa đổi các biến môi trường như sau:
gcloud firebase test android run \ --type instrumentation \ --appyour-app.apk \ --testyour-app-test.apk \ --device model=TestDevice ,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Khi Test Lab chạy xong các bài kiểm thử, hãy tìm báo cáo về mức độ phù hợp của mã trong Google Cloud Storage:
- Mở đường liên kết đến bảng điều khiển Firebase mà công cụ
gcloud
đã in ở phía trên bảng kết quả kiểm thử trong cửa sổ dòng lệnh. - Nhấp vào một lần thực thi kiểm thử trong danh sách tại đường liên kết đó để mở trang chi tiết của lần thực thi đó.
- Nhấp vào Kết quả kiểm thử để chuyển đến nhóm Cloud Storage có kết quả kiểm thử của lần thực thi đó.
- Mở
artifacts/coverage.ec
để xem báo cáo về mức độ bao phủ mã.
Phân tích kết quả kiểm thử
Sau vài phút, công cụ gcloud sẽ in một bản tóm tắt cơ bản về kết quả kiểm thử:
Kết quả của quy trình kiểm thử qua dòng lệnh cũng bao gồm một đường liên kết để xem kết quả kiểm thử. Để tìm hiểu thêm về cách diễn giải những kết quả này, hãy xem bài viết Phân tích Firebase Test Lab cho Kết quả trên Android.
Đăng nhập tuỳ chỉnh và nhập văn bản bằng kiểm thử Robo
Kiểm thử bằng robot sẽ tự động hoàn tất các màn hình đăng nhập sử dụng tài khoản Google để xác thực, trừ phi bạn sử dụng tham số --no-auto-google-login
. Trình thu thập thông tin cũng có thể hoàn tất các màn hình đăng nhập tuỳ chỉnh bằng thông tin đăng nhập vào tài khoản thử nghiệm mà bạn cung cấp. Bạn cũng có thể dùng tham số này để cung cấp văn bản đầu vào tuỳ chỉnh cho các trường văn bản khác mà ứng dụng của bạn sử dụng.
Để hoàn tất các trường văn bản trong ứng dụng, hãy sử dụng tham số --robo-directives
và cung cấp danh sách các cặp key-value
được phân tách bằng dấu phẩy, trong đó key
là tên tài nguyên Android của phần tử đích trên giao diện người dùng và value
là chuỗi văn bản. Bạn cũng có thể dùng cờ này để yêu cầu Robo bỏ qua các phần tử cụ thể trên giao diện người dùng (ví dụ: nút "đăng xuất").
Các trường EditText
được hỗ trợ nhưng không phải là các trường văn bản trong phần tử giao diện người dùng WebView
.
Ví dụ: bạn có thể sử dụng tham số sau cho tính năng đăng nhập tuỳ chỉnh:
--robo-directives username_resource=username,password_resource=password
Các lệnh và cờ hiện có
Giao diện dòng lệnh Test Lab gcloud có một số lệnh và cờ cho phép bạn chạy các quy trình kiểm thử với nhiều quy cách:
Cờ Android Test Orchestrator: Một cờ để bật Orchestrator (Trình điều phối), một công cụ cho phép bạn chạy từng bài kiểm thử của ứng dụng trong lệnh gọi
Instrumentation
riêng. Test Lab luôn chạy phiên bản Orchestrator mới nhất.Cờ kiểm thử Vòng lặp trò chơi: Một tập hợp các cờ cấu hình cho phép và kiểm soát "chế độ minh hoạ" để mô phỏng hành động của người chơi trong các ứng dụng trò chơi. Tìm hiểu thêm về cách chạy Thử nghiệm vòng lặp trò chơi bằng Test Lab.
Cờ Phân đoạn đồng nhất (trong giai đoạn thử nghiệm beta): Một cờ chỉ định số lượng phân đoạn mà bạn muốn phân phối đều các trường hợp kiểm thử. Các phân đoạn được chạy song song trên các thiết bị riêng biệt.
Cờ phân đoạn thủ công (ở giai đoạn thử nghiệm beta): Một cờ chỉ định một nhóm các gói, lớp và/hoặc trường hợp kiểm thử để chạy trong một phân đoạn (một nhóm các trường hợp kiểm thử). Các phân đoạn được chạy song song trên các thiết bị riêng biệt.
Cờ hồ sơ lưu lượng truy cập mạng (trong giai đoạn thử nghiệm beta): Một cờ chỉ định hồ sơ mạng mà các bài kiểm thử của bạn sử dụng với các thiết bị thực. Hồ sơ mạng mô phỏng nhiều điều kiện mạng, cho phép bạn kiểm thử hiệu suất của ứng dụng trên các mạng không đáng tin cậy hoặc khó đoán.
Viết tập lệnh cho các lệnh gcloud bằng Test Lab
Bạn có thể sử dụng tập lệnh shell hoặc tệp hàng loạt để tự động hoá các lệnh kiểm thử ứng dụng di động mà bạn sẽ chạy bằng dòng lệnh gcloud. Tập lệnh bash ví dụ sau đây chạy một bài kiểm thử đo lường với thời gian chờ là 2 phút và báo cáo xem lượt chạy kiểm thử có hoàn tất thành công hay không:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Mã thoát của tập lệnh
Test Lab cung cấp một số mã thoát mà bạn có thể dùng để hiểu rõ hơn về kết quả của các kiểm thử mà bạn chạy bằng cách sử dụng tập lệnh hoặc tệp hàng loạt.
Mã thoát kịch bản cho Test Lab
Mã thoát | Lưu ý |
---|---|
0 | Đã vượt qua tất cả các lần thực thi kiểm thử. |
1 | Đã xảy ra lỗi chung. Nguyên nhân có thể là do: tên tệp không tồn tại hoặc lỗi HTTP/mạng. |
2 | Quá trình kiểm thử đã thoát vì bạn cung cấp các lệnh hoặc đối số không xác định. |
10 | Một hoặc nhiều trường hợp kiểm thử (các lớp hoặc phương thức lớp được kiểm thử) trong quá trình thực thi kiểm thử không vượt qua. |
15 | Firebase Test Lab không thể xác định xem ma trận kiểm thử có vượt qua hay không thành công, do một lỗi ngoài ý muốn. |
18 | Môi trường thử nghiệm cho lần thực thi thử nghiệm này không được hỗ trợ do các phương diện thử nghiệm không tương thích. Lỗi này có thể xảy ra nếu loại thiết bị đã chọn không hỗ trợ cấp độ API Android đã chọn. |
19 | Người dùng đã huỷ ma trận kiểm thử. |
20 | Đã xảy ra lỗi cơ sở hạ tầng kiểm thử. |