Cài đặt thử

Bộ thử nghiệm

Để một bài kiểm tra trở thành một phần của VTS, bài kiểm tra đó phải có cài đặt sau trong Android.bp .

test_suites: ["vts"],

Ngoài ra, việc thêm bài kiểm tra vào bộ general-tests sẽ cho phép nó trở thành một phần của bộ Bản đồ kiểm tra được sử dụng trong quá trình kiểm tra gửi trước.

Cấu hình thử nghiệm

Trong hầu hết các trường hợp, cấu hình thử nghiệm, là tệp XML được Liên đoàn Thương mại sử dụng để chạy thử nghiệm VTS, được tạo tự động trong quá trình xây dựng. Tuy nhiên, bạn có thể tùy chỉnh cấu hình thử nghiệm.

Tạo một tập tin cấu hình thử nghiệm tùy chỉnh

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

Nếu bạn phải tùy chỉnh tệp XML thử nghiệm, 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 thử nghiệm được tạo tự động, trước tiên hãy chạy lệnh make để tạo cấu hình, như hiển thị bên dưới.

$ m VtsHalUsbV1_1TargetTest

Trong thư mục xây 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ư hiển thị bên dưới.

$ 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 thử nghiệm 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 thử nghiệm. 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",

Bây giờ bạn đã có tệp cấu hình thử nghiệm để làm việc và thực hiện tùy chỉnh.

Buộc chạy thử nghiệm bằng adb root

Hầu hết các bài kiểm tra VTS đều yêu cầu quyền root để chạy. Nếu tệp cấu hình thử nghiệm đượ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 tùy chỉnh, hãy thêm phần sau vào tệp XML thử nghiệm.

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

Dừng khung trong quá trình thử nghiệm

Nhiều thử nghiệm VTS không yêu cầu chạy khung Android và việc chạy thử nghiệm với khung đã dừng cho phép thử nghiệm chạy ổn định mà không bị ảnh hưởng bởi lỗi thiết bị. Nếu tệp cấu hình thử nghiệm đượ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 thử nghiệm được tùy chỉnh, hãy thêm phần sau vào tệp XML thử nghiệm.

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

Thêm đối số kiểm tra bổ sung

Một số thử nghiệm 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 tùy chọn chạy thử trong tệp XML.

Ví dụ: cài đặt native-test-timeout trong mục sau cho phép chạy thử nghiệm 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 thử nghiệm được tạo tự động, bạn có thể thêm thuộc tính sau vào Android.bp .

test_min_api_level: 29,

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

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

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. Kết hợp các thuộc tính này với ro.product.first_api_level , bộ thử nghiệm sẽ chọn trường hợp thử nghiệm 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 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 .

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 SoC được phát hành lần đầu tiên 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 tồn tại 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 của họ, 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

Nó sẽ tự động xác định thuộc tính ro.board.first_api_level cho vendor/build.prop trên thiết bị. Thuộc tính được thiết lập bởi quá 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 hình ảnh nhà cung cấp cho SoC. Khi cấp API của hình ảnh nhà cung cấp có ro.board.first_api_level được cập nhật, thiết bị sử dụng SoC phải xác định thuộc tính ro.board.api_level với cấp API hiện tại của hình ảnh nhà cung cấp thay vì cập nhật ro.board.first_api_level . Nếu thuộc tính này không được đặt, ro.board.first_api_level sẽ được sử dụng theo mặc định.

Để đặt ro.board.api_level , hãy xác định BOARD_API_LEVEL trong tệp device.mk với giá trị mong muốn.

ro.vendor.api_level

Thuộc tính ro.vendor.api_level được giới thiệu trong Android 13 để hiển thị cấp độ API mà hình ảnh nhà cung cấp bắt buộc phải hỗ trợ. Điều này được tự động đặt ở mức tối thiểu là ro.board.api_level (hoặc ro.board.first_api_level nếu ro.board.api_level không được xác định) và ro.product.first_api_level . Các thử nghiệm 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ể được 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 khảo thuộc tính này.

Quá trình phân mảnh 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 chia 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 gói 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 gói CTS-on-GSI thành các phân đoạn và chạy chúng trên nhiều thiết bị.

