Kiểm thử bằng Google Cloud CLI

Hướng dẫn này mô tả cách chạy quy trình kiểm thử XCTest hoặc Vòng lặp trò chơi bằng gcloud CLI.

Bước 1: Định cấu hình môi trường Google Cloud SDK cục bộ

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

  3. Đảm bảo bản cài đặt của bạn đã được cập nhật và bao gồm lệnh gcloud firebase:
          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: Chạy kiểm thử

Chạy XCTest

  1. Tải tệp .zip của bài kiểm thử lên bằng cách chạy lệnh sau (nếu bạn chưa đóng gói ứng dụng của bạn, hãy xem Đóng gói XCTest):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Chọn phương diện kiểm thử.

    Phòng thử nghiệm cho phép bạn chạy thử nghiệm trên nhiều phiên bản iOS, thiết bị, hướng và ngôn ngữ. Những cấu hình này được gọi là cấu hình kiểm thử các tham số kiểm thử. Để xem các lựa chọn cho mỗi phương diện (ví dụ: các phiên bản Xcode được hỗ trợ cho phiên bản iOS của thiết bị), thay thế models, versions hoặc locales cho dimension trong lệnh sau:

    gcloud firebase test ios dimension list

    Hướng màn hình có phần đơn giản hơn, vì các tuỳ chọn duy nhất của màn hình là portraitlandscape.

    Xem qua danh sách tham số thử nghiệm và chọn một vài kết hợp bạn muốn chạy chương trình kiểm thử của bạn trên đó. Truy cập vào phần Gói giá để xem số lượng tổ hợp tối đa bạn có thể chạy mỗi ngày.

  3. Sau khi chọn một bộ phương diện kiểm thử, bạn có thể chạy Phòng thử nghiệm kiểm thử bằng lệnh firebase test ios run. Đối với mỗi tổ hợp các phương diện kiểm thử mà bạn muốn kiểm thử, hãy bao gồm một cờ --device riêng biệt:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    Có thể thử nghiệm của bạn sẽ không thành công do sự không tương thích giữa phiên bản Xcode với bản thử nghiệm được tạo và phiên bản Xcode mặc định mà Phòng thử nghiệm sử dụng. Để chỉ định một phiên bản Xcode được hỗ trợ cho thử nghiệm của bạn, hãy sử dụng cờ --xcode-version:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Để 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ể tuỳ ý gắn nhãn ma trận thử nghiệm bằng cách sử dụng Gắn cờ --client-details matrixLabel="<label>" trong ví dụ sau:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

Các quyền đặc biệt dành cho hoạt động thử nghiệm

Để kiểm thử những quyền yêu cầu mã ứng dụng rõ ràng, bạn có thể thực hiện bằng cách đặt cờ --test-special-entitlements. Phòng thử nghiệm ký lại ứng dụng bằng một mã nhận dạng gói mới để hỗ trợ nên hãy đảm bảo rằng không có tài nguyên nào trong tệp zip của bạn có chứa thông tin tham chiếu trực tiếp đến giá trị nhận dạng gói của ứng dụng.

Các quyền được hỗ trợ:
  1. Thông báo đẩy apns-environment
  2. VPN cá nhân com.apple.developer.networking.vpn.api
Thông báo đẩy

Để cho phép các yêu cầu thông báo đẩy, người dùng có thể tạo trang web JSON bằng cách sử dụng khoá ký cùng với Mã khoá – C7FD9DJAA8 và Mã nhóm – 9CKCGNNUQN. Mã thông báo đã tạo sẽ hợp lệ cho một giờ và cần được làm mới mỗi 60 phút. Đọc thêm trên Thiết lập kết nối dựa trên mã thông báo với APN.

Nhóm ứng dụng

