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

ชุดทดสอบ

การทดสอบที่จะเป็นส่วนหนึ่งของ 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 โดยอ้างอิงจากพร็อพเพอร์ตี้นี้

กระบวนการ Sharding โดยใช้ VTS

สำหรับ Android เวอร์ชัน 10 ขึ้นไป คุณสามารถดำเนินการ Sharding ใน อุปกรณ์หลายเครื่องขณะทดสอบทั้งแผน VTS และ CTS-on-GSI ได้โดยทำตาม วิธีการด้านล่าง

run vts --shard-count <number of devices> -s <device serial> ...

คำสั่งนี้จะแบ่งแผน VTS ออกเป็น Shard และเรียกใช้ในอุปกรณ์หลายเครื่อง

run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...

คำสั่งนี้จะแบ่งแผน CTS-on-GSI ออกเป็นชาร์ดและเรียกใช้ในอุปกรณ์หลายเครื่อง