Bắt đầu kiểm thử bằng gcloud CLI

Hướng dẫn này mô tả cách chạy một quy trình kiểm thử đo lường, Robo hoặc vòng lặp trò chơi bằng cách sử dụ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 Phòng thử nghiệm, hãy truy cập tài liệu tham khảo về gcloud firebase test android.

Trước khi bắt đầu

Thêm Firebase vào dự án Android của bạn nếu bạn chưa thực hiện.

Bước 1. Thiết lập giao diện dòng lệnh (CLI) của gcloud

  1. Tải Google Cloud SDK xuống
  2. Trong đó có cả công cụ CLI của gcloud.

  3. Hãy đảm bảo bạn đã cập nhật bản cài đặt:
    gcloud components update
    
  4. Đăng nhập vào gcloud CLI bằng Tài khoản Google của bạn:
    gcloud auth login
    
  5. Thiết lập 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
    

Bước 2. Kiểm tra các thiết bị thử nghiệm hiện có

Sử dụng các lệnh gcloud sau đây để xem các thiết bị kiểm thử và ngôn ngữ có thể sử dụng cho quy trình 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, nằm trong NotePad/app/build/outputs/apk/.

  • models list: Lấy danh sách thiết bị Android hiện có mà bạn có thể kiểm thử.

    gcloud firebase test android models list
    

    Trong dữ liệu đầu ra lệnh:

    • Cột MODEL_ID chứa giá trị nhận dạng mà sau này bạn có thể sử dụng để chạy kiểm thử trên mẫu 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ợ.

    Kết quả mẫu

    đầu ra của danh sách mô hình Android thử nghiệm gcloud firebase

  • models describe: Xem thêm thông tin về một MODEL_ID trên Android cụ thể.

    gcloud firebase test android models describe MODEL_ID
    

    Dữ liệu đầ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 của ứng dụng (ABI) được hỗ trợ, ngày phát hành 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 ra của lệnh (OS_VERSION_IDVERSION) để sau đó chạy kiểm thử trên 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 giá trị mặc định được ghi chú trong cột TAGS.

    Kết quả mẫu

    danh sách các phiên bản Android của gcloud

  • locales list: Lấy danh sách ngôn ngữ hiện có sẵn để 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ể sử dụng sau này để chạy kiểm thử cho 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 mẫu thiết bị, ngôn ngữ và phiên bản hệ điều hành hiện có để kiểm thử ứng dụng, bạn có thể chỉ định các thiết bị bằng cách sử dụng lệnh gcloud firebase test android run và cờ --device để chạy Robo hoặc kiểm thử đo lường.

Chạy thử nghiệm Robo

Ngay cả khi không có bất kỳ bài 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 quy trình kiểm thử Robo để thực hiện quy trình đánh giá tự động giao diện người dùng của ứng dụng. Kiểm thử Robo tập luyện ứng dụng bằng cách thực hiện phân tích tĩnh về 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 thông tin trong ứng dụng để tìm sự cố và các vấn đề tiềm ẩn khác.

Để chạy thử nghiệm Robo, hãy chạy lệnh mẫu 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 được ngầm định nếu không có giá trị --type nào được chỉ định.
  • Để xác định và định vị ma trận thử nghiệm trong bảng điều khiển của Firebase, bạn có thể sử dụng cờ --client-details matrixLabel="Example matrix label" (không bắt buộc) để gắn nhãn ma trận thử nghiệm của mình.
  • Bạn có thể xem tập hợp đầy đủ các tuỳ chọn dòng lệnh để chạy kiểm thử bằng cách nhập: gcloud help firebase test android run.

Thay vì chỉ định các đối số này trên dòng lệnh, bạn có thể tuỳ ý chỉ định các đối số của mình trong tệp đối số có định dạng YAML. 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 kiểm 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ử của bạn.

Chạy bài kiểm thử đo lường

Bây giờ, hãy sử dụng công cụ dòng lệnh gcloud để chạy các chương trình kiểm thử Espresso của ứng dụng Notepad trên cấu hình thiết bị Android đã chỉ định. Sử dụng loại kiểm thử instrumentation để chạy 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 được ngầm định nếu APK kiểm thử được chỉ định bằng --test.
  • Để xác định và định vị ma trận thử nghiệm trong bảng điều khiển của Firebase, bạn có thể sử dụng cờ --client-details matrixLabel="Example matrix label" (không bắt buộc) để gắn nhãn ma trận thử nghiệm của mình.
  • Bạn có thể xem tập hợp đầy đủ các tuỳ chọn dòng lệnh để chạy kiểm thử bằng cách nhập gcloud help firebase test android run.

Thay vì chỉ định các đối số này trên dòng lệnh, bạn có thể tuỳ ý chỉ định các đối số của mình trong tệp đối số có định dạng YAML. Chạy gcloud topic arg-files để tìm hiểu cách sử dụng tính năng này.

gcloud CLI hỗ trợ Android Test Orchestrator. Orchestrator yêu cầu AndroidJUnitRunner phiên bản 1.1 trở lên. Để bật chế độ này, hãy sử dụng gcloud firebase test android run cùng với cờ
--use-orchestrator. Để tắt tính năng này, hãy sử dụng cờ --no-use-orchestrator.

Bạn cũng có thể kiểm soát cách Phòng thử nghiệm chạy các kiểm thử đo lường bằng cách sử dụng các cờ bổ sung không được hiển thị ở trên. Ví dụ: bạn có thể sử dụng cờ --test-targets để kiểm thử một lớp hoặc phương thức lớp mà APK kiểm thử sử dụng. Bạn cũng có thể tìm hiểu xem chương trình 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 nên thử lại quy trình kiểm thử nếu một hoặc nhiều trường hợp kiểm thử không thành công vì bất kỳ lý do gì. Để tìm hiểu thêm, hãy xem bài viết gcloud firebase test android run.

