ตั้งค่าห้องชุด

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

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

คำจำกัดความ

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

โครงสร้าง ITestSuite

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

บางครั้งเราเรียก ITestSuite ว่าเป็น ตัวดำเนินการชุด

ชุดรันเนอร์ทำตามขั้นตอนเหล่านี้เมื่อดำเนินการ:

  1. โหลดการกำหนดค่าของโมดูลและพิจารณาว่าชุดใดควรรัน
  2. รันแต่ละโมดูล:

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

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

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

ข้อมูลเมตานี้ระบุว่าโมดูลจำเป็นต้องดำเนินการใน โหมด อื่น เช่น เป็น 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] กับ base CtsGestureTestCases