Android Test Station 是一種測試工具,Android 開發人員和測試工程師可以使用它來使用用戶界面來運行標準 Android 測試套件,例如Android 兼容性測試套件 (CTS) 。該工具充當Trade Federation (TF)的 Web 界面,使您能夠以最少的設置輕鬆地在一組測試設備上運行 CTS,並建立一個持續運行測試的時間表。
設置 Android 測試站
本節介紹如何安裝和設置 Android 測試站。
Android Test Station 使用來自以下位置的源代碼:
- Android 測試站源代碼
- TradeFed 集群源代碼
安裝 Android 測試站
遵循您希望運行的測試套件的任何硬件和軟件要求。
CTS 的要求可在source.android.com上找到。
沒有額外的硬件要求,但我們建議使用具有 100 GB 可用硬盤空間和 8 GB 內存的機器,這足以存儲多次運行測試套件的輸出文件。
有兩種安裝 Android Test Station 的方法:
使用安裝程序安裝
在 Ubuntu 18.04+ 上,安裝程序會安裝和配置運行 Android Test Station 所需的所有程序和資源。
要使用安裝程序:
運行安裝程序:
curl https://storage.googleapis.com/android-mtt.appspot.com/prod/install.sh | bash
運行
mtt version
以檢查已安裝的 Android Test Station CLI 版本。
手動安裝
安裝 Docker
您可能需要重新啟動終端窗口或註銷並重新登錄才能使權限更改生效。
安裝 Python 3.7
Android 測試站 CLI 需要 Python 3.7。
對於 Ubuntu 16.04 或更早版本,您需要首先通過執行以下操作之一添加 Python 3.7 的存儲庫:
運行此命令:
sudo add-apt-repository ppa:deadsnakes/ppa
或者從源代碼構建和安裝存儲庫
要安裝 Python 3.7,請運行以下命令:
sudo apt-get update
sudo apt install python3.7 python3.7-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 測試站主機備份的配置文件,您可以通過單擊上傳文件按鈕上傳文件以復制從該主機修改的任何配置。
圖 1.恢復配置備份
設置默認服務帳戶
您可以設置 Android Test Station 在訪問您的資源(例如,Google Cloud Storage、Google Drive)時默認使用的服務帳戶。要驗證您的服務帳戶,請單擊上傳服務帳戶密鑰並選擇您的服務帳戶的 JSON 密鑰文件。
圖 2.設置服務帳戶
服務賬號認證成功後,頁面右上角會出現賬號郵箱。要更改服務帳戶,請單擊帳戶名稱,刪除當前默認帳戶,然後上傳新的服務帳戶密鑰。
圖 3.更改服務帳戶
導入配置集
配置集是用於運行測試套件的一組配置,包括相關的設備操作、構建通道等。配置集託管在特定的 Google Cloud Storage (GCS) 存儲桶中。使用您的 Google 帳戶驗證 GCS 構建通道後,您將看到所有可用配置集的列表。
選擇您想要添加到測試站主機的任何配置集,然後單擊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.配置測試運行
測試運行參數為:
- Name - 您希望運行的測試套件的名稱。
- 運行計數- 此測試運行應按計劃執行的次數。測試運行是使用Trade Federation安排的,如果有能力,它可以並行運行多達 20 個測試運行。
- Max Retry - 如果至少一項測試失敗,則重試測試運行的最大次數。對於完整的 CTS 運行,這通常設置為 4-6 次重試,以處理不穩定的測試。
- Queue Timeout - 如果測試運行在Queued狀態下停留的時間過長,它會自動取消。在此處指定取消前等待的時間。默認值為 24 小時。
命令- 運行測試套件的命令。您可以在此處輸入其他命令行參數。例如,在 CTS 8.1 中運行特定模塊:
cts-suite -m ShortModuleName
重試命令- 重試測試套件的命令。您可以在此處添加其他命令行參數。例如,要僅重試 CTS 8.1 中的特定模塊,請使用:
cts --retry 0 -m ShortModuleName
重試參數可能與初始命令中可用的參數不同,因此請在官方網站上查看所選測試套件支持的參數。
以前的測試運行- 如果您希望重新運行以前的測試運行:
本地 - 如果在當前主機上開始運行,請輸入查看測試運行詳細信息時看到的測試運行 ID。
圖 9.本地先前的測試運行
遠程 - 如果在不同的主機上開始運行,請通過選擇Remote 、單擊Upload Test Results File並從本地存儲中選擇一個文件來上傳測試結果文件。
圖 10.遠程之前的測試運行
選擇設備
單擊複選框以選擇要分配用於運行測試套件的設備。分片計數應自動更改以匹配所選設備的數量。
圖 11.選擇設備
要通過設備序列號以外的屬性選擇設備,您可以手動輸入“設備規格”。例如,要選擇 3 個產品名稱為“bramble”的設備,請輸入以下內容:
product:bramble;product:bramble;product:bramble
支持的屬性是:
- build_id
- device_serial
- 設備類型
- 主機名
- 產品
- product_variant
- sim_state
所有選中的設備都必須處於Available狀態才能執行測試運行,並且在執行測試運行時它們都切換到Allocated狀態。測試運行在等待設備可用時處於Queued狀態。
添加設備操作
設備操作是可以在每次測試運行之前執行的腳本。某些設備操作已配置,例如閃爍和重新啟動。要創建新設備操作,請參閱創建新設備操作。
圖 12.設備操作
要將設備操作添加到測試運行,請單擊Add new action ,選中要添加的操作的複選框,然後單擊Add Action(s) 。設備操作按順序執行。您可以通過拖動來重新排序操作。
圖 13.重新排序操作
設置測試資源
測試資源是執行測試運行所需的文件。例如,運行 CTS 需要一個android-cts*.zip
文件,而刷機則需要您提供構建映像。
測試套件 zip 文件的下載 URL 應默認為提供給合作夥伴的 Google Drive 鏈接。您可以通過單擊瀏覽來選擇不同的文件。在彈出窗口中,您可以輸入文件下載鏈接,使用來自經過身份驗證的構建通道的文件,或從本地存儲上傳文件以使用。
圖 14.測試資源
下面是通過 Web URL 選擇測試資源的彈出窗口。您只需輸入下載 url 鏈接,然後單擊選擇按鈕確認選擇。
圖 15.測試資源選擇器 - Web URL
如果您已將資源上傳到 Google Grive、Google Cloud Storage (GCS) 或其他頻道,您還可以導航到特定頻道的選項卡並在那裡選擇資源。這是從谷歌驅動器中選擇資源的示例。
圖 16.測試資源選擇器 - Google Drive
除了僅選擇文件外,文件名字段還支持通配符。文檔可以在這裡找到。
圖 17.測試資源選擇器 - 通配符模式支持
您還可以從 Android Test Station 的本地文件存儲中選擇一個文件。您可以將文件上傳到此存儲中,也可以直接使用本地文件和目錄。
圖 18.測試資源選擇器 - 本地文件存儲
添加重新運行配置
您可以安排在主要運行完成後開始的重新運行並加載其結果,但可以使用不同的設備、操作或資源。
圖 19.添加重新運行配置
開始試運行
輸入測試運行所需的信息後,單擊開始測試運行。如果所有信息都有效,則測試運行開始,您將被重定向到一個頁面以查看測試運行的詳細信息和進度。
圖 20.開始測試運行
創建測試計劃
測試計劃用於定期創建測試運行。例如,每天下午 5 點運行 CTS 9.0。要創建新的測試計劃,請單擊創建新的測試計劃。
圖 21.創建測試計劃
配置測試計劃
輸入測試計劃的名稱和您要添加的任何標籤。然後選擇要使用的時間表。
- 手動- 僅當用戶單擊測試計劃列表頁面中的運行測試計劃時,測試計劃才會創建測試運行。
- 定期- 測試計劃將自動按選定的定期計劃安排測試運行。例如,每天下午 5:00 安排一次測試運行。
- 自定義- 測試計劃將根據輸入的cron 表達式自動安排測試運行。例如,要在每天下午 5:00 安排一次測試運行,cron 表達式將為
0 17 * * *
。
圖 22.配置測試計劃
添加測試套件
通過單擊+ 添加測試運行配置來添加您希望由測試計劃安排的測試套件。從Name下拉列表中選擇一個測試套件,然後單擊Next step 。然後選擇您要在其上運行測試的設備並單擊Add Configuration 。您可以為每個測試計劃添加多個配置。
圖 23.配置測試運行
添加設備操作
添加您希望在每次測試運行之前執行的設備操作。有關更多詳細信息,請參閱添加設備操作。
圖 24.添加設備操作
設置測試資源
將測試資源添加到測試計劃與將它們添加到單個測試運行相同。有關更多詳細信息,請參閱設置測試資源。
圖 25.設置測試資源
查看測試運行
試運行清單
在“測試運行”頁面上查看計劃測試運行的列表。單擊查看以查看有關測試運行的更多詳細信息。
您還可以通過在過濾器欄中輸入字符串並按Enter鍵來過濾列表。您可以使用逗號分隔多個過濾器。過濾器返回在任何列中包含確切文本(無子字符串匹配)的所有行,不包括Status和Created 。
空過濾器返回所有行。目前無法過濾具有空值的行。
圖 26.測試運行列表
試運行詳情
您可以在此處查看測試運行的詳細信息,例如狀態、日誌和結果。
圖 27.測試運行詳細信息
試運行狀態
測試運行的進度顯示在狀態部分。如果有相關消息,例如下載進度、取消原因或錯誤消息,也會在此處顯示。
圖 28.測試運行狀態
測試運行狀態為:
- 待定- 正在下載所需資源。
- 排隊- 當設備可用時,測試已準備好運行。
- Running - 測試正在分配的設備上運行。
- 已完成- 測試已完成並報告其結果。
- 已取消- 測試被用戶取消或在嘗試查找可用設備時超時。
- 錯誤- 發生錯誤,導致測試無法運行。
取消測試運行
如果測試運行尚未完成,您可以通過單擊取消然後在確認對話框中單擊是來取消它。如果測試運行保持在Queued狀態的時間超過queue_timeout_seconds字段,它們也會自動取消。在運行狀態下取消測試運行可能需要幾分鐘才能生效。
圖 29.取消測試運行
試運行結果
測試運行完成後,將收集並顯示結果。您可以通過單擊每次運行的箭頭來查看其他詳細信息。單擊查看輸出文件以查看收集的測試工件,例如test_result.xml
和test_result_failures.html
。
圖 30.測試運行結果
您可以在日誌選項卡中查看實時主機和 Tradefed 日誌。
圖 31.日誌選項卡
各個模塊的結果位於“測試結果”選項卡上。
圖 32.測試結果選項卡
您可以通過單擊“測試資源”選項卡中的“打開”來下載用作測試資源的文件。
圖 33.測試資源選項卡
要查看測試運行的詳細信息,例如create_time ,請轉到 Config 選項卡。
圖 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 測試站實例時,您可以通過將其導出為文件來與其他用戶共享您的配置。為此,請轉到“設置”頁面,然後單擊右上角的“導出”。
圖 35.配置文件管理
下載配置文件後,與其他用戶共享該文件。他們可以通過單擊導入並選擇配置文件將配置文件添加到他們的 Android 測試站實例。
創建新設備操作
設備操作用於自動化設備設置過程。操作是在每次測試運行之前在每個運行測試的設備上執行的腳本,包括重試之前。要查看可用設備操作的列表,請轉至設置頁面並單擊設備操作選項卡。已經配置了幾個設備操作,例如重新啟動和閃爍。
圖 36.設備操作選項卡
添加新設備操作
單擊新建設備操作。
圖 37.新設備操作按鈕
輸入名稱和描述。
圖 38.設備操作名稱
單擊添加目標準備器。
輸入Trade Federation Target Preparer 完整類名,例如
com.android.tradefed.targetprep.RunHostCommandTargetPreparer
。圖 39.添加目標準備器
可以在com.android.tradefed.targetprep參考中找到可用目標準備者的列表。
圖 40. Target Preparer 列表
添加與目標準備器一起使用的任何選項。要查看可用選項,請檢查targetprep以獲取 AOSP 中每個目標準備器的源代碼:
圖 41.操作選項示例
要添加選項,請單擊添加目標準備器選項並輸入所需的值。
圖 42.動作命令示例
定義執行設備操作所需的測試資源,例如,構建用於閃爍的映像。要添加資源定義,請單擊添加測試資源並填寫必填字段。如果您知道文件所在的位置,則可以通過單擊瀏覽提供默認下載 URL。如果目標準備者接受目錄作為測試資源,請選擇Decompress 。然後指定臨時工作目錄下的相對Destination目錄和要解壓的File Names 。如果沒有給出文件名,則從測試資源中解壓縮所有文件。
圖 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:8000。
要啟動工作程序,請使用以下命令:
mtt start --control_server_url=http://controller.com: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=${DOCKER_GATEWAY_IP_ADDRESS}:ATS_PORT \ --control_file_server_url=${DOCKER_GATEWAY_IP_ADDRESS}:FS_PORT \ --operation_mode=ON_PREMISE
支持
錯誤報告
您對 Android Test Station 的貢獻有助於改進該工具的開發,我們需要您的意見!有關最新版本的詳細信息,請參閱ATS 發行說明。要報告錯誤或提供建議,請提交錯誤報告。合作夥伴應通過其合作夥伴渠道報告錯誤或建議。