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:
moblyabsl-pyBắt buộc phải sử dụng tham số hoá trong các bài kiểm thử.pexpectBắt buộc phải có chức năng lệnh tương tác.ptyprocessBắ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ị.
Sao chép nội dung của mẫu:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
Cập nhật
{MODULE}bằng tên mô-đun của bài kiểm thử.Thêm
com.android.tradefed.targetprep.PushFilePreparervà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.
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
- Bài kiểm thử mẫu:
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ử.
Thiết lập môi trường và chạy mục tiêu SDV:
. build/envsetup.sh lunch <TARGET>Khởi động thực thể Thiết bị ảo trên đám mây (CVD) đầu tiên:
cvd create --config=sdv_core_instance1Khở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_instance2Khở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ữ.
- Tạo CATBox:
m catbox - (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