Android 9 內含供應商測試套件 (VTS) 自動化測試基礎架構,提供 VTS、CTS 或其他合作夥伴測試 執行 Android 開放原始碼計畫通用系統映像檔 (GSI) 的裝置。先前執行 執行測試是高度手動操作新的 VTS 測試基礎架構 支援一天之中多次執行自動測試 裝置。
建築
VTS 自動化測試基礎架構採用以下架構:
測試觸發時,VTS 自動化測試基礎架構會執行 以下工作:
- 從不同的位置擷取版本構件並測試資源:
- 合作夥伴 Android 版本 (PAB)。GSI、VTS 與其他版本
- 本機檔案系統、Google Cloud Storage 或其他供應商專屬的建構系統。適用於未將版本儲存在 Google 雲端的合作夥伴。
- 將建構構件 (來自裝置) 和 GSI (來自 Android 開放原始碼計畫) 刷入已連結的裝置。
- 使用本機 TradeFed 或雲端中的 TradeFed 執行 VTS 測試。
- 將測試結果回報至 VTS 資訊主頁
這項程序會由 VTS 主機控制器 (HC) 負責, 研究室可以引導所有受測裝置的行為HC 負責擷取最新版本、將其刷新至裝置,以及叫用測試 (在本機或透過指揮官)。它也會與雲端排程器進行通訊,並將流量導向排程器和在 HC 上執行的 TradeFed 例項 (或其他某些測試套件) 之間。如要進一步瞭解主控器,請參閱「主控器架構」。
資源供應者
自動化測試需要系統建構、測試檔案和 VTS 構件等資源。雖然您可以從來源建構這些項目,但 定期透過 TTip-of-tree 建構應用程式,然後發布構件供下載。
合作夥伴可以透過下列位置存取自動化資源:
- 合作夥伴 Android 建構。程式已授予以下項目的程式輔助存取權: 。
- 本機檔案系統 (或類似系統)。適用於未使用合作夥伴 Android 版本的合作夥伴。
為了日後在裝置上執行閃燈作業,資源會納入兩種選項的建構提供者,這些提供者可從單一 build_provider.py
擴充,該 build_provider.py
會在本機暫時目錄中儲存建構。
合作夥伴 Android 版本
在 Android 8.1 以下版本中,Android 合作夥伴必須前往合作夥伴 Android 建構網站 (https://partner.android.com/build),前往自己的帳戶,然後透過使用者介面擷取最新的系統映像檔。為了協助合作夥伴避免這種複雜且耗費人力的流程 Android 9 包含自動支援 下載這些資源時 找到適當的憑證
建立存取權
程式存取權會使用 Google API 上的 OAuth 2,存取必要的 RPC。如要使用標準方法產生 OAuth2 憑證,合作夥伴必須與 Google 設定用戶端 ID/密鑰組合。當 PartnerAndroidBuildClient
首次指向該機密時,系統會開啟瀏覽器視窗,讓使用者登入 Google 帳戶,進而產生繼續操作所需的 OAuth2 憑證。憑證 (存取權杖和重新整理權杖) 會儲存在本機,也就是說合作夥伴只需登入一次。
網址的 POST 要求
按一下 PAB 中的資源連結,系統會傳送 POST 要求,其中包含該資源的必要資料,包括:
- 版本 ID, 建構目標
- 資源名稱
- 樹枝
- 候選版候選名稱,以及候選者是否為內部人員 版本
POST 要求是由 downloadBuildArtifact
方法接收
buildsvc
RPC 的一環,會傳回可用於
資源存取權
- 如果是 Clockwork Companion APK 資源,該網址是代管位置的可讀取網址 PAB (受驗證保護,且可透過適當的 OAuth2 存取) 憑證)。
- 如為其他資源,則是來自內部 IP 位址的長串網址 Android Build API (5 分鐘後就會失效)。
取得網址
為避免跨網站偽造要求,buildsvc
RPC 需要將 XSRF 權杖與其他參數一併 POST。雖然這個權杖可讓程序更安全,但也讓程式輔助存取變得更加困難,因為現在存取權需要權杖 (僅適用於 PAB 頁面的 JavaScript)。
為避免這個問題,Android 9 會重新設計網址
為所有檔案 (不只是 APK) 命名配置,以便將可預測的網址名稱用於
存取構件清單和構件網址PAB 現在使用方便的網址
可讓合作夥伴下載資源的格式;說明中心指令碼可下載
就能輕鬆使用這些 APK,因為已知網址格式,說明中心也可以略過
XSRF/Cookie 問題,因為不需要 buildsvc
RPC。
本機檔案系統
使用具有構件清單 (或 ZIP 檔案) 的目錄,建構供應器 會根據目錄中的內容設定相關圖片。您可以使用 gsutil 工具,將檔案從 Google Cloud Storage 複製到本機目錄。
Flash 版本
將最新的裝置映像檔下載到主機後,這些映像檔
必須先刷新到裝置上。做法是以標準的
adb
和 fastboot
指令和 Python 子程序
,根據建構供應商儲存的暫存檔案路徑建立預測。
支援的動作:
- 僅刷新 GSI
- 從主要系統刷新個別映像檔 (例如
fastboot flash boot boot.img
) - 從主系統刷新所有映像檔。示例:
fastboot flashall
(使用內建的flashall
公用程式)fastboot flash
(一次一個)
執行測試
在 Android 9 中,VTS 的自動化測試 基礎架構僅支援 TradeFed 測試控管工具,但可以擴充 未來也能夠支持其他企業
裝置準備就緒後,您可以使用 以下選項:
- 在本機使用 TradeFed 功能時,請在主機中使用
test
指令 取得 VTS 測試計畫名稱 (例如vts-selftest
),然後執行測試。 - 使用 TradeFed 叢集 (可選擇連線至 MTT) 時,請在主控台控制台中使用
lease
指令,查看未執行完畢的測試。
如果使用 TradeFedCluster,TradeFed 執行 擔任遠端管理員 如果沒有,則會使用 Python 子程序叫用測試。
報表結果
VtsMultiDeviceTest
會自動將測試結果回報給部分 VTS 資訊主頁專案。