Bộ kiểm thử trong Tradefed đề cập đến một chế độ thiết lập trong đó một số kiểm thử đang chạy trong một trình chạy kiểm thử chung điều khiển quá trình thực thi tổng thể.
Trong Tradefed, các bộ được điều khiển thông qua lớp ITestSuite
. Lớp này cho phép thêm và xoá các kiểm thử một cách độc lập với cách chúng được chạy.
Định nghĩa
- Bộ: Tập hợp các mô-đun kiểm thử được định cấu hình để chạy trong một chế độ thiết lập cấp cao tương tự nhằm báo cáo kết quả trong một lệnh gọi duy nhất.
- Thiết lập cấp cao nhất: Thiết lập được áp dụng cho các thiết bị trước khi chạy bất kỳ mô-đun kiểm thử nào.
- Cấu hình chính: Cấu hình Tradefed XML ở cấp bộ mô tả những mô-đun cần chạy và chế độ thiết lập cấp cao nhất cần sử dụng.
- Thiết lập cấp mô-đun: Thiết lập được áp dụng cho các thiết bị ngay trước khi chạy mô-đun. Đây còn được gọi là các chế độ thiết lập dành riêng cho mô-đun.
- Cấu hình mô-đun: Đề cập đến cấu hình XML
AndroidTest.xml
Tradefed mô tả các mô-đun và chế độ thiết lập cấp mô-đun nào sẽ được thực hiện. - Mô-đun: Đơn vị kiểm thử bao gồm một bước thiết lập (thiết lập cấp mô-đun), một bước thực thi kiểm thử và một bước huỷ.
- Thử lại trong mô-đun: Thử lại tự động do bộ kiểm thử thực hiện bên trong mô-đun.
- Thử lại bộ: Chạy lại toàn bộ các kiểm thử không thành công trước đó của bộ.
Cấu trúc ITestSuite
ITestSuite
trong Tradefed đề cập đến lớp cơ sở chung điều khiển quá trình thực thi một bộ. Công cụ này được chia sẻ bởi tất cả các bộ kiểm thử chính, cụ thể là Bộ kiểm thử tính tương thích (CTS) với Android và Bộ kiểm thử của nhà cung cấp Android (VTS), đồng thời đảm bảo trải nghiệm thực thi nhất quán trên tất cả các bộ kiểm thử.
Đôi khi, chúng ta gọi ITestSuite là suite runner (trình chạy bộ thử nghiệm).
Trình chạy bộ kiểm thử sẽ làm theo các bước sau khi thực thi:
- Tải cấu hình của mô-đun và xác định nhóm nào sẽ chạy.
Chạy từng mô-đun:
- Chạy chế độ thiết lập cấp mô-đun.
- Chạy kiểm thử mô-đun.
- Chạy quy trình tháo dỡ ở cấp mô-đun.
Báo cáo kết quả.
Thiết lập cấp cao nhất
Theo quan điểm của Tradefed, ITestSuite
chỉ là một bài kiểm thử khác. Đây là một kiểm thử phức tạp nhưng vẫn chỉ là một kiểm thử như mọi IRemoteTest
khác. Vì vậy, khi chỉ định trình chạy bộ kiểm thử trong một cấu hình Tradefed, Tradefed sẽ tuân theo mẫu cấu hình thông thường: chạy build_provider
, target_preparer
, kiểm thử (bộ kiểm thử của chúng ta trong trường hợp này) và target_cleaner
.
Trình tự này trong cấu hình Tradefed chứa ITestSuite
là chế độ thiết lập cấp cao nhất.
Ví dụ:
<configuration description="Common config for Compatibility suites">
<build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
<!-- Setup applied before the suite: so everything running in the suite will
have this setup beforehand -->
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put global package_verifier_enable 0" />
<option name="teardown-command" value="settings put global package_verifier_enable 1"/>
</target_preparer>
<!-- Our ITestSuite implementation -->
<test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />
<result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>
Siêu dữ liệu của mô-đun
Chúng tôi gọi siêu dữ liệu mô-đun là thông tin bổ sung được chỉ định trong mô-đun kiểm thử AndroidTest.xml
. Siêu dữ liệu này cho phép bạn chỉ định thêm thông tin về mô-đun và bạn có thể lọc các mô-đun bằng siêu dữ liệu.
Ví dụ về siêu dữ liệu:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Ví dụ về bộ lọc trên siêu dữ liệu:
--module-metadata-include-filter component=framework
Lệnh trên sẽ chạy tất cả các mô-đun có framework dưới dạng siêu dữ liệu component.
Ví dụ đầy đủ về AndroidTest.xml
:
<configuration description="Config for CTS Gesture test cases">
<option name="test-suite-tag" value="cts" />
<!-- Metadata -->
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
<!-- End: metadata -->
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsGestureTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.gesture.cts" />
<option name="runtime-hint" value="10m50s" />
</test>
</configuration>
Mô-đun được tham số hoá
parameter
là một loại siêu dữ liệu đặc biệt.
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Siêu dữ liệu này chỉ định rằng mô-đun cần được thực thi ở một chế độ khác, chẳng hạn như một ứng dụng tức thì, thay vì chế độ ứng dụng tiêu chuẩn.
Tất cả các chế độ hoặc thông số có thể có đều được mô tả bằng ModuleParameters
và có một trình xử lý được liên kết trong ModuleParametersHelper
cho phép bạn thay đổi chế độ thiết lập mô-đun để thực thi ở chế độ cụ thể.
Ví dụ: chế độ ứng dụng tức thì buộc quá trình cài đặt APK ở chế độ tức thì.
Để quá trình tham số hoá diễn ra, dòng lệnh cần bật quá trình này bằng cách:
--enable-parameterized-modules
Bạn cũng có thể chạy một chế độ nhất định bằng cách:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Khi một phiên bản có tham số của mô-đun chạy, phiên bản đó sẽ báo cáo kết quả theo tên mô-đun có tham số, ví dụ: CtsGestureTestCases[instant]
so với CtsGestureTestCases
cơ sở.