Báo cáo mức độ sử dụng mã cho kiểm thử đo lường

Phòng thử nghiệm hỗ trợ các công cụ báo cáo mức độ sử dụng mã EMMAJaCoCo. Nếu đã tích hợp một trong hai công cụ vào bản dựng cho ứng dụng của mình, bạn có thể nhận báo cáo mức độ sử dụng mã cho các kiểm thử trong Phòng thử nghiệm 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 chưa được bật, hãy sử dụng những nội dung sau:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-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 mức độ sử dụng mã trong khi vẫn 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 \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \
  --directories-to-pull /sdcard/Download

Khi Phòng thử nghiệm chạy xong các quy trình kiểm thử, hãy tìm báo cáo mức độ sử dụng mã trong Google Cloud Storage:

  1. Mở đường liên kết đến bảng điều khiển của Firebase mà công cụ gcloud đã in phía trên bảng kết quả kiểm thử trong thiết bị đầu cuối của bạn.
  2. Nhấp vào một phiên chạy thử nghiệm trong danh sách tại đường liên kết đó để mở trang chi tiết của phiên thực thi đó.
  3. Nhấp vào Test results (Kết quả kiểm thử) để chuyển đến bộ chứa Cloud Storage chứa kết quả kiểm thử của tệp thực thi đó.
  4. Mở artifacts/coverage.ec để xem báo cáo mức độ sử dụng mã.

Phân tích kết quả kiểm thử

Sau vài phút, công cụ gcloud sẽ in bản tóm tắt cơ bản về kết quả kiểm thử:

Kết quả kiểm thử lệnh

Kết quả của lần chạy kiểm thử 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 các kết quả này, hãy xem bài viết Phân tích Phòng thử nghiệm Firebase cho kết quả Android.

Thông tin đăng nhập và nhập văn bản tuỳ chỉnh thông qua bài kiểm tra Robo

Quá trình kiểm thử Robo 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. Ứng dụng này cũng có thể hoàn tất màn hình đăng nhập tuỳ chỉnh bằng cách sử dụng thông tin đăng nhập tài khoản thử nghiệm mà bạn cung cấp. Bạn cũng có thể sử dụng tham số này để cung cấp văn bản nhập tuỳ chỉnh cho các trường văn bản khác mà ứng dụng của bạn dùng.

Để hoàn tất các trường văn bản trong ứng dụng, hãy 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 thành phần giao diện người dùng mục tiêu và value là chuỗi văn bản. Bạn cũng có thể sử dụng cờ này để yêu cầu Robo bỏ qua các thành phần 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 được hỗ trợ các trường văn bản trong các phần tử trên giao diện người dùng WebView.

Ví dụ: bạn có thể sử dụng thông số sau để đăng nhập tuỳ chỉnh:

--robo-directives username_resource=username,password_resource=password

Lệnh và cờ có sẵn

gcloud CLI của Phòng thử nghiệm có sẵn một số lệnh và cờ cho phép bạn chạy các kiểm thử với các thông số kỹ thuật khác nhau:

  • Cờ Android Test Orchestrator: Một cờ để bật công cụ đ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. Phòng thử nghiệm luôn chạy phiên bản mới nhất của Orchestrator.

  • Cờ kiểm thử vòng lặp trò chơi: Một tập hợp cờ cấu hình cho phép và điều khiển "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 bản thử nghiệm beta): Cờ chỉ định số lượng phân đoạn mà bạn muốn phân phối đồng đều các trường hợp kiểm thử. Phân đoạn chạy song song trên các thiết bị riêng biệt.

  • Cờ phân đoạn thủ công (ở bản thử nghiệm): Cờ chỉ định một nhóm 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 bản thử nghiệm): Cờ chỉ định hồ sơ mạng mà các 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 gcloud bằng Phòng thử nghiệm

Bạn có thể sử dụng các tập lệnh shell hoặc tệp lô để tự động hoá các lệnh kiểm thử ứng dụng di động mà bạn thường chạy bằng dòng lệnh gcloud. Tập lệnh bash mẫu 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 bài kiểm thử đã chạy thành công hay chưa:

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

Phòng thử nghiệm 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 hoạt động kiểm thử mà bạn chạy bằng tập lệnh hoặc tệp hàng loạt.

Viết mã thoát cho Phòng thử nghiệm

Mã thoát Lưu ý
0 Đã vượt qua tất cả các lần chạy thử nghiệm.
1 Đã xảy ra lỗi chung. Các nguyên nhân có thể bao gồm: tên tệp không tồn tại hoặc lỗi HTTP/mạng.
2 Đã thoát khỏi quá trình kiểm thử do 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ử (lớp hoặc phương thức lớp đã kiểm thử) trong quá trình thực thi kiểm thử không đạt.
15 Phòng thử nghiệm Firebase không thể xác định liệu ma trận thử nghiệm đạt hay không thành công do lỗi không mong muốn.
18 Môi trường kiểm thử cho lần chạy kiểm thử này không được hỗ trợ do các kích thước kiểm thử không tương thích. Lỗi này có thể xảy ra nếu cấp độ API Android đã chọn không được loại thiết bị đã chọn hỗ trợ.
19 Người dùng đã huỷ ma trận kiểm thử.
20 Đã xảy ra lỗi kiểm thử cơ sở hạ tầng.