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

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

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

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

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

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

ออบเจ็กต์ เช่น 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>