貿易聯盟概述

Trade Federation(Tradefed 或簡稱 TF)是一個持續測試框架,專為在 Android 設備上運行測試而設計。例如,Tradefed 用於運行兼容性測試套件 (CTS)供應商測試套件 (VTS)

Trade Federation 是一個在主機上運行的 Java 應用程序,並通過 adb 使用 ddmlib(DDMS 背後的庫)與一個或多個 Android 設備進行通信。

我們在下面列出了 TF 的一些主要功能,以及幾個示例用例。也就是說,如果您想直接進入並開始,您可以直接前往“從這裡開始”頁面。

特徵

  • 模塊化、靈活、可擴展的設計
  • 內置支持運行許多不同類型的 Android 測試: instrumentationuiautomator 、native/gtest、基於主機的 JUnit 等
  • 在 adb 之上提供可靠性和恢復機制
  • 支持在多個設備上並行調度和運行測試

有關如何運行現有測試(例如Instrumentation )的最新信息,請參閱通過 TF進行測試。

用例

Trade Federation 的模塊化使其可以直接插入具有現有構建、測試和報告基礎架構的環境中。我們在下面列出了一些示範性用例,其中 tradefed 可以實現高效、可擴展的測試實踐。

首先,根據“哪些部分是可修改的,哪些部分是靜態的”這個問題來考慮潛在用例的前景是有用的。例如,設備 OEM 可以修改框架、系統和硬件,但對現有應用程序幾乎沒有影響或沒有影響。另一方面,應用程序開發人員可以修改應用程序,但對系統或框架的大多數方面幾乎沒有控制權。

因此,每個用例中的實體將有不同的測試目標,並且在一組測試失敗的情況下會有不同的選項。儘管存在這些差異,Trade Federation 可以幫助他們的每個測試過程高效、靈活和可擴展。

設備代工

設備 OEM 構建硬件,並經常調整 Android 系統和框架以在該硬件上良好運行。 OEM 可能會努力實現這些目標,同時在硬件和系統級別保持穩定性和性能,並確保框架更改不會破壞與現有應用程序的兼容性。

OEM 可以實現一個設備刷新模塊,該模塊將在生命週期的目標設置階段執行。該模塊將在其執行期間完全控制設備,這將允許它潛在地強制設備進入引導加載程序、閃存,然後強制設備重新啟動回到用戶空間模式。結合一個連接到一個持續構建系統的模塊,這將允許 OEM 在他們對系統級固件和 Java 級框架進行更改時在他們的設備上運行測試。

設備完全啟動後,OEM 將能夠利用現有的基於 JUnit 的測試或編寫新的測試來驗證感興趣的功能。最後,他們可以編寫一個或多個結果報告模塊來綁定到現有的測試結果存儲庫,或者直接報告結果(例如,通過電子郵件)。

應用開發者

應用程序開發人員構建的應用程序需要在各種平台版本和各種設備上運行良好。如果在特定平台版本和/或設備上出現問題,唯一的補救措施是添加解決方法並繼續前進。對於較大的開發人員,測試過程可能會被合併到一個連續的構建序列中。對於較小的開發人員,它可能會定期或手動啟動。

大多數應用程序開發人員會使用 TF 中已經存在的 apk 測試安裝模塊。有一個從本地文件系統安裝的版本,還有一個可以安裝從構建服務下載的 apk 的版本。需要注意的是,後一個版本將繼續與在同一主機上運行的任意多個 TF 實例正常工作。

由於 TF 擅長處理多種設備,因此可以直接按用於該測試的設備類型對每個測試結果進行分類。因此,TF 可能會為應用程序的每個構建生成一個二維(或多維)兼容性矩陣。

檢測服務

例如,測試服務可能允許應用程序開發人員提交應用程序並在配備了功率測量工具的設備上運行測試,以確定應用程序的功率使用情況。這與前兩個用例的不同之處在於服務構建器不控制正在運行的設備或應用程序。

因為 Trade Federation 可以運行任何實現簡單IRemoteTest接口的 Java 類,所以編寫可以將某些外部硬件與在設備上運行的測試用例協調的驅動程序是微不足道的。驅動程序本身可以產生線程,向其他服務器發送請求,或者做它可能需要的任何其他事情。此外,結果報告接口ITestInvocationListener的簡單性和多功能性意味著將任意測試結果(例如,包括數值功率指標)表示到標準結果報告管道中同樣簡單。