Thiết lập thử nghiệm

Bộ thử nghiệm

Để một chương trình kiểm thử trở thành một phần của VTS, chương trình đó phải có chế độ cài đặt sau trong Android.bp.

test_suites: ["vts"],

Ngoài ra, việc thêm kiểm thử vào bộ general-tests cho phép kiểm thử đó trở thành một phần của bộ ánh xạ kiểm thử được dùng trong các bước kiểm tra trước khi gửi.

Cấu hình kiểm tra

Trong hầu hết các trường hợp, cấu hình kiểm thử (là một tệp XML mà Trade Federation sử dụng để chạy kiểm thử VTS) sẽ được tự động tạo trong quá trình xây dựng. Tuy nhiên, bạn có thể tuỳ chỉnh cấu hình kiểm thử.

Tạo tệp cấu hình thử nghiệm tuỳ chỉnh

Việc tạo một tệp XML kiểm thử mới từ đầu có thể phức tạp, vì bạn cần hiểu cách hoạt động của bộ kiểm thử, cũng như sự khác biệt giữa từng trình chạy kiểm thử. Tệp cấu hình thử nghiệm được tạo tự động được thiết kế để giúp cho quá trình này dễ dàng hơn.

Nếu phải tuỳ chỉnh tệp XML kiểm thử, bạn có thể sử dụng tệp được tạo tự động làm điểm xuất phát.

Để tìm tệp cấu hình kiểm thử được tạo tự động, trước tiên, hãy chạy lệnh make để tạo cấu hình, như minh hoạ dưới đây.

$ m VtsHalUsbV1_1TargetTest

Trong thư mục bản dựng, bạn có thể tìm cấu hình dựa trên tên mô-đun, như được hiển thị dưới đây.

$ find out/ -name VtsHalUsbV1_1TargetTest.config

Có thể có nhiều bản sao của tệp và bạn có thể sử dụng bất kỳ bản sao nào trong số đó. Sao chép tệp .config vào thư mục chứa tệp Android.bp.

Nếu chỉ có một mô-đun kiểm thử trong tệp Android.bp, bạn có thể đổi tên tệp XML thành AndroidTest.xml, và hệ thống xây dựng sẽ tự động sử dụng tệp đó làm tệp cấu hình của mô-đun kiểm thử. Nếu không, hãy thêm thuộc tính test_config vào mô-đun, như trong ví dụ dưới đây.

test_config: "VtsHalUsbV1_1TargetTest.xml",

Bây giờ, bạn đã có một tệp cấu hình kiểm thử để làm việc và triển khai tuỳ chỉnh.

Buộc kiểm thử chạy bằng quyền gốc adb

Hầu hết các thử nghiệm VTS đều yêu cầu đặc quyền gốc để chạy. Nếu cấu hình thử nghiệm tệp được tạo tự động, bạn có thể thêm thuộc tính sau vào Android.bp.

require_root: true,

Nếu tệp cấu hình thử nghiệm được tuỳ chỉnh, hãy thêm tệp XML kiểm thử.

<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>

Dừng khung trong quá trình kiểm thử

Nhiều chương trình kiểm thử VTS không yêu cầu khung Android để chạy và việc chạy chương trình kiểm thử khi khung bị dừng cho phép chương trình kiểm thử chạy ổn định mà không bị ảnh hưởng bởi các sự cố thiết bị. Nếu tệp cấu hình kiểm thử được tạo tự động, bạn có thể thêm thuộc tính sau vào Android.bp.

disable_framework: true,

Nếu tệp cấu hình kiểm thử được tuỳ chỉnh, hãy thêm nội dung sau vào tệp XML kiểm thử.

<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>

Thêm các đối số kiểm thử bổ sung

Một số kiểm thử gtest có thể cần nhiều thời gian hơn để chạy. Trong những trường hợp như vậy, bạn có thể thêm các tuỳ chọn trình chạy kiểm thử trong tệp XML.

Ví dụ: chế độ cài đặt native-test-timeout trong như sau cho phép bài kiểm thử chạy với thời gian chờ là 3 phút, thay vì mặc định là 1 phút.

   <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>

