Thiết lập thử

Bộ kiểm thử

Để 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ể rất phức tạp, vì nó có liên quan đến cách thức hoạt động của khai thác 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 kiểm thử được tạo tự động được thiết kế để giúp quy 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 kiếm tệp cấu hình dựa trên tên mô-đun, như minh hoạ 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 mô-đun đó 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 gốc adb

Hầu hết các kiểm thử VTS đều yêu cầu quyền truy cập thư mục gốc để chạy. 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.

require_root: 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.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ử khác

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 tuỳ chọn trình chạy kiểm thử trong tệp XML.

Ví dụ: chế độ cài đặt native-test-timeout trong mục nhập sau đây cho phép chạy kiểm thử với thời gian chờ là 3 phút, thay vì thời gian chờ 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ố chương trình kiểm thử 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 các thuộc tính ro.board.first_api_levelro.board.api_level để hiển thị cấp độ API của hình ảnh nhà cung cấp trên 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ự động đặt bằng cách tính toán cấp độ API nhà cung cấp bắt buộc thông qua 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 bài viết Cấp độ API 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 được phát hành lần đầu cùng với thuộc tính này. Điều này không phụ thuộc vào cấp độ API khởi chạy của thiết bị mà chỉ phụ thuộc vào cấp độ API đầu tiên của SoC xác định giá trị này. Giá trị này là 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

Tệp 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 quy trình init của nhà cung cấp đặt.

ro.board.api_level

Thuộc tính ro.board.api_level là cấp độ API nhà cung cấp hiện tại của các ảnh nhà cung cấp có định dạng YYYYMM mà API nhà cung cấp đã bị đóng băng. 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 giới thiệu trong Android 13 để cho biết cấp độ API mà hình ảnh của nhà cung cấp bắt buộc phải 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 ở một cấp API sớm hơn ro.product.first_api_level. Phiên bản này sẽ được thay thế bằng cấp độ API tương ứng của nhà cung cấp nếu được đặt thành phiên bản từ ro.product.first_api_level lớn hơn hoặc bằng 35. Bạn có thể loại trừ các thử nghiệm triển khai nhà cung cấp yêu cầu nâng cấp hình ảnh nhà cung cấp khỏi các yêu cầu của nhà cung cấp đối với 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 quy trình phân đoạn trên nhiều thiết bị trong khi kiểm thử bằng cả kế hoạch 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 phân đoạn và chạy các gói đó 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ị.