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

Hướng dẫn này mô tả cách chạy kiểm thử đo lường, Robo hoặc Vòng lặp trò chơi bằng gcloud CLI.

Để biết danh sách đầy đủ các lệnh gcloud mà bạn có thể sử 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

  1. Tải Google Cloud SDK xuống
  2. Trong đó có công cụ dòng lệnh gcloud.

  3. Đảm bảo rằng bạn đã cài đặt phiên bản mới nhất:
    gcloud components update
    
  4. Đăng nhập vào CLI gcloud bằng Tài khoản Google của bạn:
    gcloud auth login
    
  5. Thiết lập dự án Firebase trong gcloud, trong đó PROJECT_ID là mã nhận dạng của dự án Firebase:
    gcloud config set project PROJECT_ID
    

Bước 2. Kiểm tra các thiết bị kiểm thử có sẵn

Sử dụng các lệnh gcloud sau để xem các thiết bị kiểm thử và ngôn ngữ có sẵn cho kiểm thử của bạn.

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 hiện tại gồm các thiết bị Android mà bạn có thể dùng để kiểm thử.

    gcloud firebase test android models list
    

    Trong kết quả lệnh:

    • Cột MODEL_ID chứa giá trị 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ợ.

    Kết quả mẫu

    gcloud firebase test android models list output

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

    gcloud firebase test android models describe MODEL_ID
    

    Kết quả chứa thương hiệu, nhà sản xuất, phiên bản hệ điều hành, 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 và liệu thiết bị đó có phải 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 kết quả lệnh (OS_VERSION_IDVERSION) để sau này chạy 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ột TAGS.

    Kết quả mẫu

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

  • locales list: Lấy danh sách ngôn ngữ hiện có để kiểm thử.

    gcloud firebase test android versions list
    

    Cột đầu tiên của kết quả 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ử theo 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 chương trình kiểm thử

Giờ đây, khi đã biết phạm vi 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 các thiết bị bằng lệnh gcloud firebase test android run và cờ --device để chạy kiểm thử đo lường hoặc Robo.

Chạy kiểm thử Robo

Ngay cả khi không có chương trình kiểm thử đo lường nào, bạn vẫn có thể tìm lỗi trong ứng dụng. Hãy sử dụng chương trình kiểm thử Robo để tự động xem xét giao diện người dùng của ứng dụng. Kiểm thử Robo thực thi ứng dụng bằng cách phân tích tĩnh các đường dẫn thông qua giao diện người dùng của ứng dụng, sau đó thu thập thông tin qua ứng dụng để tìm sự cố và các vấn đề tiềm ẩn khác.

Để chạy kiểm thử 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 ẩn nếu bạn không chỉ định giá trị --type.
  • Để giúp bạn xác định và định vị các ma trận kiểm thử 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 cho ma trận kiểm thử.
  • Bạn có thể xem bộ tuỳ chọn dòng lệnh đầy đủ để 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ể chỉ định đối số trong 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 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á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"
  • Thông số đo lường --type được ngầm ẩn nếu bạn chỉ định APK kiểm thử bằng --test.
  • Để giúp bạn xác định và định vị các ma trận kiểm thử trong bảng điều khiển 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 cho ma trận kiểm thử.
  • Bạn có thể xem bộ tuỳ chọn dòng lệnh đầy đủ để 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ể chỉ định đối số trong 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. Trình điều phối yêu cầu AndroidJUnitRunner phiên bản 1.1 trở lên. Để bật tính năng này, hãy sử dụng gcloud firebase test android run 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 Test Lab chạy kiểm thử đo lường bằng cách sử dụng các cờ bổ sung không 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 một phương thức lớp mà APK kiểm thử của bạn sử dụng. Bạn cũng có thể tìm hiểu xem quy trình kiểm thử không thành công của mình 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 thi kiểm thử cần được thử lại 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 phần gcloud firebase test android run.

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

Test Lab hỗ trợ các công cụ báo cáo phạm vi mã EMMAJaCoCo. 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 độ sử dụng mã cho các bài 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 bạn chưa bật Android Test Orchestrator, hãy sử dụng các bước 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ã đồng thời sử dụng Trình điều phối kiểm thử Android, 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 Test Lab chạy xong các bài 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 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 thiết bị đầu cuối.
  2. 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 đó.
  3. Nhấp vào Kết quả kiểm thử để chuyển đến bộ chứa Cloud Storage có kết quả kiểm thử của quá trình 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 một 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ử 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.

Nhập văn bản và đăng nhập tuỳ chỉnh bằng kiểm thử Robo

Kiểm thử Robo 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 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ể 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 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 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 giao diện người dùng cụ thể (ví dụ: "đă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 đây để đăng nhập tuỳ chỉnh:

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

Các lệnh và cờ hiện có

Test Lab gcloud CLI có một số lệnh và cờ cho phép bạn chạy các chương trình kiểm thử với nhiều thông số kỹ thuật:

  • Cờ Android Test Orchestrator: Cờ để bật 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 mới nhất của Trình điều phối.

  • 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à kiểm soát "chế độ minh hoạ" để mô phỏng hành động của người chơi trong ứng dụng trò chơi. Tìm hiểu thêm về cách chạy Kiểm thử vòng lặp trò chơi bằng Test Lab.

  • Cờ phân đoạn đồng nhất (đang thử nghiệm): 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 mảnh được chạy song song trên các thiết bị riêng biệt.

  • Cờ phân đoạn thủ công (đang thử nghiệm): Một 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 trường hợp kiểm thử). Các mảnh đượ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 (đang thử nghiệm): 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 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ó dự đ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 mẫu sau đây chạy một kiểm thử đo lường với thời gian chờ hai phút và báo cáo nếu quá trình kiểm thử chạy thành cô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ể sử dụng để hiểu rõ hơn về kết quả kiểm thử mà bạn chạy bằng tập lệnh hoặc tệp hàng loạt.

Mã thoát tập lệnh cho Test Lab

Mã thoát Lưu ý
0 Tất cả các lần thực thi kiểm thử đều đạt.
1 Đã xảy ra lỗi chung. Một số nguyên nhân có thể là: 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 do 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 đã kiểm thử) trong một quá trình thực thi kiểm thử không đạt.
15 Firebase Test Lab không thể xác định xem ma trận kiểm thử đã vượt qua hay không thành công do một lỗi ngoài dự kiến.
18 Môi trường kiểm thử cho quá trình thực thi kiểm thử này không được hỗ trợ do các phương diện kiểm thử 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ử.