ชุดใน Tradefed หมายถึงการตั้งค่าที่มีการทดสอบหลายรายการทำงานอยู่ภายใต้โปรแกรมรันทดสอบทั่วไปที่ขับเคลื่อนการดำเนินการโดยรวม
ใน Tradefed ชุดทดสอบจะทำงานผ่านคลาส ITestSuite
ซึ่งช่วยให้เพิ่มและนำการทดสอบออกได้โดยไม่ขึ้นอยู่กับวิธีเรียกใช้
คำจำกัดความ
- ชุด: ชุดโมดูลทดสอบที่กําหนดค่าให้ทํางานภายใต้การตั้งค่าระดับบนสุดที่คล้ายกันเพื่อรายงานผลลัพธ์ภายใต้การเรียกใช้ครั้งเดียว
- การตั้งค่าระดับบนสุด: การตั้งค่าที่ใช้กับอุปกรณ์ก่อนเรียกใช้ข้อบังคับการทดสอบ
- การกําหนดค่าหลัก: การกําหนดค่า XML ของ Tradefed ระดับชุดโปรแกรมที่อธิบายว่าควรเรียกใช้ข้อบังคับใดและการตั้งค่าระดับบนสุดใดที่ควรใช้
- การตั้งค่าระดับโมดูล: ใช้การตั้งค่ากับอุปกรณ์ก่อนที่จะเรียกใช้โมดูล หรือเรียกอีกอย่างว่าการตั้งค่าเฉพาะโมดูล
- การกําหนดค่าโมดูล: หมายถึงการกําหนดค่า
AndroidTest.xml
Tradefed XML ที่อธิบายโมดูลและการตั้งค่าระดับโมดูลที่ควรทํา - โมดูล: หน่วยทดสอบที่ประกอบด้วยขั้นตอนการตั้งค่า (การตั้งค่าระดับโมดูล) ขั้นตอนการทดสอบ และขั้นตอนการรื้อถอน
- การลองใหม่ภายในโมดูล: การลองใหม่โดยอัตโนมัติที่ดำเนินการโดยสายไฟภายในโมดูล
- ทดสอบชุดทดสอบอีกครั้ง: เรียกใช้การทดสอบชุดทดสอบที่ก่อนหน้านี้ไม่สําเร็จอีกครั้งโดยสมบูรณ์
โครงสร้าง ITestSuite
ITestSuite
ใน Tradefed หมายถึงคลาสฐานทั่วไปที่ขับเคลื่อนการดำเนินการชุด แชร์โดยชุดทดสอบหลักๆ ทั้งหมด โดยเฉพาะ Android Compatibility Test Suite (CTS) และ Android Vendor Test Suite (VTS) และดูแลให้ได้รับประสบการณ์การดำเนินการที่สอดคล้องกันในชุดทุกชุด
บางครั้งเราเรียก ITestSuite ว่าโปรแกรมรันซูตเทจ
เครื่องมือเรียกใช้ชุดจะทําตามขั้นตอนต่อไปนี้เมื่อเรียกใช้
- โหลดการกำหนดค่าของโมดูลและพิจารณาว่าชุดใดควรเรียกใช้
เรียกใช้แต่ละโมดูล
- เรียกใช้การตั้งค่าระดับโมดูล
- เรียกใช้การทดสอบข้อบังคับ
- เรียกใช้การแยกระดับโมดูล
รายงานผลลัพธ์
การตั้งค่าระดับบนสุด
จากมุมมองของ Tradefed ITestSuite
เป็นเพียงการทดสอบอีกรายการหนึ่ง ถึงแม้ว่าจะมีความซับซ้อน แต่ก็ยังเป็นเพียงการทดสอบเช่นเดียวกับ IRemoteTest
อื่นๆ ดังนั้นเมื่อระบุตัวเรียกใช้ Suite ในการกำหนดค่า Tradefed แล้ว Tradefed จะใช้รูปแบบปกติของการกำหนดค่า ซึ่งได้แก่ การเรียกใช้ build_provider
, target_preparer
, test (ในกรณีนี้คือชุดโปรแกรมของเรา) และ target_cleaner
ลำดับนี้ในการกําหนดค่า Tradefed ที่มี ITestSuite
คือการตั้งค่าระดับบนสุด
ตัวอย่าง
<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>
ข้อมูลเมตาของโมดูล
เราเรียกข้อมูลเพิ่มเติมที่ระบุไว้ในโมดูลทดสอบว่าข้อมูลเมตาของโมดูล
AndroidTest.xml
ข้อมูลเมตานี้ช่วยให้คุณระบุข้อมูลเพิ่มเติมเกี่ยวกับข้อบังคับได้ และสามารถกรองข้อบังคับโดยใช้ข้อมูลเมตา
ตัวอย่างข้อมูลเมตา
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
ตัวอย่างตัวกรองในข้อมูลเมตา
--module-metadata-include-filter component=framework
การตั้งค่าข้างต้นจะเรียกใช้โมดูลทั้งหมดที่มีเฟรมเวิร์กเป็นข้อมูลเมตาคอมโพเนนต์
ตัวอย่าง 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>
โมดูลที่มีพารามิเตอร์
ประเภทข้อมูลเมตาพิเศษคือ parameter
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
เมตาดาต้านี้ระบุว่าต้องเรียกใช้โมดูลในโหมดอื่น เช่น แอปด่วน แทนโหมดแอปมาตรฐาน
โหมดหรือพารามิเตอร์ที่เป็นไปได้ทั้งหมดอธิบายไว้โดย
ModuleParameters
และมีเครื่องจัดการที่เชื่อมโยงใน
ModuleParametersHelper
ซึ่งจะช่วยให้คุณเปลี่ยนการตั้งค่าโมดูลให้ทำงานในโหมดนั้นๆ ได้
เช่น โหมด Instant App จะบังคับให้การติดตั้ง APK เป็นโหมด Instant App
บรรทัดคําสั่งต้องเปิดใช้พารามิเตอร์ต่อไปนี้เพื่อให้พารามิเตอร์ทำงานได้
--enable-parameterized-modules
นอกจากนี้ คุณยังเรียกใช้โหมดเดียวได้ด้วยวิธีต่อไปนี้
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
เมื่อโมดูลเวอร์ชันที่ทำเป็นพารามิเตอร์ทำงาน โมดูลจะรายงานผลลัพธ์ภายใต้ชื่อโมดูลที่ทำเป็นพารามิเตอร์ เช่น CtsGestureTestCases[instant]
เทียบกับฐาน CtsGestureTestCases