Thiết lập thử nghiệm

Bộ thử nghiệm

Để trở thành một phần của VTS, bài kiểm thử phải có chế độ cài đặt sau đây 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ử đó nằm trong bộ Test Mapping được dùng trong các quy trình 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 dùng để chạy kiểm thử VTS) sẽ tự động được tạo trong quá trình tạo. Tuy nhiên, bạn có thể tuỳ chỉnh cấu hình kiểm thử.

Tạo một tệp cấu hình kiểm thử 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ì việc này liên quan đến việc tìm hiểu cách hoạt động của bộ kiểm thử, cũng như sự khác biệt giữa mỗi 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 trở nên 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 bắt đầu.

Để xác định vị trí 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. Sao chép tệp .config vào thư mục có 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 bản 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ụ bên dưới.

test_config: "VtsHalUsbV1_1TargetTest.xml",

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

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

Hầu hết các kiểm thử VTS đều yêu cầu đặc quyền root để 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 bạn tuỳ chỉnh tệp cấu hình kiểm thử, 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 kiểm thử VTS không yêu cầu chạy khung Android và việc chạy kiểm thử khi khung dừng cho phép kiểm thử chạy ổn định mà không bị ảnh hưởng bởi các lỗi không ổn định của 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 bạn tuỳ chỉnh tệp cấu hình kiểm thử, 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 trường hợp như vậy, bạn có thể thêm các lựa chọn của trình chạy kiểm thử vào tệp XML.

Ví dụ: chế độ cài đặt native-test-timeout trong mục 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ố 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 bạn tuỳ chỉnh tệp cấu hình kiểm thử, 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 để cho biết cấp độ API của hình ảnh nhà cung cấp trên các thiết bị này. Kết hợp các thuộc tính này với ro.product.first_api_level, 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 do hệ thống tự động đặt bằng cách tính cấp độ API nhà cung cấp bắt buộc bằ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 chi tiết, hãy xem bài viết 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 cho vendor freeze được phát hành lần đầu tiên bằng 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à giá trị cố định trong suốt vòng đời của SoC.

Để đặt ro.board.first_api_level, các 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 được đặt theo quy trình init của nhà cung cấp.

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 nhà cung cấp có định dạng YYYYMM mà API nhà cung cấp đã được cố định. Hệ thống bản 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 biết cấp độ API mà hình ảnh nhà cung cấp cần hỗ trợ. Tham số này được tự động đặt thành ro.product.first_api_level hoặc ro.board.api_level nếu ro.board.first_api_level xuất hiện và ro.board.api_level được đặt thành cấp độ API trước đó so với 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. Các kiểm thử cho quá trình triển khai của nhà cung cấp yêu cầu nâng cấp hình ảnh của nhà cung cấp có thể bị loại trừ 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 trên 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 chúng 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 chúng trên nhiều thiết bị.