ตั้งค่าชุด

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

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

คำจำกัดความ

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

โครงสร้าง ITestSuite

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

บางครั้งเราเรียก ITestSuite ว่า ตัวเรียกใช้ชุดทดสอบ

ตัวเรียกใช้ชุดทดสอบจะทำตามขั้นตอนต่อไปนี้เมื่อดำเนินการ

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

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

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

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

ข้อมูลเมตานี้ระบุว่าโมดูลต้องดำเนินการใน โหมดอื่น เช่น เป็น Instant App แทนที่จะเป็นโหมดแอปมาตรฐาน

ModuleParameters อธิบายโหมดหรือพารามิเตอร์ที่เป็นไปได้ทั้งหมด และมีตัวแฮนเดิลที่เชื่อมโยงใน ModuleParametersHelper ซึ่งช่วยให้คุณเปลี่ยนการตั้งค่าโมดูลเพื่อดำเนินการในโหมดนั้นๆ ได้

ตัวอย่างเช่น โหมด Instant App จะบังคับให้ติดตั้ง APK เป็นโหมด Instant

การกำหนดพารามิเตอร์จะเกิดขึ้นได้เมื่อบรรทัดคำสั่งเปิดใช้โดยใช้คำสั่งต่อไปนี้

--enable-parameterized-modules

นอกจากนี้ คุณยังเรียกใช้โหมดเดียวที่ระบุได้ด้วยคำสั่งต่อไปนี้

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

เมื่อโมดูลเวอร์ชันที่มีพารามิเตอร์ทำงาน โมดูลจะรายงานผลลัพธ์ภายใต้ ชื่อโมดูลที่มีพารามิเตอร์ เช่น CtsGestureTestCases[instant] เทียบกับ ฐาน CtsGestureTestCases