Thư viện SDV Test Framework

Trang này cung cấp thông tin tổng quan về thư viện Khung kiểm thử SDV và hướng dẫn bạn cách thiết lập, định cấu hình và thực thi các kiểm thử. Sử dụng Khung kiểm thử SDV để kiểm thử toàn diện. Công cụ này dựa trên Mobly; bạn viết các bài kiểm thử bằng Python.

Thiết lập môi trường

Trang này giả định rằng bạn đã thiết lập máy trạm cho SDV. Để chạy kiểm thử Framework, hãy cài đặt virtualenv.

Phần phụ thuộc Python

Phương pháp được đề xuất để quản lý các phần phụ thuộc trong Android là đóng gói các kiểm thử, Python và các phần phụ thuộc của chúng dưới dạng một tệp thực thi bằng cách sử dụng cấu hình bản dựng. Bạn phải làm theo phương pháp này trong kho lưu trữ kiểm thử SDV.

Theo mặc định, thư viện SDV Test Framework cung cấp các phần phụ thuộc sau:

  • mobly
  • absl-py Bắt buộc phải sử dụng tham số hoá trong kiểm thử.
  • pexpect Bắt buộc đối với chức năng lệnh tương tác.
  • ptyprocess Bắt buộc đối với chức năng lệnh tương tác.

Nếu bạn cần các phần phụ thuộc dành riêng cho kiểm thử, hãy thêm các phần phụ thuộc đó vào tệp Android.bp của kiểm thử:

python_test_host {
    …
    libs: [
        "<DEPENDENCY1",
        "<DEPENDENCY2",
        …
    ],
    …
}

Các loại kiểm tra hệ thống

Bạn tạo các kiểm thử hệ thống bằng Khung kiểm thử SDV. Khung phân biệt giữa các loại sau. Phân loại chính xác các bài kiểm tra:

  • Kiểm thử mẫu: Thực thi các dịch vụ mẫu SDV và xác minh rằng kết quả khớp với đầu ra dự kiến.
  • Kiểm thử E2E: Không sử dụng các dịch vụ mẫu SDV.
  • Kiểm thử chạy trong thời gian dài: Được thiết kế cho các khoảng thời gian thực thi kéo dài.
  • Kiểm thử hiệu suất: Sử dụng thư viện perfetto.
  • Kiểm thử phần cứng: Được thiết kế để chỉ thực thi trên một thiết bị thực, chứ không phải trong Cuttlefish (CF).

Tạo một bài kiểm tra

Tất cả các kiểm thử được viết bằng khung này phải nằm trong kho lưu trữ kiểm thử. Vị trí chính xác của kiểm thử phụ thuộc vào loại kiểm thử.

Định cấu hình một kiểm thử

Định cấu hình tất cả các kiểm thử để chạy bằng cả atest và CATBox.

Định cấu hình atest

Khung này cung cấp các mẫu cho một, hai và ba bài kiểm thử máy ảo (VM). Thêm đoạn mã sau vào tệp Android.bp:

One VM

python_test_host {
  ...
  test_config_template: ":sdv_one_device",
}

Hai máy ảo

python_test_host {
  ...
  test_config_template: ":sdv_two_devices",
}

Ba máy ảo

python_test_host {
  ...
  test_config_template: ":sdv_three_devices",
}

Mẫu mặc định là đủ cho hầu hết các kiểm thử. Tránh tạo cấu hình tuỳ chỉnh trừ phi có lý do chính đáng.

Cập nhật thời gian chờ mặc định

Thời gian chờ mặc định phải đủ để thực thi các kiểm thử cục bộ.

Nếu kiểm thử của bạn không thành công cục bộ do hết thời gian chờ, hãy cân nhắc việc chia kiểm thử đó thành nhiều kiểm thử. Các kiểm thử rất dài với nhiều trường hợp kiểm thử có thể gây ra tình trạng tắc nghẽn trong quá trình thực thi.

Nếu bạn phải đặt thời gian chờ cao hơn thời gian chờ mặc định, hãy đọc tiếp.

Ghi đè thời gian chờ mặc định

Khung này không hỗ trợ việc mở rộng mẫu để thực thi atest. Do đó, hãy sử dụng các mẫu được cung cấp có thời gian chờ kéo dài.

Một bài kiểm thử dài trên VM

python_test_host {
  ...
  test_config_template: ":sdv_one_device_long_test",
}

Kiểm thử dài trên 2 VM

python_test_host {
  ...
  test_config_template: ":sdv_two_devices_long_test",
}

Thêm một bình luận nêu rõ mục đích sử dụng mẫu này và giải thích lý do cần có thời gian kéo dài (ví dụ: nếu kiểm thử yêu cầu tải một cấu phần phần mềm xuống và việc này mất một khoảng thời gian cụ thể).

Đẩy tệp vào thiết bị

Các bước sau đây mô tả cách truyền tệp đến một thiết bị để định cấu hình atest.

Đẩy tệp vào thiết bị

Khung này không hỗ trợ việc mở rộng mẫu để thực thi atest. Do đó, bạn phải tạo một tệp AndroidTest.xml thay thế hoàn toàn mẫu mặc định và bao gồm các lựa chọn target_preparer tương ứng cho các thiết bị.

  1. Sao chép nội dung của mẫu:

    • sdv-one-device.xml
    • sdv-two-devices.xml
    • sdv-three-devices.xml
  2. Cập nhật {MODULE} bằng tên mô-đun của bài kiểm thử.

  3. Thêm com.android.tradefed.targetprep.PushFilePreparer vào từng thiết bị.

