Khung kiểm thử SDV

Tài liệu này cung cấp thông tin tổng quan về 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 bài kiểm thử. Hãy sử dụng khung kiểm thử SDV để kiểm thử toàn bộ quy trình. Công cụ này được xây dựng 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

Tài liệu này giả định rằng bạn đã thiết lập máy trạm cho SDV. Để chạy các bài kiểm thử Khung, 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 bài kiểm thử, Python và các phần phụ thuộc của chúng dưới dạng tệp thực thi bằng cách sử dụng cấu hình bản dựng. Bạn phải tuân theo phương pháp này trong kho lưu trữ kiểm thử SDV.

Thư viện Khung kiểm thử SDV cung cấp các phần phụ thuộc này theo mặc định:

  • mobly
  • absl-py Bắt buộc phải sử dụng tham số hoá trong các bài kiểm thử.
  • pexpect Bắt buộc phải có chức năng lệnh tương tác.
  • ptyprocess Bắt buộc phải có 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 bài kiểm thử, hãy đưa các phần phụ thuộc đó vào tệp Android.bp của bài 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 bài kiểm thử hệ thống bằng Khung kiểm thử SDV. Khung này phân biệt giữa các loại sau. Phân loại các bài kiểm thử một cách chính xác:

  • Bài 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 kết quả đầu ra dự kiến.
  • Bài kiểm thử E2E: Không sử dụng các dịch vụ mẫu SDV.
  • Bài 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.
  • Bài kiểm thử hiệu suất: Sử dụng thư viện perfetto.
  • Bài kiểm thử phần cứng: Được thiết kế để thực thi riêng trên một thiết bị thực, không phải trong Cuttlefish (CF).

Tạo bài kiểm thử

Tất cả các bài 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 bài kiểm thử phụ thuộc vào loại bài kiểm thử đó.

Định cấu hình bài kiểm thử

Định cấu hình tất cả các bài 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 nội dung sau vào tệp Android.bp:

Một máy ảo

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 bài 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 bài kiểm thử cục bộ.

Nếu bài kiểm thử của bạn không thành công cục bộ do thời gian chờ, hãy cân nhắc việc chia bài kiểm thử đó thành nhiều bài kiểm thử. Các bài 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 tiếp tục đọc.

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.

Bài kiểm thử dài trên một máy ảo

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

Bài kiểm thử dài trên hai máy ảo

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

Thêm một nhận xét cho biết 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 bài kiểm thử yêu cầu tải một cấu phần phần mềm xuống 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 đẩy tệp vào thiết bị cho các 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 tuỳ 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 bài kiểm thử dưới dạng một bộ kiểm thử, 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 thử mẫu: sdv-sample-<NAME>-test.xml
    • Bài kiểm thử E2E: sdv-e2e-<NAME>-test.xml
    • Bài kiểm thử chạy trong thời gian dài: sdv-long-running-<NAME>-test.xml
    • Bài kiểm thử hiệu suất: sdv-performance-<NAME>-test.xml
    • Bài 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 bài kiểm thử:

Cấu hình bài kiểm thử trên một 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 bài kiểm thử trên hai 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 bài kiểm thử trên ba 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 bài 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 bài kiểm thử của bạn, 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 thử 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 đẩy tệp vào thiết bị khi định cấu hình CATBox.

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

Để đẩy tệp vào thiết bị tương ứng, hãy thêm cấu hình sau sau tuỳ 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 yêu cầu các tệp trên từng 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

Các hướng dẫn này giả định rằng bạn đã hoàn tất việc thiết lập 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 thực thể Thiết bị ảo trên đám mây (CVD), vì vậy, bạn phải khởi động các thực thể đó trước khi chạy các bài kiểm thử.

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

    . build/envsetup.sh
    lunch <TARGET>
    
  2. Khởi động thực thể Thiết bị ảo trên đám mây (CVD) đầu tiên:

    cvd create --config=sdv_core_instance1
    
  3. Khởi động thực thể Thiết bị ảo trên đám mây (CVD) thứ hai (cho các bài kiểm thử nhiều máy ảo):

    cvd create --config=sdv_core_instance2
    
  4. Khởi động thực thể Thiết bị ảo trên đám mây (CVD) thứ ba (cho các bài kiểm thử nhiều máy ảo):

    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 gói kiểm thử SDV có sẵn trong CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-

Chạy bài kiểm thử:

Chạy bài kiểm thử trên một máy ảo

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 bài kiểm thử trên hai máy ảo

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 bài kiểm thử trên ba máy ảo

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