自動化測試基礎架構

Android 9 內含供應商測試套件 (VTS) 自動化測試基礎架構,提供 VTS、CTS 或其他合作夥伴測試 執行 Android 開放原始碼計畫通用系統映像檔 (GSI) 的裝置。先前執行 執行測試是高度手動操作新的 VTS 測試基礎架構 支援一天之中多次執行自動測試 裝置。

建築

VTS 自動化測試基礎架構採用以下架構:

自動化測試架構

圖 1. VTS 自動化測試基礎架構架構

測試觸發時,VTS 自動化測試基礎架構會執行 以下工作:

  1. 從不同的位置擷取版本構件並測試資源:
    • 合作夥伴 Android 版本 (PAB)。GSI、VTS 與其他版本
    • 本機檔案系統、Google Cloud Storage 或其他供應商專屬的建構系統。適用於未將版本儲存在 Google 雲端的合作夥伴。
  2. 將建構構件 (來自裝置) 和 GSI (來自 Android 開放原始碼計畫) 刷入已連結的裝置。
  3. 使用本機 TradeFed 或雲端中的 TradeFed 執行 VTS 測試。
  4. 將測試結果回報至 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 版本

將最新的裝置映像檔下載到主機後,這些映像檔 必須先刷新到裝置上。做法是以標準的 adbfastboot 指令和 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 資訊主頁專案。