โครงสร้าง AndroidTest.xml

โครงสร้างโดยรวมของการกำหนดค่าโมดูลจะเป็นไปตามรูปแบบที่คล้ายกับการกำหนดค่า XML ของ Tradefed ปกติ แต่มีข้อจํากัดบางอย่างเนื่องจากทํางานเป็นส่วนหนึ่งของชุด

รายการแท็กที่อนุญาต

AndroidTest.xml หรือการกําหนดค่าโมดูลแบบกว้างจะมีได้เฉพาะแท็ก XML ต่อไปนี้เท่านั้น target_preparer, multi_target_preparer, test และ metrics_collector

แม้ว่ารายการดังกล่าวจะดูจํากัด แต่จะช่วยให้คุณกําหนดความต้องการในการตั้งค่าข้อบังคับการทดสอบและการทดสอบที่จะทํางานได้อย่างแม่นยำ

หมายเหตุ: ดูการกําหนดค่า XML ของ Tradefed หากต้องการทบทวนเกี่ยวกับแท็กต่างๆ

ออบเจ็กต์ เช่น build_provider หรือ result_reporter จะแสดงConfigurationExceptionหากมีการพยายามเรียกใช้จากภายในการกำหนดค่าโมดูล การดำเนินการนี้เพื่อหลีกเลี่ยงความคาดหวังที่ว่าออบเจ็กต์เหล่านี้จะทํางานบางอย่างจากภายในโมดูล

ตัวอย่างการกำหนดค่าโมดูล

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <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>

การกําหนดค่านี้อธิบายการทดสอบที่กําหนดให้ต้องติดตั้ง CtsGestureTestCases.apk และจะเรียกใช้เครื่องมือวัดผลกับแพ็กเกจ android.gesture.cts

แท็กการรวม <include> และ <template-include>

ไม่แนะนำให้ใช้ <include> และ <template-include> ในการกำหนดค่าโมดูล เราไม่รับประกันว่าฟีเจอร์เหล่านี้จะทำงานตามที่คาดไว้

กรณีพิเศษสำหรับแท็กMetric_collector

อนุญาตให้ใช้ metrics_collector ได้แต่จำกัดเฉพาะคลาส FilePullerLogCollector เพื่อระบุไฟล์หรือไดเรกทอรีที่จะดึงและบันทึกสำหรับโมดูล ซึ่งจะเป็นประโยชน์ในกรณีที่คุณเก็บบันทึกไว้ในตำแหน่งที่เฉพาะเจาะจงและต้องการกู้คืนบันทึกโดยอัตโนมัติ

ตัวอย่างการกำหนดค่า

<configuration description="Config for CTS UI Rendering test cases">
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.uirendering.cts" />
        <option name="runtime-hint" value="11m55s" />
        <option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
        <option name="isolated-storage" value="false" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>

ข้อมูลบิลด์หรือการดาวน์โหลดจะเป็นอย่างไร

คําจํากัดความของแท็กที่อนุญาตอาจทําให้เข้าใจผิดว่าข้อบังคับจะไม่รับข้อมูลการสร้าง ข้อมูลนี้ไม่ถูกต้อง

ข้อมูลบิลด์มาจากการตั้งค่าระดับชุดซอฟต์แวร์และจะแชร์โดยโมดูลทั้งหมดของชุดซอฟต์แวร์ ซึ่งช่วยให้มีการตั้งค่าระดับบนสุดเดียวสําหรับชุดโปรแกรมเพื่อเรียกใช้ข้อบังคับทั้งหมดของชุดโปรแกรม

ตัวอย่างเช่น แทนที่จะค้นหาแต่ละโมดูล ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) แต่ละโมดูลที่ค้นหาข้อมูลอุปกรณ์ ประเภท และอื่นๆ แต่ละรายการ การตั้งค่าระดับชุด CTS (cts.xml) จะดำเนินการเพียงครั้งเดียวและแต่ละโมดูลจะได้รับข้อมูลดังกล่าวหากส่งคำขอ

ออบเจ็กต์ในโมดูลจะต้องรับข้อมูลบิลด์ ต้องทำเช่นเดียวกับในการกำหนดค่า Tradefed ปกติ กล่าวคือใช้อินเทอร์เฟซ IBuildReceiver เพื่อรับ IBuildInfo ดูรายละเอียดเพิ่มเติมได้ที่ การทดสอบกับอุปกรณ์

ช่องข้อมูลเมตา

