Bộ trong Tradefed đề cập đến một chế độ thiết lập trong đó một số chương trình kiểm thử đang chạy trong một trình chạy kiểm thử phổ biến giúp đ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 chương trình kiểm thử độc lập với cách chạy các chương trình kiểm thử đó.
Định nghĩa
- Bộ: Tập hợp mô-đun kiểm thử được định cấu hình để chạy trong một chế độ thiết lập cấp cao nhất tương tự để báo cáo kết quả của chúng 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 XML Tradefed cấp bộ mô tả các mô-đun sẽ chạy và chế độ thiết lập cấp cao nhất sẽ được 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. Các chế độ này còn được gọi là chế độ thiết lập dành riêng cho mô-đun.
- Cấu hình mô-đun: Tham chiếu đến cấu hình XML Tradefed
AndroidTest.xml
mô tả các mô-đun và cách thiết lập cấp mô-đun cần 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 gỡ bỏ.
- Thử lại trong mô-đun: Tự động thử lại do bộ điều khiển bên trong mô-đun thực hiện.
- Thử lại bộ: Chạy lại toàn bộ các thử nghiệm không thành công trước đó của bộ công cụ.
Cấu trúc ITestSuite
ITestSuite
trong Tradefed đề cập đến lớp cơ sở phổ biến điều khiển quá trình thực thi bộ. Tất cả các bộ kiểm thử chính, cụ thể là Bộ kiểm thử tính tương thích với Android (CTS) và Bộ kiểm thử nhà cung cấp Android (VTS) đều dùng chung API này, đồ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 tôi gọi ITestSuite là trình chạy bộ kiểm thử.
Trình chạy bộ ứng dụng tuân theo các bước sau khi thực thi:
- Tải cấu hình của mô-đun và xác định tập hợp nào sẽ chạy.
Chạy từng mô-đun:
- Chạy quy trình thiết lập ở cấp mô-đun.
- Chạy kiểm thử mô-đun.
- Chạy quá trình chia nhỏ ở cấp mô-đun.
Báo cáo kết quả.
Thiết lập cấp cao nhất
Từ quan điểm của Tradefed, ITestSuite
chỉ là một bài kiểm thử khác. Đây là một bài kiểm thử phức tạp nhưng vẫn chỉ là một bài kiểm thử như mọi IRemoteTest
khác. Vì vậy, khi chỉ định trình chạy bộ kiểm thử trong cấu hình Tradefed, Tradefed sẽ tuân theo mẫu thông thường của cấu hình: chạy build_provider
, target_preparer
, kiểm thử (trong trường hợp này là bộ kiểm thử của chúng ta) 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 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à 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 siêu dữ liệu:
--module-metadata-include-filter component=framework
Mã trên sẽ chạy tất cả các mô-đun có khung dưới dạng siêu dữ liệu thành phần.
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ố
Một loại siêu dữ liệu đặc biệt là parameter
.
<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ư ứ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ó được mô tả bằng ModuleParameters
và có một trình xử lý 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 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 tính năng này bằng:
--enable-parameterized-modules
Bạn cũng có thể chạy một chế độ nhất định bằng:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Khi phiên bản có tham số của một mô-đun chạy, mô-đun đó sẽ báo cáo kết quả dưới tên mô-đun có tham số, ví dụ: CtsGestureTestCases[instant]
so với CtsGestureTestCases
cơ sở.