,

Bộ thử nghiệm

Để một bài kiểm tra trở thành một phần của VTS, bài kiểm tra đó phải có cài đặt sau trong Android.bp .

test_suites: ["vts"],

Ngoài ra, việc thêm bài kiểm tra vào bộ general-tests sẽ cho phép nó trở thành một phần của bộ Bản đồ kiểm tra được sử dụng trong quá trình kiểm tra gửi trước.

Cấu hình thử nghiệm

Trong hầu hết các trường hợp, cấu hình thử nghiệm, là tệp XML được Liên đoàn Thương mại sử dụng để chạy thử nghiệm VTS, được tạo tự động trong quá trình xây dựng. Tuy nhiên, bạn có thể tùy chỉnh cấu hình thử nghiệm.

Tạo một tập tin cấu hình thử nghiệm tùy chỉnh

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

Nếu bạn phải tùy chỉnh tệp XML thử nghiệm, 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 thử nghiệm được tạo tự động, trước tiên hãy chạy lệnh make để tạo cấu hình, như hiển thị bên dưới.

$ m VtsHalUsbV1_1TargetTest

Trong thư mục xây 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ư hiển thị bên dưới.

$ 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 thử nghiệm 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 thử nghiệm. 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",

Bây giờ bạn đã có tệp cấu hình thử nghiệm để làm việc và thực hiện tùy chỉnh.

Buộc chạy thử nghiệm bằng adb root

Hầu hết các bài kiểm tra VTS đều yêu cầu quyền root để chạy. Nếu tệp cấu hình thử nghiệm đượ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 tùy chỉnh, hãy thêm phần sau vào tệp XML thử nghiệm.

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

Dừng khung trong quá trình thử nghiệm

Nhiều thử nghiệm VTS không yêu cầu chạy khung Android và việc chạy thử nghiệm với khung đã dừng cho phép thử nghiệm chạy ổn định mà không bị ảnh hưởng bởi lỗi thiết bị. Nếu tệp cấu hình thử nghiệm đượ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 thử nghiệm được tùy chỉnh, hãy thêm phần sau vào tệp XML thử nghiệm.

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

Thêm đối số kiểm tra bổ sung

Một số thử nghiệm 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 tùy chọn chạy thử trong tệp XML.

Ví dụ: cài đặt native-test-timeout trong mục sau cho phép chạy thử nghiệm 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 thử nghiệm được tạo tự động, bạn có thể thêm thuộc tính sau vào Android.bp .

test_min_api_level: 29,

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

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

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. Kết hợp các thuộc tính này với ro.product.first_api_level , bộ thử nghiệm sẽ chọn trường hợp thử nghiệm 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 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 .

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 SoC được phát hành lần đầu tiên 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 tồn tại 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 của họ, 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

Nó sẽ tự động xác định thuộc tính ro.board.first_api_level cho vendor/build.prop trên thiết bị. Thuộc tính được thiết lập bởi quá 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 hình ảnh nhà cung cấp cho SoC. Khi cấp API của hình ảnh nhà cung cấp có ro.board.first_api_level được cập nhật, thiết bị sử dụng SoC phải xác định thuộc tính ro.board.api_level với cấp API hiện tại của hình ảnh nhà cung cấp thay vì cập nhật ro.board.first_api_level . Nếu thuộc tính này không được đặt, ro.board.first_api_level sẽ được sử dụng theo mặc định.

Để đặt ro.board.api_level , hãy xác định BOARD_API_LEVEL trong tệp device.mk với giá trị mong muốn.

ro.vendor.api_level

Thuộc tính ro.vendor.api_level được giới thiệu trong Android 13 để hiển thị cấp độ API mà hình ảnh nhà cung cấp bắt buộc phải hỗ trợ. Điều này được tự động đặt ở mức tối thiểu là ro.board.api_level (hoặc ro.board.first_api_level nếu ro.board.api_level không được xác định) và ro.product.first_api_level . Các thử nghiệm 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ể được 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 khảo thuộc tính này.

Quá trình phân mảnh 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 chia 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 gói 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 gói CTS-on-GSI thành các phân đoạn và chạy chúng trên nhiều thiết bị.