Yêu cầu cấp độ API tối thiểu

Một số thử nghiệm VTS chỉ có thể chạy trên các thiết bị có cấp độ API tối thiểu. Nếu tệp cấu hình kiểm thử được tạo tự động, bạn có thể thêm thuộc tính sau vào Android.bp.

min_shipping_api_level: 29,

hoặc

vsr_min_shipping_api_level: 202404,

Nếu tệp cấu hình kiểm thử được tuỳ chỉnh, hãy thêm lệnh sau vào tệp XML kiểm thử.

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="min-api-level" value="29" />
   </object>

hoặc

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="vsr-min-api-level" value="202404" />
   </object>

Thuộc tính cấp độ API

Android 12 xác định ro.board.first_api_level và Thuộc tính ro.board.api_level để hiển thị cấp độ API của hình ảnh nhà cung cấp các thiết bị này. Khi kết hợp các thuộc tính này với ro.product.first_api_level, các bộ kiểm thử sẽ chọn các trường hợp kiểm thử phù hợp cho thiết bị.

Android 13 xác định ro.vendor.api_level được đặt tự động bằng cách tính toán cấp độ API của nhà cung cấp bắt buộc bằng cách sử dụng các thuộc tính ro.product.first_api_level, ro.board.first_api_levelro.board.api_level.

Để biết thêm thông tin, hãy xem phần Cấp độ API của nhà cung cấp.

ro.board.first_api_level

Thuộc tính ro.board.first_api_level là cấp độ API khi hình ảnh nhà cung cấp cho một SoC đủ điều kiện đóng băng nhà cung cấp trước tiên được phát hành cùng với tài sản này. Điều này không phụ thuộc vào API chạy của thiết bị nhưng chỉ phụ thuộc vào cấp độ API đầu tiên của SoC xác định giá trị này. Chiến lược phát hành đĩa đơn là giá trị vĩnh viễn trong suốt thời gian hoạt động của SoC.

Để đặt ro.board.first_api_level, nhà sản xuất thiết bị có thể xác định BOARD_SHIPPING_API_LEVEL trong tệp device.mk, như trong ví dụ sau:

  # 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

Thao tác này sẽ tự động xác định thuộc tính ro.board.first_api_level thành vendor/build.prop trên thiết bị. Thuộc tính này do nhà cung cấp init đặt của chúng tôi.

ro.board.api_level

Thuộc tính ro.board.api_level là cấp độ API hiện tại của nhà cung cấp hình ảnh có định dạng YYYYMM trong đó API nhà cung cấp bị cố định. Hệ thống xây dựng sẽ tự động đặt giá trị này.

ro.vendor.api_level

Thuộc tính ro.vendor.api_level được ra mắt trong Android 13 cho thấy cấp độ API mà hình ảnh nhà cung cấp là yêu cầu bắt buộc phải có để hỗ trợ. Giá trị này được tự động đặt thành ro.product.first_api_level hoặc ro.board.api_level nếu có ro.board.first_api_levelro.board.api_level được đặt thành cấp độ API sớm hơn ro.product.first_api_level. Phiên bản này sẽ thay thế bằng cấp độ API tương ứng của nhà cung cấp nếu cấp đó được đặt thành phiên bản từ ro.product.first_api_level, lớn hơn hoặc bằng 35. Thử nghiệm cho việc triển khai nhà cung cấp có yêu cầu nâng cấp hình ảnh của nhà cung cấp có thể bị loại trừ dựa trên các yêu cầu của nhà cung cấp đối với hệ thống SoC bằng cách tham chiếu đến thuộc tính này.

Quy trình phân đoạn bằng VTS

Đối với Android phiên bản 10 trở lên, bạn có thể thực hiện quá trình phân đoạn trên nhiều thiết bị trong khi thử nghiệm với cả gói VTS và CTS-on-GSI bằng cách làm theo hướng dẫn bên dưới.

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

Lệnh này chia kế hoạch VTS thành các mảnh và chạy các mảnh đó trên nhiều thiết bị.

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

Lệnh này chia kế hoạch CTS-on-GSI thành các phân đoạn và chạy các phân đoạn đó trên nhiều thiết bị.