Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

自動化測試基礎架構

Android 9包括供應商測試套件(VTS)基礎結構,用於在運行AOSP通用系統映像(GSI)的伙伴設備上自動測試VTS,CTS或其他測試。以前,運行這些測試是高度手動的操作;新的VTS測試基礎結構旨在支持每天在多個設備上進行多次自動測試。

建築

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

Automated test architecture

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

觸發測試後,VTS自動測試基礎結構將執行以下任務:

  1. 從不同位置獲取構建工件並測試資源:
    • 合作夥伴Android版本(PAB) 。對於GSI,VTS框架和其他一些構建。
    • 本地文件系統,Google雲存儲或其他特定於供應商的構建系統 。對於不將內部版本存儲在Google的雲中的合作夥伴。
  2. 閃存將構件(來自設備)和GSI(來自AOSP)構建到所連接的設備上。
  3. 使用本地TradeFed或云中的TradeFed運行VTS測試。
  4. 將測試結果報告給VTS儀表板

該過程由VTS主機控制器(HC)進行協調,VTS主機控制器是實驗室中的一台機器,用於指示所有被測設備的行為。 HC負責獲取最新版本,將其刷新到設備上,並調用測試(本地或通過指揮官)。它還與雲調度程序進行通信,並在調度程序和運行在HC上的TradeFed實例(或某些其他工具)之間引導流量。有關主機控制器的詳細信息,請參見主機控制器體系結構

資源提供者

自動化測試需要係統構建,測試文件和VTS工件等資源。儘管可以從源代碼構建它們,但是更容易從樹梢定期構建它們,然後發布工件以進行下載。

合作夥伴可以使用以下位置訪問自動化資源:

  • 合作夥伴Android Build 。按帳戶授予程序訪問權限。
  • 本地文件系統 (或類似文件 )。對於不使用Partner Android Build的合作夥伴。

為了稍後用於刷新設備,資源包括兩個選項的構建提供程序,它們從單個build_provider.py擴展而來,該文件將構建存儲在本地臨時目錄中。

合作夥伴Android版本

在Android 8.1及更低版本中,要求Android合作夥伴訪問Partner Android Build網站( https://partner.android.com/build ),導航至其帳戶,並通過用戶界面獲取最新的系統映像。為了幫助合作夥伴避免此緩慢而費力的過程,Android 9包括在提供適當憑據後自動從PAB下載這些資源的支持。

建立訪問

程序訪問使用Google API上的OAuth2訪問所需的RPC。使用生成OAuth2憑據的標準方法 ,合作夥伴必須與Google設置客戶端ID /秘密對。當PartnerAndroidBuildClient首次指向該機密時,它將打開一個瀏覽器窗口供用戶登錄其Google帳戶,該窗口將生成前進所需的OAuth2憑據。憑據(訪問令牌和刷新令牌)存儲在本地,這意味著合作夥伴只需登錄一次。

POST URL請求

單擊PAB中的資源鏈接將發送POST請求,其中包含該資源的必要數據,包括:

  • 建立編號,建立目標
  • 資源名稱
  • 發布候選名稱,以及候選是否為內部版本

POST請求由buildsvc RPC的downloadBuildArtifact方法接收,該方法返回可用於訪問資源的URL。

  • 對於Clockwork Companion APK資源,該URL是PAB上託管的可讀URL(受auth保護,並可以使用適當的OAuth2憑據進行訪問)。
  • 對於其他資源,該URL是來自內部Android Build API的長且不受保護的URL(五分鐘後失效)。

獲取URL

為了避免跨站點請求偽造, buildsvc RPC要求將XSRF令牌與其他參數一起發布。儘管此令牌使過程更安全,但也使編程訪問變得更加困難,因為現在還需要訪問令牌(該令牌僅在PAB頁面的JavaScript中可用)。

為避免此問題,Android 9重新設計了所有文件(不僅是APK)的URL命名方案,以使用可預測的URL名稱訪問工件列表和工件URL。現在,PAB使用一種方便的URL格式,使合作夥伴可以下載資源。 HC腳本可以輕鬆下載那些APK,因為URL格式是已知的,並且HC可以繞過XSRF / cookie問題,因為它不需要buildsvc RPC。

本地文件系統

給定一個包含工件列表(或zip文件)的目錄,構建提供程序將根據目錄中的內容設置相關圖像。您可以使用gsutil工具將文件從Google Cloud Storage複製到本地目錄。

閃爍的版本

將最新的設備映像下載到主機後,必須將這些映像刷新到設備上。這是根據構建提供程序存儲的臨時文件路徑,使用標準adbfastboot命令以及Python子fastboot完成的。

支持的動作:

  • 僅閃爍GSI
  • 從主系統中fastboot flash boot boot.img單個映像(例如, 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儀表板項目。