Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Bắt đầu thử nghiệm với CLI gcloud

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Hướng dẫn này mô tả cách chạy thử nghiệm thiết bị đo đạc, Robo hoặc Vòng lặp trò chơi bằng cách sử dụ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 của mình trong Test Lab, hãy truy cập tài liệu tham khảo dành cho gcloud firebase test android .

Trước khi bắt đầu

Nếu bạn chưa có, hãy thêm Firebase vào dự án Android của bạn .

Bước 1. Thiết lập gcloud CLI

  1. Tải xuống Google Cloud SDK.
  2. Điều này bao gồm công cụ gcloud CLI.

  3. Đảm bảo cài đặt của bạn được cập nhậ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. Đặt dự án Firebase của bạn trong gcloud, trong đó PROJECT_ID là ID của dự án Firebase của bạn:
    gcloud config set project PROJECT_ID
    

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

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

Như một tùy chọn, bạn cũng có thể tải xuống ứng dụng Notepad mẫu để 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 tra thiết bị đo đạc app-debug-test-unaligned.apk , nằm trong NotePad/app/build/outputs/apk/ .

  • models list : Nhận danh sách các thiết bị Android hiện có để bạn thử nghiệm.

    gcloud firebase test android models list
    

    Trong đầu ra lệnh:

    • Cột MODEL_ID chứa số nhận dạng mà sau này bạn có thể sử dụng để chạy thử nghiệm 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 được thiết bị hỗ trợ.

    đầu ra ví dụ

    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
    

    Đầu ra chứa thương hiệu, nhà sản xuất, phiên bản hệ điều hành của kiểu thiết bị, 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 và thiết bị là vật lý hay ảo.

  • versions list : Nhận danh sách các phiên bản hệ điều hành hiện có để kiểm tra.

    gcloud firebase test android versions list
    

    Bạn có thể sử dụng mã định danh từ một trong hai cột đầu tiên của đầu ra lệnh ( OS_VERSION_IDVERSION ), để sau này chạy thử nghiệm đối với phiên bản HĐH Android. Nếu bạn không chỉ định phiên bản hệ điều hành Android để kiểm tra, thì phiên bản mặc định được lưu ý trong cột TAGS sẽ được sử dụng.

    đầu ra ví dụ

    gcloud android versions list

  • locales list : Nhận danh sách ngôn ngữ hiện tại có sẵn để kiểm tra.

    gcloud firebase test android versions list
    

    Cột đầu tiên của đầu ra lệnh, LOCALE , chứa mã định danh mà bạn có thể sử dụng sau này để chạy thử nghiệm đối với một ngôn ngữ. Nếu bạn không chỉ định ngôn ngữ để kiểm tra, tiếng Anh sẽ được sử dụng làm ngôn ngữ mặc định.

chạy thử nghiệm

Giờ đây, bạn đã biết nhiều kiểu thiết bị, ngôn ngữ và phiên bản hệ điều hành có sẵn để thử nghiệm ứng dụng của mình, bạn có thể chỉ định thiết bị bằng cách sử dụng lệnh gcloud firebase test android run và cờ --device để chạy thử nghiệm Robo hoặc thiết bị.

Chạy thử nghiệm Robo

Ngay cả khi bạn không có bất kỳ bài kiểm tra thiết bị nào, bạn vẫn có thể tìm lỗi trong ứng dụng của mình. Sử dụng thử nghiệm Robo để thực hiện đánh giá tự động giao diện người dùng của ứng dụng. Thử nghiệm Robo thực hiện ứng dụng bằng cách 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 thông tin qua ứng dụng để tìm sự cố và các sự cố tiềm ẩn khác.

Hãy bắt đầu bằng cách chạy một lệnh ví dụ:

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

Tham số --type robo là ẩn nếu không có giá trị --type nào được chỉ định. Bạn có thể xem tập hợp đầy đủ các tùy chọn dòng lệnh để chạy thử nghiệm bằng cách nhập: gcloud help firebase test android run . Để thay thế cho việc chỉ định tất cả các đối số này trên dòng lệnh, bạn có thể tùy ý 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.

Xem phần Phân tích kết quả kiểm tra của bạn để tìm hiểu cách điều tra kết quả kiểm tra từ kiểm tra Robo.

Chạy thử nghiệm thiết bị của bạn

Bây giờ, hãy sử dụng công cụ dòng lệnh gcloud để chạy thử nghiệm Espresso của ứng dụng Notepad trên các cấu hình thiết bị Android được chỉ định của bạn. Sử dụng loại thử nghiệm instrumentation để chạy thử nghiệm 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

Tham số --type instrumentation ẩn nếu APK thử nghiệm đã được chỉ định với --test . Để thay thế cho việc chỉ định tất cả các đối số này trên dòng lệnh, bạn có thể tùy ý 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 . Dàn nhạc yêu cầu AndroidJUnitRunner v1.1 trở lên. Để kích hoạt nó, hãy sử dụng gcloud firebase test android run với
--use-orchestrator . Để tắt nó, 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 thử nghiệm thiết bị của mình 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 tra một lớp đơn lẻ hoặc một phương thức lớp mà APK thử nghiệm của bạn sử dụng. Bạn cũng có thể tìm hiểu xem thử nghiệm thất bại của mình có thực sự không ổn định hay không bằng cách sử dụng --num-flaky-test-attempts , chỉ định số lần thực hiện thử nghiệm sẽ được thử lại nếu một hoặc nhiều trường hợp thử nghiệm của nó thất bại vì bất kỳ lý do gì. Để tìm hiểu thêm, hãy xem gcloud firebase test android run .

