Android Compatibility Test Suite(CTS)
阿新 • • 發佈:2018-12-14
Overview
How does the CTS work?
CTS(Compatibility Test Suite)相容性測試套件,是一個免費的商業級測試套件,CTS 代表相容性的“機制”。
CTS 在桌面裝置上執行,並直接在連線的裝置或模擬器上執行測試用例。CTS 是一套單元測試,旨在整合到工程師構建裝置的日常工作流程(例如通過連續構建系統)中。其目的是儘早發現不相容性,並確保軟體在整個開發過程中保持相容性。
CTS 是一個自動化測試工具,其中包括兩個主要軟體元件:
- CTS tradefed 自動化測試框架會在桌面裝置上執行,並管理測試執行情況。
- 單獨的測試用例會在被測裝置 (DUT) 上執行。測試用例採用 Java 語言編寫為 JUnit 測試,並打包為 Android .apk 檔案,以在實際目標裝置上執行。
相容性測試套件驗證程式(CTS 驗證程式)是對 CTS的補充。CTS 驗證程式為無法在沒有手動輸入(例如音訊質量、加速度計等)的固定裝置上進行測試的 API 和功能提供測試。
CTS 驗證程式是一款手動測試工具,包含以下軟體元件:
- 在 DUT 上執行並收集結果的 CTS 驗證程式應用。
- 在桌面裝置上執行,以便為 CTS 驗證程式應用中的某些測試用例提供資料或額外控制的可執行檔案或指令碼。
Workflow
PC端和Device端(手機、平板等等)通過adb通訊,PC發command到Device,run test case;然後Device執行完會把測試結果返回給PC
Types of test cases
CTS 包含以下型別的測試用例:
- 單元測試會測試 Android 平臺中很微小的程式碼元素;例如 java.util.HashMap 等單個類。
- 功能測試會通過較高級別的用例將 API 組合到一起進行測試。
CTS 的未來版本將包含以下型別的測試用例:
- 穩健性測試會測試系統在壓力下的耐久性。
- 效能測試會根據定義的基準測試系統的效能(例如每秒渲染幀數)。
Areas covered
Area | Description |
---|---|
Signature tests | 每個 Android 版本中都包含一個 XML 檔案,用於描述這一版本所含的所有公開 API 的簽名。CTS 包含一個實用工具,用於根據裝置上可用的 API 檢查這些 API 簽名。簽名檢查的結果會記錄在測試結果 XML 檔案中。 |
Platform API Tests | 按照 SDK 類索引所述內容來測試平臺(核心庫和 Android 應用框架)的 API,以確保 API 的正確性,包括正確的類、屬性、方法簽名以及正確的方法行為;此外還需進行負面測試,以確保不正確的引數處理產生預期行為。 |
Dalvik Tests | 這類測試側重於測試 Dalvik 可執行格式的檔案。 |
Platform Data Mode | CTS 會測試通過內容提供程式提供給應用開發者的核心平臺數據模型:通訊錄、瀏覽器、設定等。 |
Platform Intents | CTS 會測試核心平臺 Intent。 |
Platform Permissions | CTS 會測試核心平臺許可權 |
Platform Resources | CTS 會測試核心平臺資源型別的處理是否正確。這包括對以下資源的測試:簡單值、可繪製資源、九宮格、動畫、佈局、樣式和主題背景,以及載入備用資源。 |
Setting up CTS
Desktop Machine
在run cts之前需要搭建cts測試環境,需要安裝以下工具,這三個工具可以到Android官網上下載。
裝好了用以下命令檢查一下
java -version
adb version
aapt version
CTS files
Android device configuration
需要對裝置做一些設定,這個應該要看具體的testcase和裝置
Running CTS tests
其實我現在最常用的就是 run cts -m [module] -t [testcase_name]
Run | Description |
---|---|
run cts | full run |
run retry | For Android 9. Retry all tests that failed or were not executed from the previous sessions. |
–plan <test_plan_name> | Run the specified test plan. |
run cts -m [module] -t [testcase_name] | Run the specified test module or modules. For example: run cts -m Gesture -t android.gesture.cts.GestureTest#testGetStrokes |
–subplan <subplan_name> | Run the specified subplan. |
–shard-count <number_of_shards> | For Android 9. Shard a CTS run into given number of independent chunks, to run on multiple devices in parallel. |
–serial/-s | Run CTS on the specific device. |
–include-filter <module_name> [–include-filter …] | Run only with the specified modules. |
–exclude-filter <module_name> [–exclude-filter …] | Exclude the specified modules from the run. |
–log-level-display/-l <log_level> | Run with the minimum specified log level displayed to STDOUT. Valid values: [VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]. |
–abi <abi_name> | Force the test to run on the given ABI, 32 or 64. By default CTS runs a test once for each ABI the device supports. |
–logcat, --bugreport, and --screenshoot-on-failure | Give more visibility into failures and can help with diagnostics. |
–device-token | Specifies a given device has the given token eg. --device-token 1a2b3c4d:sim-card… |
–skip-device-info | Skips collection of information about the device. Note: do not use this option when running CTS for approval. |
–skip-preconditions | Bypasses verification and setup of the device’s configuration, such as pushing media files or checking for Wi-Fi connection. |