ตั้งค่าชุด

ชุดใน Tradefed หมายถึงการตั้งค่าที่มีการทดสอบหลายรายการทํางานภายใต้โปรแกรมรันทดสอบทั่วไปที่ขับเคลื่อนการดําเนินการโดยรวม

ใน Tradefed ชุดทดสอบจะทำงานผ่านคลาส ITestSuite ซึ่งช่วยให้เพิ่มและนำการทดสอบออกได้โดยไม่ขึ้นอยู่กับวิธีเรียกใช้

คำจำกัดความ

  • ชุด: ชุดโมดูลทดสอบที่กําหนดค่าให้ทํางานภายใต้การตั้งค่าระดับบนสุดที่คล้ายกันเพื่อรายงานผลลัพธ์ภายใต้การเรียกใช้ครั้งเดียว
  • การตั้งค่าระดับบนสุด: การตั้งค่าที่ใช้กับอุปกรณ์ก่อนที่จะเรียกใช้ข้อบังคับการทดสอบ
  • การกําหนดค่าหลัก: การกําหนดค่า XML ของ Tradefed ระดับชุดซอฟต์แวร์ที่อธิบายว่าควรเรียกใช้ข้อบังคับใดและการตั้งค่าระดับบนสุดใดที่ควรใช้
  • การตั้งค่าระดับโมดูล: การตั้งค่าที่ใช้กับอุปกรณ์ก่อนเรียกใช้ข้อบังคับ หรือเรียกอีกอย่างว่าการตั้งค่าเฉพาะโมดูล
  • การกําหนดค่าโมดูล: หมายถึงการกําหนดค่า AndroidTest.xml Tradefed XML ที่อธิบายโมดูลและการตั้งค่าระดับโมดูลที่ควรทํา
  • โมดูล: หน่วยทดสอบที่ประกอบด้วยขั้นตอนการตั้งค่า (การตั้งค่าระดับโมดูล) ขั้นตอนการดำเนินการทดสอบ และขั้นตอนการรื้อถอน
  • การลองใหม่ภายในโมดูล: การลองใหม่โดยอัตโนมัติที่ดำเนินการโดยสายไฟภายในโมดูล
  • พยายามทดสอบชุดโปรแกรมอีกครั้ง: เรียกใช้การทดสอบชุดโปรแกรมที่ก่อนหน้านี้ไม่สําเร็จอีกครั้งโดยสมบูรณ์

โครงสร้าง ITestSuite

ITestSuite ใน Tradefed หมายถึงคลาสฐานทั่วไปที่ขับเคลื่อนการดำเนินการชุด ชุดเครื่องมือทดสอบหลักทั้งหมดใช้ข้อมูลนี้ร่วมกัน โดยเฉพาะชุดเครื่องมือทดสอบความเข้ากันได้ของ Android (CTS) และชุดเครื่องมือทดสอบผู้ให้บริการ Android (VTS) เพื่อให้มั่นใจว่าการดำเนินการจะสอดคล้องกันในทุกชุด

บางครั้งเราเรียก ITestSuite ว่าโปรแกรมรันซูตเทจ

เครื่องมือเรียกใช้ชุดจะทําตามขั้นตอนต่อไปนี้เมื่อเรียกใช้

  1. โหลดการกําหนดค่าของโมดูลและระบุชุดที่ควรทํางาน
  2. เรียกใช้แต่ละโมดูล

    1. เรียกใช้การตั้งค่าระดับโมดูล
    2. เรียกใช้การทดสอบข้อบังคับ
    3. เรียกใช้การแยกชิ้นส่วนระดับโมดูล
  3. รายงานผลลัพธ์

การตั้งค่าระดับบนสุด

จากมุมมองของ Tradefed ITestSuite เป็นเพียงการทดสอบอีกรายการหนึ่ง การดำเนินการนี้มีความซับซ้อน แต่ก็ยังเป็นแค่การทดสอบเช่นเดียวกับ IRemoteTest อื่นๆ ดังนั้นเมื่อระบุโปรแกรมรันซีทในการกําหนดค่า 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

คำสั่งข้างต้นจะเรียกใช้โมดูลทั้งหมดที่มี 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พื้นฐาน