ชุดทดสอบ
การทดสอบเป็นส่วนหนึ่งของ VTS ต้องมีการตั้งค่าต่อไปนี้
ใน Android.bp
test_suites: ["vts"],
นอกจากนี้ การเพิ่มการทดสอบลงในชุด general-tests
ยังช่วยให้การทดสอบเป็นส่วนหนึ่งของชุดการแมปการทดสอบที่ใช้ในการตรวจสอบก่อนส่งได้
การกำหนดค่าการทดสอบ
ในกรณีส่วนใหญ่ การกำหนดค่าการทดสอบ ซึ่งเป็นไฟล์ XML ที่ Trade ใช้งานอยู่ รวมศูนย์เรียกใช้การทดสอบ VTS โดยอัตโนมัติ ที่สร้างขึ้นระหว่างการสร้าง แต่คุณสามารถปรับแต่ง การกำหนดค่าการทดสอบ
สร้างไฟล์การกําหนดค่าการทดสอบที่กําหนดเอง
การสร้างไฟล์ XML ทดสอบใหม่ตั้งแต่ต้นอาจมีความซับซ้อน เนื่องจากเกี่ยวข้องกับความเข้าใจวิธีการทํางานของชุดทดสอบ รวมถึงความแตกต่างระหว่างโปรแกรมรันทดสอบแต่ละรายการ ไฟล์การกําหนดค่าการทดสอบที่สร้างขึ้นโดยอัตโนมัติออกแบบมาเพื่อทําให้กระบวนการนี้ง่ายขึ้น
หากต้องปรับแต่งไฟล์ XML ทดสอบ คุณสามารถใช้เมธอด ที่สร้างโดยอัตโนมัติ เป็นจุดเริ่มต้น
หากต้องการค้นหาไฟล์การกําหนดค่าการทดสอบที่สร้างขึ้นโดยอัตโนมัติ ให้เรียกใช้คําสั่ง make
ก่อนเพื่อสร้างการกําหนดค่า ดังที่แสดงด้านล่าง
$ m VtsHalUsbV1_1TargetTest
ในไดเรกทอรีการสร้าง คุณค้นหาไฟล์การกําหนดค่าตามชื่อโมดูลได้ ดังที่แสดงด้านล่าง
$ find out/ -name VtsHalUsbV1_1TargetTest.config
ไฟล์มีสำเนาได้หลายสำเนาและคุณจะใช้แบบใดก็ได้
คัดลอกไฟล์ .config
ไปยังไดเรกทอรี
ตำแหน่งของไฟล์ Android.bp
หากมีโมดูลทดสอบเพียงโมดูลเดียวในไฟล์ Android.bp
คุณสามารถเปลี่ยนชื่อไฟล์ XML เป็น AndroidTest.xml
แล้วระบบบิลด์จะใช้ไฟล์ดังกล่าวเป็นไฟล์การกำหนดค่าของโมดูลทดสอบโดยอัตโนมัติ หรือไม่เช่นนั้น
เพิ่มแอตทริบิวต์ test_config
ลงในโมดูล ดังที่แสดงใน
ตัวอย่างด้านล่าง
test_config: "VtsHalUsbV1_1TargetTest.xml",
ตอนนี้คุณมีไฟล์การกำหนดค่าทดสอบสำหรับใช้งานและนำไปใช้แล้ว การปรับแต่ง
บังคับให้ทดสอบด้วย adb root
การทดสอบ VTS ส่วนใหญ่ต้องใช้สิทธิ์รูทจึงจะทำงานได้ หากการกำหนดค่าการทดสอบ
ระบบสร้างไฟล์โดยอัตโนมัติ คุณจึงสามารถเพิ่มแอตทริบิวต์ต่อไปนี้ลงใน Android.bp
ได้
require_root: true,
ถ้าไฟล์การกำหนดค่าการทดสอบมีการกำหนดค่า ให้เพิ่ม ต่อท้ายไฟล์ XML ทดสอบ
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
หยุดเฟรมเวิร์กระหว่างการทดสอบ
การทดสอบ VTS จำนวนมากไม่จำเป็นต้องใช้เฟรมเวิร์ก Android และเรียกใช้
การทดสอบโดยที่เฟรมเวิร์กหยุดทำงานแล้วจะทำให้การทดสอบทำงานได้อย่างเสถียร
โดยจะไม่ได้รับผลกระทบจากเกล็ดของอุปกรณ์เลย หากการกำหนดค่าการทดสอบ
ระบบสร้างไฟล์โดยอัตโนมัติ คุณจึงสามารถเพิ่มแอตทริบิวต์ต่อไปนี้ลงใน Android.bp
ได้
disable_framework: true,
หากปรับแต่งไฟล์การกําหนดค่าการทดสอบ ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์ XML ทดสอบ
<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>
เพิ่มอาร์กิวเมนต์ทดสอบเพิ่มเติม
การทดสอบ gtest บางรายการอาจใช้เวลานานกว่าในการเรียกใช้ ในกรณีดังกล่าว คุณสามารถเพิ่มตัวเลือกโปรแกรมรันทดสอบในไฟล์ XML
เช่น การตั้งค่า native-test-timeout
ในรายการต่อไปนี้ช่วยให้การทดสอบทํางานโดยมีการหมดเวลา 3 นาทีแทนค่าเริ่มต้น 1 นาที
<test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNfcV1_0TargetTest" />
<option name="native-test-timeout" value="180000"/>
</test>
กำหนดระดับ API ขั้นต่ำ
การทดสอบ VTS บางรายการจะทำงานได้เฉพาะในอุปกรณ์ที่มีระดับ API ขั้นต่ำเท่านั้น หาก
ระบบจะสร้างไฟล์การกำหนดค่าการทดสอบให้โดยอัตโนมัติ คุณสามารถเพิ่มรายการต่อไปนี้ได้
ให้กับ Android.bp
min_shipping_api_level: 29,
หรือ
vsr_min_shipping_api_level: 202404,
ถ้าไฟล์การกำหนดค่าการทดสอบมีการกำหนดค่า ให้เพิ่มเมธอด ต่อไปนี้ลงในไฟล์ XML ทดสอบ
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="min-api-level" value="29" />
</object>
หรือ
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="vsr-min-api-level" value="202404" />
</object>
พร็อพเพอร์ตี้ระดับ API
Android 12 กำหนดพร็อพเพอร์ตี้ ro.board.first_api_level
และ ro.board.api_level
เพื่อแสดงระดับ API ของรูปภาพผู้ให้บริการในอุปกรณ์เหล่านี้ รวมคุณสมบัติเหล่านี้กับ ro.product.first_api_level
ชุดการทดสอบจะเลือกกรอบการทดสอบที่เหมาะสมสำหรับอุปกรณ์
Android 13 กำหนด ro.vendor.api_level
ที่จะตั้งค่าโดยอัตโนมัติโดยคำนวณระดับ API ของผู้ให้บริการที่จำเป็นโดยใช้พร็อพเพอร์ตี้ ro.product.first_api_level
, ro.board.first_api_level
และ ro.board.api_level
โปรดดูรายละเอียดเพิ่มเติมที่ระดับ API ของผู้ให้บริการ
ro.board.first_api_level
พร็อพเพอร์ตี้ ro.board.first_api_level
คือระดับ API เมื่อมีการเผยแพร่ภาพผู้ให้บริการสำหรับ SoC ที่มีสิทธิ์หยุดให้บริการของผู้ให้บริการเป็นครั้งแรกด้วยพร็อพเพอร์ตี้นี้ ซึ่งไม่ได้ขึ้นอยู่กับระดับ API ที่เปิดตัวของอุปกรณ์ แต่ขึ้นอยู่กับระดับ API แรกของ SoC ที่กําหนดค่านี้เท่านั้น ค่านี้จะมีผลถาวรตลอดอายุการใช้งานของ SoC
หากต้องการตั้งค่า ro.board.first_api_level
ผู้ผลิตอุปกรณ์สามารถกำหนด BOARD_SHIPPING_API_LEVEL
ในไฟล์ device.mk
ของตนได้ ดังตัวอย่างต่อไปนี้
# BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
BOARD_SHIPPING_API_LEVEL := 23
ระบบจะกําหนดพร็อพเพอร์ตี้ ro.board.first_api_level เป็น vendor/build.prop
ในอุปกรณ์โดยอัตโนมัติ พร็อพเพอร์ตี้ได้รับการตั้งค่าโดยinit
กระบวนการของผู้ให้บริการ
ro.board.api_level
พร็อพเพอร์ตี้ ro.board.api_level
คือระดับ API ผู้ให้บริการปัจจุบันของผู้ให้บริการ
รูปภาพที่มีรูปแบบ YYYYMM
ซึ่งมีการระงับ API ของผู้ให้บริการ ใช่เลย
โดยอัตโนมัติโดยระบบบิลด์
ro.vendor.api_level
เปิดตัวพร็อพเพอร์ตี้ ro.vendor.api_level
ใน
Android 13 เพื่อแสดงระดับ API ที่อิมเมจของผู้ให้บริการ
ที่จำเป็นต่อการสนับสนุน ระบบจะตั้งค่าเป็น ro.product.first_api_level
โดยอัตโนมัติ หรือ ro.board.api_level
หากมี ro.board.first_api_level
และ ro.board.api_level
ตั้งค่าเป็น API ระดับต่ำกว่า ro.product.first_api_level
เวอร์ชันจะเป็น
แทนที่ด้วยระดับ API ของผู้ให้บริการที่เกี่ยวข้องหากมีการตั้งค่าเป็นเวอร์ชัน
จาก ro.product.first_api_level
ซึ่งมากกว่าหรือเท่ากับ 35
การทดสอบ
สำหรับการใช้งานของผู้ให้บริการที่จำเป็นต้องอัปเกรดอิมเมจของผู้ให้บริการอาจได้รับการยกเว้น
จากข้อกําหนดของผู้ให้บริการสําหรับ SoC โดยอ้างอิงพร็อพเพอร์ตี้นี้
กระบวนการแบ่งกลุ่มโดยใช้ VTS
สำหรับ Android เวอร์ชัน 10 ขึ้นไป คุณสามารถดำเนินการแยกข้อมูลในอุปกรณ์หลายเครื่องขณะทดสอบด้วยทั้งแพ็กเกจ VTS และ CTS-on-GSI ได้โดยทำตามวิธีการด้านล่าง
run vts --shard-count <number of devices> -s <device serial> ...
คำสั่งนี้จะแบ่งแผน VTS ออกเป็นกลุ่มและเรียกใช้บนอุปกรณ์หลายเครื่อง
run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...
คำสั่งนี้จะแบ่งแพ็กเกจ CTS-on-GSI ออกเป็นชาร์ดและเรียกใช้แพ็กเกจดังกล่าวในอุปกรณ์หลายเครื่อง