<device name="device1">
  <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
    <option name="cleanup" value="true" />
    <option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
  </target_preparer>
</device>

Định cấu hình CATBox

Để chạy kiểm thử dưới dạng một bộ, bạn cần có cấu hình CATBox.

  1. Tạo một tệp cấu hình mới trong libraries/sdv/sdv_catbox/res/config/ và tuân theo các quy ước đặt tên sau:

    • Bài kiểm tra mẫu: sdv-sample-<NAME>-test.xml
    • Kiểm thử E2E: sdv-e2e-<NAME>-test.xml
    • Kiểm thử trong thời gian dài: sdv-long-running-<NAME>-test.xml
    • Kiểm thử hiệu suất: sdv-performance-<NAME>-test.xml
    • Kiểm thử phần cứng: sdv-hw-<NAME>-test.xml
  2. Thêm thông tin tương ứng dựa trên loại kiểm thử:

Một cấu hình kiểm thử máy ảo

<configuration description="SDV <NAME> Test">
    <!-- Template for Device Configuration -->
    <template-include name="device-config" default="sdv-device-config/one-device" />

    <!-- Plan. Use the same name as the file name -->
    <option name="plan" value="<CONFIG_FILE_NAME>"/>

    <!-- Test: mobly-par-file-name should match the module name -->
    <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>

Cấu hình kiểm thử 2 máy ảo

<configuration description="SDV <NAME> Test">
    <!-- Template for Device Configuration -->
    <template-include name="device-config" default="sdv-device-config/two-devices" />

    <!-- Plan. Use the same name as the file name -->
    <option name="plan" value="<CONFIG_FILE_NAME>"/>

    <!-- Test: mobly-par-file-name should match the module name -->
    <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>

Cấu hình kiểm thử 3 máy ảo

<!-- Copyright 2025 Google LLC -->
<configuration description="SDV <NAME> Test">
    <!-- Template for Device Configuration -->
    <template-include name="device-config" default="sdv-device-config/three-devices" />

    <!-- Plan. Use the same name as the file name -->
    <option name="plan" value="<CONFIG_FILE_NAME>"/>

    <!-- Test: mobly-par-file-name should match the module name -->
    <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>

Mẫu mặc định là đủ cho hầu hết các kiểm thử. Tránh tạo cấu hình tuỳ chỉnh trừ phi có lý do chính đáng.

Cập nhật thời gian chờ mặc định

Nếu thời gian chờ mặc định không đủ cho kiểm thử, bạn có thể ghi đè thời gian chờ đó.

Ghi đè thời gian chờ mặc định

Để ghi đè thời gian chờ mặc định, hãy thêm nội dung sau vào cuối tệp cấu hình. Các bài kiểm tra dài phải có thời gian chờ tối đa là 10 phút.

  <!-- Long Test - 10 minutes timeout: <REASON> -->
  <option name="mobly-host:mobly-test-timeout" value="600000" />

Đẩy tệp vào thiết bị

Phần sau đây mô tả cách truyền tệp đến một thiết bị khi định cấu hình CATBox.

Đẩy tệp vào thiết bị

Để đẩy các tệp vào thiết bị tương ứng, hãy thêm cấu hình sau vào sau lựa chọn plan:

<!-- Automatically pushes config file to device-->
<device name="device1">
  <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
    <option name="cleanup" value="true" />
    <option name="push-file"
      key="<FILE_NAME>"
      value="<REMOTE_FILE_PATH>"
    />
  </target_preparer>
</device>

Nếu bạn cần các tệp trên mỗi thiết bị, hãy thêm cấu hình cho từng thiết bị (ví dụ: name=device1, name=device2).

Phiên chạy thử nghiệm

Hướng dẫn này giả định rằng bạn đã hoàn tất việc thiết lập một môi trường SDV đang hoạt động.

Thiết lập môi trường

Khung này không khởi động các phiên bản Thiết bị ảo trên đám mây (CVD), vì vậy, bạn phải khởi động các phiên bản này trước khi chạy các kiểm thử.

  1. Thiết lập môi trường và khởi chạy mục tiêu SDV:

    . build/envsetup.sh
    lunch <TARGET>
    
  2. Khởi động phiên bản CVD đầu tiên:

    cvd create --config=sdv_core_instance1
    
  3. Khởi động phiên bản CVD thứ hai (đối với các thử nghiệm nhiều VM):

    cvd create --config=sdv_core_instance2
    
  4. Khởi động phiên bản CVD thứ ba (đối với các thử nghiệm nhiều VM):

    cvd create --config=sdv_core_instance3
    

Chạy atest

atest <TestModuleName>

Chạy CATBox

Các lệnh này giả định rằng bạn đang ở thư mục gốc của kho lưu trữ.

  1. Tạo CATBox: m catbox
  2. (Không bắt buộc) Xem tất cả các kế hoạch kiểm thử SDV hiện có trong CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-

Chạy kiểm thử:

Chạy một thử nghiệm VM

NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520

Chạy thử nghiệm 2 VM

NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521

Chạy kiểm thử 3 VM

NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522