Android Test Station 是一種測試工具,Android 開發人員和測試工程師可以使用它來採用使用者介面來運行標準 Android 測試套件,例如Android 相容性測試套件 (CTS) 。該工具可作為Trade Federation (TF)的 Web 介面,可讓您透過最少的設定在一組測試裝置上輕鬆執行 CTS,並制定持續執行測試的計劃。
設定 Android 測試站
本節介紹如何安裝和設定 Android Test Station。
Android Test Station 使用以下位置的原始碼:
- Android測試站原始碼
- TradeFed 叢集原始碼
安裝Android測試站
遵循您執行的測試套件的任何硬體和軟體要求。
CTS 的要求可在source.android.com上找到。
ATS 沒有額外的硬體需求,但我們建議使用CTS 主機要求作為起點。
安裝 Android Test Station 有兩種方法:
使用安裝程式安裝
在 Ubuntu 20.04+ 上,安裝程式會安裝並配置執行 Android Test Station 所需的所有程式和資源。
若要使用安裝程式:
運行安裝程式:
curl https://storage.googleapis.com/android-mtt.appspot.com/prod/install.sh | bash
執行
mtt version
以檢查 Android Test Station CLI 的安裝版本。
手動安裝
安裝 Docker
請依照在 Linux 電腦上安裝 Docker Community Edition (CE) 的說明進行操作。
您可能需要重新啟動終端機視窗或登出並再次登入才能使權限變更生效。
安裝Python 3
Android Test Station CLI 已針對 Python 版本 3.7 至 3.10 進行驗證。
對於 Ubuntu 16.04 或更早版本,首先透過執行下列操作之一來新增 Python 3 的儲存庫:
運行這個命令:
sudo add-apt-repository ppa:deadsnakes/ppa
從來源建置並安裝儲存庫。
若要安裝 Python 3,請執行以下命令:
sudo apt-get update
sudo apt install python3 python3-distutils
若要安裝特定的 Python 3 版本(例如 3.10),請執行下列命令:
sudo apt-get update
sudo apt install python3.10 python3.10-distutils
取得 Android 測試站 CLI
啟動Android測試站
使用以下命令啟動 Android 測試站:
mtt start
首次啟動 UI 時,可能需要幾分鐘才會顯示。 CLI 顯示 Web URL 以存取瀏覽器中的 UI。預設情況下,Web URL 為localhost:8000
。如果需要,您可以在啟動時使用--port
標誌來變更預設連接埠。
如果有新版本可用,您可以更新到目前版本。您可以查看最新版本的發行說明。
若要更新至目前版本,請執行:
mtt start --force_update
要停止該應用程序,請運行:
mtt stop
若要查看其他指令的列表,請使用:
mtt --help
備份和還原資料庫
若要備份 ATS 資料庫,請停止應用程式並執行下列命令,該命令會將目前資料庫備份到主目錄中名為mtt-backup.tar
的 TAR 檔案中:
docker run --rm --mount source=mtt-data,target=/data -v ~:/out ubuntu bash -c "cd /data && tar cvf /out/mtt-backup.tar ."
若要恢復,請在啟動應用程式之前執行以下命令:
docker run --rm --mount source=mtt-data,target=/data -v ~:/out ubuntu bash -c "cd /data && tar xvf /out/mtt-backup.tar"
設定嚮導
首次安裝並執行 Android Test Station 後,設定精靈將引導您完成幾個步驟,以協助您針對您的環境自訂工具。您在此處所做的任何更改都可以稍後透過「設定」頁面重新配置。
恢復配置備份
如果您有從另一台 Android Test Station 主機備份的設定文件,則可以透過點擊「上傳檔案」按鈕上傳該檔案以複製從該主機修改的任何配置。
圖 1.恢復配置備份。
設定預設服務帳戶
您可以設定 Android Test Station 在存取您的資源(例如 Google Cloud Storage、Google Drive)時預設使用的服務帳戶。若要驗證您的服務帳戶,請按一下上傳服務帳戶金鑰並選擇您的服務帳戶的 JSON 金鑰檔案。
圖 2.設定服務帳戶。
服務帳戶驗證成功後,帳戶電子郵件地址將顯示在頁面右上角。若要變更服務帳戶,請按一下帳戶名稱,刪除目前預設帳戶,然後上傳新的服務帳戶金鑰。
圖 3.更改服務帳戶。
導入配置集
配置集是用於運行測試套件的一組配置,包括相關的設備操作和建置通道。配置集託管在特定的 Google Cloud Storage (GCS) 儲存桶中。使用您的 Google 帳戶驗證 GCS 建置頻道後,您會看到可用的所有設定集的清單。
選擇您想要新增至 Test Station 主機的任何配置集,然後按一下Import Selected 。
圖 4.導入配置集。
包括 Wi-Fi 設定
某些 CTS 測試要求您的裝置連接到 Wi-Fi 熱點。若要選擇您的 Wi-Fi 網絡,請輸入WiFi SSID和選購的WiFi PSK 。
圖 5.Wi -Fi 熱點設定。
完成設定精靈後,頁面將重新載入並套用新的設定。
連接裝置
必須啟用 USB 偵錯才能使用裝置進行測試。要啟用調試:
請按照啟用開發人員選項和偵錯中的說明進行操作。
如果您打算使用預先載入自訂 ADB 金鑰的測試 Android 版本,請將自訂
.adb_key
檔案放在~/.android/
目錄下。這些檔案會自動載入並傳遞到 ADB,以便在為執行這些版本的裝置刷新裝置後自動啟用 USB 偵錯。
使用 USB 將裝置連接到主機。
刷新 Web 介面後一分鐘內,裝置就會出現在 Android 測試站裝置標籤中。您也可以在此標籤上查看設備的狀態。
圖 6.連接設備。
不同的設備狀態是:
- 可用- 設備已連接並準備好運行測試。
- 已指派- 裝置已連線並且目前正在執行測試。每台設備一次只能執行一項測試,因此設備必須先完成目前測試,然後才能執行新測試。
運行測試
選擇測試
Android Test Station 隨附一組預先捆綁的 CTS 配置。要執行這些測試之一,請前往「測試套件」選項卡,然後按一下所需測試的「執行測試」 。
圖 7.選擇測試。
若要編輯或新增測試,請參閱新增測試。
配置測試運行
編輯用於此特定測試運行的參數。大多數參數都預先填入了所選測試配置中定義的值。
可以使用預設值完成此步驟,但您可以變更任何參數,例如Max Retry和Command ,以滿足您的需求。
圖 8.配置測試運行。
測試運行參數為:
- 名稱- 您希望運行的測試套件的名稱。
- 運行計數- 此測試運行應按計劃執行的次數。測試運行是使用Trade Federation安排的,如果有能力的話,它最多可以並行運行 20 個測試運行。
- 最大重試次數 - 如果至少一項測試失敗,則重試測試運行的最大次數。對於完整的 CTS 運行,通常設定為 4-6 次重試,以處理不穩定的測試。
- 佇列逾時- 如果測試運行處於排隊狀態的時間過長,則會自動取消。在此指定取消之前要等待的時間。預設為 24 小時。
命令- 運行測試套件的命令。您可以在此輸入其他命令列參數。例如,使用以下命令執行 CTS 8.1 中的特定模組:
cts-suite -m ShortModuleName
重試命令- 用於重試測試套件的命令。您可以在此處新增其他命令列參數。例如,若要僅重試 CTS 8.1 中的特定模組,請使用:
cts --retry 0 -m ShortModuleName
重試參數可能與初始命令可用的參數不同,因此請檢查官方網站上所選測試套件支援的參數。
先前的測試運行- 如果您希望重新運行先前的測試運行:
本地 - 如果運行是在目前主機上啟動的,請輸入查看測試運行詳細資訊時看到的測試運行 ID。
圖 9.本地先前的測試運行。
遠端 - 如果運行是在不同主機上啟動的,請透過選擇「遠端」 、點擊「上傳測試結果檔案」並從本機儲存中選擇一個檔案來上傳測試結果檔案。
圖 10.遠端先前的測試運行。
選擇設備
按一下核取方塊選擇要指派用於執行測試套件的裝置。分片計數應自動變更以符合所選設備的數量。
圖 11.選擇設備。
若要依設備序號以外的屬性選擇設備,您可以手動輸入「設備規格」。例如,要選擇產品名稱為「bramble」的 3 個設備,請輸入以下內容:
product:bramble;product:bramble;product:bramble
支援的屬性有:
- 建置 ID
- 裝置序列
- 設備類型
- 主機名稱
- 產品
- 產品變體
- 模擬狀態
所有選定的設備必須處於“Available”狀態才能執行測試運行,並且在執行測試運行時它們都切換到“已指派”狀態。測試運行在等待設備可用時處於排隊狀態。
新增設備操作
設備操作是可以在每次測試運行之前執行的腳本。某些設備操作已配置,例如閃爍和重新啟動。若要建立新的設備操作,請參閱建立新的設備操作。
圖 12.設備操作。
若要將設備操作新增至測試運行,請按一下新增操作,選取要新增的操作的複選框,然後按一下新增操作。設備操作依序執行。您可以透過拖曳操作來重新排序它們。
圖 13.重新排序操作。
設定測試資源
測試資源是執行測試運行所需的檔案。例如,執行 CTS 需要android-cts*.zip
文件,而刷新裝置則需要您提供建置映像。
測試套件 zip 檔案的下載 URL 應預設為提供給合作夥伴的 Google Drive 連結。您可以透過點擊「瀏覽」來選擇不同的檔案。在彈出視窗中,您可以輸入文件下載鏈接,使用經過身份驗證的建置通道中的文件,或上傳文件以從本機儲存中使用。
圖 14.測試資源。
下面是透過 Web URL 選擇測試資源的彈出視窗。您只需輸入下載網址鏈接,然後按一下“選擇”按鈕即可確認選擇。
圖 15.測試資源選擇器 - Web URL。
如果您已將資源上傳至 Google Grive、Google Cloud Storage (GCS) 或其他頻道,您也可以導覽至特定頻道的標籤並在其中選擇資源。以下是從 Google 雲端硬碟中選擇資源的範例。
圖 16.測試資源選擇器 - Google Drive。
除了僅選擇文件外,文件名字段還支援通配符。可以在此處找到該文件。
圖 17.測試資源選擇器 - 通配符模式支援。
您也可以從 Android Test Station 的本機檔案儲存中選擇檔案。您可以將檔案上傳到此儲存體中,也可以直接使用本機檔案和目錄。
圖 18.測試資源選擇器 - 本機檔案儲存。
新增重新運行配置
您可以安排在主運行完成後開始重新運行並載入其結果,但可以使用不同的裝置、操作或資源。
圖 19.新增重新運行配置。
開始試運行
輸入測試運行所需的資訊後,按一下「開始測試運行」 。如果所有資訊均有效,則測試運行將開始,並且您將被重定向到一個頁面以查看測試運行的詳細資訊和進度。
圖 20.開始測試運行。
建立測試計劃
測試計劃用於定期建立測試運行。例如,每天下午 5 點運行 CTS 9.0。若要建立新的測試計劃,請按一下建立新的測試計劃。
圖 21.建立測試計畫。
配置測試計劃
輸入測試計劃的名稱以及您要新增的任何標籤。然後選擇要使用的時間表。
- 手動- 僅當使用者點擊測試計劃清單頁面中的運行測試計劃時,測試計劃才會建立測試運行。
- 定期- 測試計畫會自動依照選定的定期排程安排測試運行。例如,安排每天下午 5:00 進行測試運行。
- 自訂- 測試計劃根據輸入的cron 表達式自動安排測試運行。例如,要安排每天下午 5:00 進行測試運行,cron 表達式為
0 17 * * *
。
圖 22.配置測試計畫。
添加測試套件
透過點選+ 新增測試運行配置,新增您想要依測試計畫安排的測試套件。從「名稱」下拉清單中選擇一個測試套件,然後按一下「下一步」 。然後選擇您想要執行測試的設備並按一下「新增配置」 。您可以為每個測試計劃新增多個配置。
圖 23.配置測試運行。
新增設備操作
新增您想要在每次測試運行之前執行的設備操作。有關更多詳細信息,請參閱新增設備操作。
圖 24.新增設備操作。
設定測試資源
將測試資源新增至測試計劃與將它們新增至單獨的測試運行相同。有關更多詳細信息,請參閱設定測試資源。
圖 25.設定測試資源。
查看測試運行
試運行清單
在「測試運行」頁面上查看計劃的測試運行清單。按一下「檢視」以查看有關測試運行的更多詳細資訊。
您也可以透過在過濾欄中輸入字串並按Enter鍵來過濾清單。您可以使用多個過濾器,並用逗號分隔它們。該過濾器會傳回任何列中包含確切文字(無子字串匹配)的所有行,不包括Status和Created 。
空過濾器會傳回所有行。目前無法過濾具有空值的行。
圖 26.測試運行清單。
試運行詳情
您可以在此處查看測試運行的詳細信息,例如狀態、日誌和結果。
圖 27.測試運行詳細資訊。
試運轉狀態
測試運行的進度顯示在「狀態」部分。如果有相關訊息,例如下載進度、取消原因或錯誤訊息,也會顯示在此。
圖 28.測試運轉狀態。
測試運行狀態為:
- 待處理- 正在下載所需的資源。
- 已排隊- 當設備可用時,測試已準備好運行。
- 正在運行- 測試正在分配的設備上運行。
- 已完成- 測試已完成並報告其結果。
- 已取消- 測試被使用者取消或在嘗試尋找可用裝置時逾時。
- 錯誤- 發生錯誤,導致測試無法運作。
取消測試運行
如果測試運行尚未完成,您可以透過按一下「取消」 ,然後在確認對話方塊中按一下「是」來取消測試運行。如果測試運行處於排隊狀態的時間超過了queue_timeout_seconds字段,也會自動取消。在「正在運行」狀態下取消測試運行可能需要幾分鐘才能生效。
圖 29.取消測試運行。
試運行結果
測試運行完成後,將收集並顯示結果。您可以透過點擊每次運行的箭頭來查看其他詳細資訊。按一下「檢視輸出檔案」以查看收集的測試工件,例如test_result.xml
和test_result_failures.html
。
圖 30.測試運行結果。
您可以在「日誌」標籤中查看即時主機和 Tradefed 日誌。
圖 31. “日誌”標籤。
各個模組的結果位於「測試結果」標籤上。
圖 32.測試結果標籤。
您可以透過點擊「測試資源」標籤中的「開啟」來下載用作測試資源的檔案。
圖 33.測試資源標籤。
要查看測試運行的詳細信息,例如create_time ,請轉到“配置”選項卡。
圖 34.配置選項卡。
進階功能
管理設定檔
Android Test Station 使用以YAML編寫的設定檔來載入預定義選項,例如測試、建置通道和裝置操作。下面顯示了某些選項的範例設定檔。
// example_file.yaml
tests:
- id : android.cts.9_0.arm
name: CTS 9.0 (ARM)
test_resource_defs:
- name: android-cts.zip
default_download_url: https://dl.google.com/dl/android/cts/android-cts-9.0_r7-linux_x86-arm.zip
test_resource_type: TEST_PACKAGE
command: cts
env_vars:
- name: TF_PATH
value: ${TF_WORK_DIR}/android-cts/tools:${TF_WORK_DIR}/android-cts/testcases
- name: LD_LIBRARY_PATH
value: ${TF_WORK_DIR}/android-cts/lib:${TF_WORK_DIR}/android-cts/lib64
setup_scripts:
output_file_patterns:
- android-cts/logs/latest/.*
- android-cts/results/latest/.*\.html
- android-cts/results/latest/compatibility_result\..*
- android-cts/results/latest/logo.png
- android-cts/results/latest/test_result.xml
result_file: test_result.xml
java_properties:
- name: CTS_ROOT
value: ${TF_WORK_DIR}
context_file_dir: android-cts/results/
context_file_pattern: '[\d_\.]+\.zip'
retry_command_line: retry --retry 0
runner_sharding_args: --shard-count ${TF_SHARD_COUNT}
build_channels:
- id: google_drive
name: Google Drive
provider_name: Google Drive
device_actions:
- id: flash
name: Flash
test_resource_defs:
- name: bootloader.img
test_resource_type: DEVICE_IMAGE
- name: radio.img
test_resource_type: DEVICE_IMAGE
- name: img.zip
test_resource_type: DEVICE_IMAGE
tradefed_target_preparers:
- class_name: com.android.tradefed.targetprep.RunHostCommandTargetPreparer
option_values:
- name: work-dir
values:
- ${TF_WORK_DIR}
- name: host-setup-command
values:
- adb -s $SERIAL reboot-bootloader
- fastboot -s $SERIAL flash bootloader bootloader.img
- fastboot -s $SERIAL flash radio radio.img
- fastboot -s $SERIAL reboot-bootloader
- fastboot -s $SERIAL -w update img.zip
- adb -s $SERIAL wait-for-device
- name: host-cmd-timeout
values:
- 10m
當您設定 Android Test Station 實例時,您可以透過將其匯出為檔案來與其他使用者共用您的配置。為此,請轉到“設定”頁面,然後點擊右上角的“匯出” 。
圖 35.設定檔管理。
下載設定檔後,與其他使用者共用該檔案。他們可以透過點擊「導入」並選擇配置文件,將設定檔新增至其 Android Test Station 實例。
建立新設備操作
設備操作用於自動化設備設定過程。操作是在每次測試運行之前(包括重試之前)在執行測試的每個裝置上執行的腳本。若要查看可用裝置操作的列表,請前往「設定」頁面並按一下「裝置操作」標籤。多個設備操作已配置,例如重新啟動和刷新。
圖 36. “設備操作”標籤。
新增設備操作
點選新設備操作。
圖 37.新設備操作按鈕。
輸入名稱和描述。
圖 38.設備操作名稱。
按一下新增目標準備器。
輸入Trade Federation目標準備器完整類別名稱,例如
com.android.tradefed.targetprep.RunHostCommandTargetPreparer
。圖 39.新增目標準備器。
可以在com.android.tradefed.targetprep參考中找到可用目標準備器的清單。
圖 40.目標準備器清單。
新增與目標準備器一起使用的任何選項。若要查看可用選項,請檢查targetprep以取得 AOSP 中每個目標準備器的原始程式碼:
圖 41.操作選項範例。
若要新增選項,請按一下「新增目標準備器選項」並輸入所需的值。
圖 42.操作命令範例。
定義執行設備操作所需的測試資源,例如建置用於閃爍的映像。若要新增資源定義,請按一下「新增測試資源」並填寫必填欄位。如果您知道文件所在位置,則可以透過按一下瀏覽來提供預設下載 URL。如果目標準備器接受目錄作為測試資源,請選擇Decompress 。然後指定暫存工作目錄下的相對Destination目錄以及要解壓縮的檔案名稱。如果未給出檔案名,則從測試資源中解壓縮所有檔案。
圖 43.操作測試資源。
單擊更新。
圖 44.操作儲存變更。
管理測試
編輯測試
若要編輯已儲存的測試,請前往測試頁面,然後按一下要修改的測試行上的編輯。更改測試配置後,按一下「更新」 。
圖 45.編輯測試。
新增測試
若要新增測試,請前往測試頁面並按一下建立新測試。輸入適當的資訊並按一下「建立」 。
圖 46.建立測試。
圖 47.複製測試。
匯出主機配置
配置主機後,您可以將主機的配置匯出到檔案。您可以將此檔案上傳到其他主機以複製已儲存的配置。
如需匯出主機配置,請進入「設定」頁面,點選右上角的「匯出」 。
圖 48.匯出主機配置。
若要匯入主機設定文件,請進入「設定」頁面,然後按一下右上角的「匯入」 。
圖 49.導入主機配置。
使用本地檔案和目錄
從版本 R11 開始, $HOME/.ats_storage
目錄中的檔案可在 Android Test Station 中自動存取。將檔案複製或移動到該目錄中,然後您可以在安排測試運行時從「本機檔案」標籤中選擇它。
cp /path/to/file $HOME/.ats_storage
圖 50.從$HOME/.ats_storage
目錄中選擇一個檔案。
您可以使用--mount_local_path
標誌將其他目錄安裝到本機檔案儲存。
mtt start --mount_local_path=/path/to/dir1 --mount_local_path=/path/to/dir2:renamed_dir2
圖 51.安裝在本機檔案儲存中的其他目錄。
啟用多主機模式
透過多主機模式,使用者可以使用單一 ATS 控制器主機來管理設備並在多個 ATS 工作主機上進行測試。
圖 52.多主機模式架構。
若要啟動 ATS 控制器,請使用以下命令:
mtt start --operation_mode=ON_PREMISE
檢查控制器是否可以透過
http://${CONTROLLER_HOSTNAME}:8000
存取。若要啟動工作程序,請使用以下命令:
mtt start --control_server_url=http://CONTROLLER_HOSTNAME:8000 --operation_mode=ON_PREMISE
如果您的網路不允許主機相互通信,您需要按照下面有關 ATS 工作線程的更高級設定說明進行操作。
使用 SSH 隧道連接兩台主機。選擇主伺服器端口和檔案伺服器端口,例如 9000 和 9006。
ssh -L ATS_PORT:localhost:8000 -L FS_PORT:localhost:8006 CONTROLLER_HOSTNAME
配置並啟動 ATS。
DOCKER_GATEWAY_IP_ADDRESS=$(ip -4 addr show dev docker0 | grep -Eo 'inet [.0-9]+/' | grep -Eo '[.0-9]+')
socat tcp-listen:ATS_PORT,bind="${DOCKER_GATEWAY_IP_ADDRESS}",reuseaddr,fork tcp-connect:127.0.0.1:ATS_PORT &
socat tcp-listen:FS_PORT,bind="${DOCKER_GATEWAY_IP_ADDRESS}",reuseaddr,fork tcp-connect:127.0.0.1:FS_PORT &
mtt start --control_server_url=http://${DOCKER_GATEWAY_IP_ADDRESS}:ATS_PORT \ --control_file_server_url=http://${DOCKER_GATEWAY_IP_ADDRESS}:FS_PORT \ --operation_mode=ON_PREMISE
文件清理器
文件清理器是一個 cron 作業,每小時執行一次,根據使用者定義的配置清理檔案。 ATS 有兩種預設配置來存檔測試運行結果和刪除臨時檔案。本指南介紹如何自訂策略和配置以有效管理您的檔案。
政策
策略定義要對檔案或目錄執行的操作以及選擇目標的標準。可用操作如下表所示:
操作類型 | 參數 |
---|---|
ARCHIVE | remove_file :如果true ,則在歸檔後刪除檔案。 |
DELETE |
標準基於文件屬性和系統資訊。可用標準如下表所示:
標準類型 | 描述 | 參數 |
---|---|---|
LAST_MODIFIED_TIME | 根據上次修改日期和時間過濾文件。 | ttl :支援多種時間表達式,例如10m 、 2h 、 7 days 、 4w 。請參閱pytimeparse 以了解支援的格式。 |
LAST_ACCESS_TIME | 根據上次訪問日期和時間過濾文件。 | 與LAST_MODIFIED_TIME 相同。 |
NAME_MATCH | 使用正規表示式根據名稱過濾檔案。 | pattern :正規表示式,例如[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}\.zip 進行配對結果拉鍊。 |
SYSTEM_AVAILABLE_SPACE | 根據系統上的可用空間觸發操作。 | threshold :當可用空間低於閾值時觸發操作,例如200 (B)、 200KB 、 200MB 、 200GB 、 2TB 。 |
圖 53.新增新的檔案清理策略。
配置
配置將一個或多個策略與特定目錄組合在一起。根據定義的策略處理指定目錄中的檔案和目錄。策略會按照它們在配置中出現的順序套用。
所有目標目錄必須位於/data
目錄下。如果您的配置將目標目錄指定為logs
,則它會被解釋為/data/logs
。
圖 54.編輯檔案清理器配置。
重置
按一下「重設設定」可將檔案清理器組態恢復為其預設狀態。此操作會清除所有自訂項目。
圖 55.重置檔案清理器設定。
支援
錯誤報告
您對 Android Test Station 的貢獻有助於改進該工具的開發,我們希望您能提供意見!有關最新版本的詳細信息,請參閱ATS 發行說明。若要報告錯誤或提供建議,請提交錯誤報告。合作夥伴應透過其合作夥伴管道報告錯誤或建議。