ทดสอบการตั้งค่า

ชุดทดสอบ

การทดสอบต้องตั้งค่าต่อไปนี้จึงจะเป็นส่วนหนึ่งของ VTS ได้ ใน Android.bp

test_suites: ["vts"],

นอกจากนี้ การเพิ่มการทดสอบลงในชุด general-tests ยังช่วยให้การทดสอบเป็นส่วนหนึ่งของชุดการแมปการทดสอบที่ใช้ในการตรวจสอบก่อนส่งได้

การกำหนดค่าการทดสอบ

ในกรณีส่วนใหญ่ การกําหนดค่าการทดสอบ ซึ่งเป็นไฟล์ XML ที่ Trade Federation ใช้เรียกใช้การทดสอบ 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 ออกเป็นชาร์ดและเรียกใช้บนอุปกรณ์หลายเครื่อง