โมดูลทดสอบจำนวนมากมีข้อกำหนดเฉพาะของ metadata ซึ่งแต่ละโมดูลมีเป้าหมายที่แตกต่างกัน

ตัวอย่าง

  <option name="config-descriptor:metadata" key="component" value="framework" />
  <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
  <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
  <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />

ส่วนประกอบ

ข้อมูลเมตา component จะอธิบายคอมโพเนนต์ Android ทั่วไปที่โมดูลตั้งใจจะทดสอบ ไม่มีผลกระทบโดยตรงต่อการดำเนินการทดสอบ แต่จะใช้เพื่อวัตถุประสงค์ขององค์กรเป็นหลัก

รายการคอมโพเนนต์ที่อนุญาตล่าสุดสำหรับ CTS มีอยู่ใน CtsConfigLoadingTest การทดสอบนี้จะส่งล่วงหน้าไม่สำเร็จหากมีการเพิ่มคอมโพเนนต์ที่ไม่มีอยู่ในโมดูล CTS

คุณกรองชุดโปรแกรมตามคอมโพเนนต์ได้โดยใช้ module-metadata-include-filter และ module-metadata-exclude-filter

ตัวอย่าง

  --module-metadata-include-filter component framework

ตัวอย่างนี้จะเรียกใช้เฉพาะโมดูลทดสอบที่มีคำอธิบายประกอบด้วยคอมโพเนนต์ framework

พารามิเตอร์

ข้อมูลเมตาของ parameter เป็นข้อมูลและส่งผลต่อการดำเนินการทดสอบ ซึ่งจะระบุโหมด Android ที่โมดูลทดสอบใช้ได้ ในกรณีนี้ โหมดจะจำกัดให้อยู่ในโหมด Android ระดับสูงเท่านั้น เช่น instant apps, secondary users หรือ different abis

ในระหว่างการเรียกใช้ชุดทดสอบ หากโหมดมีผลกับการทดสอบ ระบบจะสร้างข้อบังคับการทดสอบหลายรูปแบบตามโหมด ตัวแปรแต่ละรายการจะทําการทดสอบที่คล้ายกันแต่ในโหมดที่แตกต่างกัน

  • instant_app: สร้างการทดสอบรูปแบบต่างๆ ที่ติดตั้ง APK เป็น Instant App
  • multi_abi: สร้างตัวแปรการทดสอบสำหรับ ABI แต่ละรายการที่อุปกรณ์รองรับ
  • secondary_user: สร้างการทดสอบรูปแบบต่างๆ ที่ติดตั้ง APK และเรียกใช้การทดสอบในฐานะผู้ใช้รอง

การเก็บรวบรวมเมตริกและการประมวลผลหลังการทดสอบสำหรับโมดูลการทดสอบประสิทธิภาพ

สําหรับโมดูลการทดสอบประสิทธิภาพ ระบบจะอนุญาตให้ใช้ metrics_collector และ metric_post_processor ระดับโมดูล เนื่องจากเป็นสิ่งจําเป็นสําหรับการทดสอบประสิทธิภาพ ตัวรวบรวมเมตริกระดับโมดูลและโปรแกรมประมวลผลข้อมูลหลังการประมวลผลอาจเป็นของโมดูลใดโมดูลหนึ่งโดยเฉพาะ ไม่แนะนําให้ระบุโปรแกรมประมวลผลผลลัพธ์ทั้งในระดับบนสุดและระดับโมดูล

การกำหนดค่าโมดูลการทดสอบประสิทธิภาพต้องรวมข้อมูลเมตาของ test-type ที่มีค่า performance เช่น xml <option name="config-descriptor:metadata" key="test-type" value="performance" /> หากไม่มีการกำหนดค่านี้ หากการกำหนดค่าการทดสอบมี metric_collector ที่ไม่ใช่ FilePullerLogCollector หรือ metric_post_processor การทดสอบจะล้มเหลวในการส่งล่วงหน้า

ตัวอย่างการกําหนดค่าข้อบังคับการทดสอบประสิทธิภาพ

<configuration description="Runs sample performance test.">
    <!-- Declare as a performance test module -->
    <option name="config-descriptor:metadata" key="test-type" value="performance" />
    <option name="test-tag" value="hello-world-performance-test" />
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
    </test>
    <!-- Add module-level post processor MetricFilePostProcessor -->
    <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
        <option name="aggregate-similar-tests" value="true" />
        <option name="enable-per-test-log" value="false" />
    </metric_post_processor>
</configuration>