Kiểm thử bằng Google Cloud CLI

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

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

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

  3. Đảm bảo bản cài đặt của bạn là bản mới nhất và có chứa 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. Đặ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

Bước 2: Chạy thử nghiệm

Chạy XCTest

  1. Tải tệp .zip của chương trình 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, hãy xem phần Đó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 thử nghiệm.

    Test Lab cho phép bạn chạy kiểm thử trên nhiều phiên bản iOS, thiết bị, hướng màn hình và ngôn ngữ. Các cấu hình này được gọi là phương diện thử nghiệm của thử nghiệm. Để xem các tuỳ chọn cho từng 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ị), hãy 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 lựa chọn duy nhất của hướng màn hình là portrait và landscape.

    Xem danh sách các phương diện thử nghiệm và chọn một vài kiểu kết hợp mà bạn muốn chạy thử nghiệm. Hãy truy cập vào Gói giá để xem số lượng kết hợp tối đa mà bạn có thể chạy mỗi ngày.

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

    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 không tương thích giữa phiên bản Xcode mà thử nghiệm được xây dựng và phiên bản Xcode mặc định mà Test Lab sử dụng. Để chỉ định một phiên bản Xcode được hỗ trợ cho kiểm thử, 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à tìm ma trận thử nghiệm trong bảng điều khiển Firebase, bạn có thể gắn nhãn cho ma trận thử nghiệm bằng cách sử dụng 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"

Kiểm thử quyền đặc biệt

Để kiểm thử các quyền yêu cầu một Mã ứng dụng rõ ràng, bạn có thể thực hiện bằng cách đặt cờ --test-special-entitlements. Test Lab ký lại ứng dụng bằng một mã nhận dạng gói mới để hỗ trợ các quyền đặc biệt, vì vậy, hãy đảm bảo rằng không có tài nguyên nào trong tệp zip chứa tệp đối chiếu trực tiếp đến mã 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 mã thông báo web JSON bằng cách sử dụng khoá ký riêng tư cùng với Mã khoá – C7FD9DJAA8 và Mã nhóm – 9CKCGNNUQN. Mã thông báo được tạo sẽ có hiệu lực trong một giờ và cần được làm mới sau mỗi 60 phút. Đọc thêm về cách 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 là duy nhất trên toàn cầu. Điều này có nghĩa là khi ký lại ứng dụng của người dùng, chúng tôi 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 Test Lab. Nếu thử nghiệm của bạn dựa vào các nhóm ứng dụng, thì thử nghiệm đó sẽ không thành công.

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

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

Cờ cho các thử nghiệm 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 các 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 (hay còn gọi là kịch bản) mà bạn muốn chạy trong ứng dụng. Bạn có thể nhập một vòng lặp, một danh sách hoặc các vòng lặp, hoặc một dải vòng lặp. Giá trị mặc định của vòng lặp là 1.

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

--device-model

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

--timeout

Thời lượng tối đa mà bạn muốn chạy thử nghiệm. 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ị thời lượng dưới dạng đơn vị thời gian dài hơn.

Ví dụ:

  • --timeout=200 buộc quá trình kiểm thử phải chấm dứt khi chạy đến 200 giây.
  • --timeout=1h buộc thử nghiệm của bạn phải chấm dứt khi chạy đến một giờ.

Ví dụ: lệnh sau đây chạy một thử nghiệm Vòng lặp trò chơi thực thi các 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 bạn tạo trong tương lai

Tạo 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 bó để 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 này chạy một XCTest với thời gian chờ là 2 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 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

Test Lab 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 chương trình kiểm thử mà bạn chạy bằng tập lệnh hoặc tệp bó.

Mã thoát Ghi chú
0 Đã vượt qua tất cả các phiên chạy thử nghiệm.
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ì 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 được kiểm thử) trong một phiên chạy thử nghiệm không đạt.
15 Firebase Test Lab không thể xác định xem ma trận thử nghiệm đã đạt hay không đạt do xảy ra lỗi không mong muốn.
19 Người dùng đã huỷ ma trận thử nghiệm.
20 Đã xảy ra lỗi cơ sở hạ tầng kiểm thử.

Bước 4: Kiểm tra kết quả kiểm thử

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

Bước tiếp theo

Đọc tài liệu về SDK Google Cloud để khám phá các lựa chọn kiểm thử giai đoạn phát hành rộng rãi hoặc đang ở giai đoạn thử nghiệm.