Mã nhóm ứng dụng không trùng lặp trên toàn cầu. Điều này có nghĩa là khi chúng tôi ký lại ứng dụng của người dùng, chúng ta chỉ có thể sử dụng mã nhóm ứng dụng được liên kết với tài khoản nhà phát triển trong Phòng thử nghiệm. Nếu thử nghiệm của bạn dựa vào trên các nhóm ứng dụng, thử nghiệm của bạn sẽ không thành công.

Chạy kiểm thử Vòng lặp trò chơi

Chạy lệnh gcloud beta firebase test ios run và sử dụng các lệnh sau cờ để định cấu hình chạy:

Cờ cho kiểm thử Vòng lặp trò chơi
--type

Bắt buộc: Chỉ định loại thử nghiệm iOS mà bạn muốn chạy. Bạn có thể nhập loại kiểm thử xctest (mặc định) hoặc game-loop.

--app

Bắt buộc: Đường dẫn tuyệt đối (GCS hoặc hệ thống tệp) đến tệp IPA của ứng dụng. Cờ này chỉ hợp lệ khi chạy kiểm thử Vòng lặp trò chơi.

--scenario-numbers

Vòng lặp (còn gọi là các trường hợp) mà bạn muốn chạy trong ứng dụng của mình. Bạn có thể nhập một vòng lặp, một danh sách hoặc vòng lặp hay một dải vòng lặp. Vòng lặp mặc định là 1.

Ví dụ: --scenario-numbers=1-3,5 chạy vòng lặp 1, 2, 3 và 5.

--device-model

Thiết bị thực mà bạn muốn chạy bài kiểm thử (tìm hiểu các thiết bị có thể sử dụng bạn có thể sử dụng).

--timeout

Khoảng thời gian tối đa mà bạn muốn chạy chương trình kiểm thử. Bạn có thể nhập một số nguyên để biểu thị thời lượng tính bằng giây hoặc một số nguyên và giá trị liệt kê để biểu thị dưới dạng đơn vị thời gian dài hơn.

Ví dụ:

  • --timeout=200 buộc kiểm thử phải chấm dứt khi chạy lên đến 200 giây.
  • --timeout=1h buộc kiểm thử phải chấm dứt khi chạy được đến 1 giờ.

Ví dụ: lệnh sau đây chạy một quy trình kiểm thử Vòng lặp trò chơi để thực thi vòng lặp 1, 4, 6, 7 và 8 trên iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

Để biết thêm thông tin về gcloud CLI, hãy xem tài liệu tham khảo.

Bước 3 (Không bắt buộc): Tự động hoá các thử nghiệm mà bạn xây dựng trong tương lai

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 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. Đây là bash mẫu tập lệnh chạy một XCTest với thời gian chờ là 2 phút và báo cáo nếu lần chạy thử nghiệm đó đã hoàn tất thành công:

if gcloud firebase test ios run --test MyTest.zip --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ể sử dụng để hiểu rõ hơn kết quả của các thử nghiệm mà bạn chạy bằng cách sử dụng tập lệnh hoặc tệp lô.

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 một 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 có vượt qua hoặc không thành công do lỗi không mong muốn.
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.

Bước 4: Điều tra kết quả thử nghiệm

Khi kiểm tra bắt đầu, bạn sẽ nhận được một đường liên kết đến trang Kết quả kiểm tra. Thử nghiệm có thể sẽ mất vài phút để chạy, tuỳ thuộc vào số lượng giá trị khác nhau các cấu hình bạn đã chọn và thời lượng hết thời gian chờ thử nghiệm được đặt cho kiểm thử. Sau khi thử nghiệm chạy xong, bạn có thể xem lại kết quả thử nghiệm. Xem Phân tích kết quả trong Phòng thử nghiệm Firebase để tìm hiểu thêm về cách diễn giải kết quả kiểm thử.

Bước tiếp theo

Hãy đọc tài liệu về Google Cloud SDK để khám phá các lựa chọn thử nghiệm thường được cung cấp hoặc trong phiên bản thử nghiệm.