Android 9 供應商測試套件 (VTS) 支持一種運行時方法,用於使用設備配置來確定應為該設備目標跳過哪些 VTS 測試。
VTS 測試靈活性
從 Android 8.0 開始,所有搭載 Android 8.0 及更高版本的設備都需要進行 VTS 測試。但是,並非所有 VTS 測試都適用於所有設備目標。例如:
- 如果特定設備不支持測試 HAL(例如 IR),則 VTS 不需要針對該設備目標運行該 HAL 測試的測試。
- 如果多個設備共享相同的 SoC 和供應商映像但具有不同的硬件功能,則 VTS 必須確定是否應該針對特定設備目標運行或跳過測試。
VTS 測試類型
VTS 包括以下測試類型:
- 合規性測試確保框架和供應商分區之間的兼容性。這些測試需要在搭載 Android 8.0 或更高版本的設備上運行(並通過)。
- 不合規測試幫助供應商提高產品質量(性能/模糊測試等)。這些測試對於供應商來說是可選的。
測試是否是合規性測試取決於它屬於哪個計劃。使用VTS 計劃運行的測試被視為合規性測試。
確定支持的 HAL
VTS 可以使用以下文件來確定設備目標是否支持特定的 HAL:
-
/system/compatibility_matrix.xml
。聲明框架所需的 HAL 實例。示例:<hal format="hidl" optional="true"> <name>android.hardware.vibrator</name> <version>1.0-1</version> <interface> <name>IVibrator</name> <instance>default</instance> </interface> </hal>
-
optional
屬性指示框架是否嚴格要求 HAL。 - 該文件可能包含相同 HAL(具有相同名稱)但具有不同版本和接口的多個條目。
- 該文件可能包含同一條目的多個
version
配置,表明框架可以使用不同的版本。 -
version1.0-1
表示框架可以使用最低版本 1.0,並且不需要高於 1.1 的版本。
-
- 設備
manifest.xml
。聲明供應商提供的 HAL 實例。示例:<hal format="hidl"> <name>android.hardware.vibrator</name> <transport>hwbinder</transport> <version>1.2</version> <interface> <name>IVibrator</name> <instance>default</instance> </interface> </hal>
- 該文件可能包含相同 HAL(具有相同名稱)但具有不同版本和接口的多個條目。
- 如果該文件只包含一個條目的單個
version
配置,則version1.2
表示供應商支持1.0~1.2 的所有版本。
- 伊莎爾設備上的一個工具,顯示有關在
hwservicemanager
註冊的 HAL 服務的運行時信息。示例:android.hardware.vibrator@1.0::IVibrator/default
lshal
還顯示了所有具有直通實現的 HAL(即在設備上具有相應的-impl.so
文件)。示例:android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/) android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
合規性測試
對於合規性測試,VTS 依賴供應商清單來確定(和測試)設備提供的所有 HAL 實例。決策流程:
不合規測試
對於不合規測試,VTS 依賴於供應商清單和lshal
輸出來確定(和測試)未在manifest.xml
文件中聲明的實驗性 HAL。決策流程:
查找供應商清單
VTS 按以下順序在以下位置檢查供應商manifest.xml
文件:
-
/vendor/etc/vintf/manifest.xml
+ ODM 清單(如果在兩個地方都定義了相同的 HAL,ODM 清單會覆蓋/vendor/etc/vintf/manifest.xml
中的那個) -
/vendor/etc/vintf/manifest.xml
- ODM
manifest.xml
文件,按以下順序從以下文件加載:-
/odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
-
/odm/etc/vintf/manifest.xml
-
/odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
-
/odm/etc/manifest.xml
-
/vendor/manifest.xml
-
VTS 可測試性檢查器
vts_testibility_checker
是與 VTS 一起打包的二進製文件,由 VTS 測試框架在運行時用於確定給定的 HAL 測試是否可測試。它基於libvintf
來加載和解析供應商清單文件,並實現上一節中描述的決策流程。
要使用vts_testability_check
:
- 對於一致性測試:
vts_testability_check -c -b <bitness> <hal@version>
- 對於不合規測試:
vts_testability_check -b <bitness> <hal@version>
vts_testability_check
的輸出使用以下 json 格式:
{testable: <True/False> Instances: <list of instance names of HAL service>}
確定訪問的 HAL
要確定 VTS 測試訪問哪些 HAL,請確保每個 HAL 測試都使用VtsHalHidlTargetTestEnvBase
模板來註冊測試中訪問的 HAL。然後,VTS 測試框架可以在預處理測試時提取已註冊的 HAL。
對於合規性測試,您還可以檢查/system/etc/vintf/manifest.xml
。如果此處定義了 HAL,則 VTS 應對其進行測試。 (對於系統提供的 HAL 服務(例如graphics.composer/vr
),HAL 是在/system/manifest.xml
中聲明的。)