Báo cáo phạm vi mã cho các bài kiểm tra thiết bị

Test Lab hỗ trợ các công cụ báo cáo phạm vi mã EMMAJaCoCo . Nếu bạn đã 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, thì bạn có thể nhận được báo cáo về phạm vi mã cho các thử nghiệm của 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 chưa được bật, hãy sử dụ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 coverage=true,coverageFile="/sdcard/Download/coverage.ec" \
  --directories-to-pull /sdcard/Download

Nếu bạn đang tạo báo cáo phạm vi mã trong khi cũng sử dụng Android Test Orchestrator, hãy sửa đổi các biến môi trường của bạn 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 thử nghiệm xong, hãy tìm các báo cáo về phạm vi mã của bạn trong Google Cloud Storage:

  1. Mở 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 tra trong thiết bị đầu cuối của bạn.
  2. Nhấp vào một lần thực thi thử nghiệm từ danh sách tại 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 tra để đi tới bộ chứa Lưu trữ đám mây với kết quả kiểm tra của lần thực thi đó.
  4. Mở artifacts/coverage.ec để xem báo cáo về phạm vi mã của bạn.

Phân tích kết quả kiểm tra của bạn

Sau một 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 tra của bạn:

Command test results

Đầu ra của quá trình chạy thử dòng lệnh của bạn cũng bao gồm một liên kết để xem kết quả kiểm tra. Để tìm hiểu thêm về cách diễn giải những kết quả này, hãy xem Phân tích phòng thí nghiệm kiểm tra Firebase cho kết quả Android .

Đăng nhập tùy chỉnh và nhập văn bản với Robo test

Kiểm tra rô-bốt 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ừ khi bạn sử dụng tham số --no-auto-google-login . Nó cũng có thể hoàn thành màn hình đăng nhập tùy chỉnh bằ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 tùy chỉnh cho các trường văn bản khác được ứng dụng của bạn sử dụng.

Để hoàn thành các trường văn bản trong ứng dụng của bạn, 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ử giao diện người dùng đích 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 phần tử giao diện người dùng cụ thể (ví dụ: nút "đăng xuất"). Các trường EditText được hỗ trợ nhưng không hỗ trợ các trường văn bản trong các phần tử Giao diện người dùng WebView .

Ví dụ: bạn có thể sử dụng tham số sau để đăng nhập tùy chỉnh:

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

Các lệnh và cờ có sẵn

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

  • Cờ Trình soạn thảo thử nghiệm Android : Cờ để bật Trình soạn thảo, một công cụ cho phép bạn chạy từng thử nghiệm của ứng dụng trong lệnh gọi Instrumentation riêng của ứng dụng đó. Test Lab luôn chạy phiên bản mới nhất của Orchestrator.

  • Cờ kiểm tra vòng lặp trò chơi : Một bộ cờ cấu hình cho phép và kiểm soát "chế độ demo" để 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 thử nghiệm Vòng lặp trò chơi với Test Lab .

  • Cờ phân đoạn thống nhất (trong phiên bản beta) : Cờ chỉ định số lượng phân đoạn mà bạn muốn phân bổ đồng đều các trường hợp thử nghiệm. Các phân đoạn được chạy song song trên các thiết bị riêng biệt.

  • Cờ Sharding thủ công (trong phiên bản beta) : Cờ chỉ định một nhóm các gói, lớp và/hoặc trường hợp kiểm tra sẽ chạy trong một phân đoạn (một nhóm trường hợp kiểm tra). Các phân đoạn được chạy song song trên các thiết bị riêng biệt.

  • Cờ cấu hình lưu lượng truy cập mạng (ở phiên bản beta) : Cờ chỉ định cấu hình mạng nào mà các thử nghiệm của bạn sử dụng với các thiết bị vật lý. Cấu hình mạng mô phỏng nhiều điều kiện mạng khác nhau, cho phép bạn kiểm tra hiệu suất của ứng dụng trên các mạng không đáng tin cậy hoặc không thể đoán trước.

Viết lệnh gcloud với Test Lab

Bạn có thể sử dụng tập lệnh shell hoặc tệp bó để tự động hóa các lệnh thử nghiệm ứng dụng dành cho thiết bị di động mà nếu không bạn sẽ chạy bằng dòng lệnh gcloud. Tập lệnh bash ví dụ sau chạy thử nghiệm thiết bị với thời gian chờ hai phút và báo cáo nếu quá trình chạy thử nghiệm hoàn tất 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 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ả của các thử nghiệm mà bạn chạy bằng tập lệnh hoặc tệp bó.

Viết mã thoát cho Test Lab

mã thoát ghi chú
0 Tất cả các lần thực hiện kiểm tra đã được thông qua.
1 Một thất bại chung xảy ra. 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 Kiểm tra đã thoát vì các lệnh hoặc đối số không xác định đã được cung cấp.
10 Một hoặc nhiều trường hợp kiểm tra (các lớp hoặc phương thức lớp đã kiểm tra) trong một lần thực hiện kiểm tra đã không vượt qua.
15 Phòng thí nghiệm kiểm tra Firebase không thể xác định xem ma trận kiểm tra có đạt hay không do lỗi không mong muốn.
18 Môi trường thử nghiệm để thực hiện thử nghiệm này không được hỗ trợ do kích thước thử nghiệm 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 Ma trận kiểm tra đã bị hủy bởi người dùng.
20 Đã xảy ra lỗi cơ sở hạ tầng thử nghiệm.