Android Camera Image Test Suite (ITS) 是 Android Compatibility Test Suite (CTS) Verifier 的一部分,包括驗證圖像內容的測試。 CTS Verifier 通過 Camera ITS-in-a-box 支持 ITS 測試自動化;對手動測試的支持涵蓋所有 Android 設備外形尺寸。
ITS-in-a-box 包括以下優勢:
- 自動化。測試期間無需人工干預。
- 輕鬆排除故障。測試環境的一致性可減少設置錯誤並提高可重複性。
- 效率。重試單個相機/場景的能力提高了測試執行效率。
入門
ITS-in-a-box 由一個從計算機輔助設計 (CAD) 圖紙激光切割而成的塑料盒、一個圖表輸入板和一個被測設備 (DUT) 組成。您可以使用寬視場 (WFoV) ITS-in-a-box,它能夠測試 WFoV(FoV > 90 度)和 RFoV(FoV < 90 度)相機,或常規視場-view (RFoV) ITS-in-a-box。
要開始使用相機 ITS-in-a-box:
配置平板電腦
本節提供設置平板電腦以與位於CameraITS
目錄中的Camera ITS 測試一起使用的分步說明。這些說明使用 Pixel C 作為示例平板電腦。有關平板電腦要求和建議的信息,請參閱平板電腦要求。
注意: Camera ITS Python 腳本會自動為您在平板電腦上設置以下選項:
設置 > 顯示 > 睡眠 > 30 分鐘不活動後
自適應亮度 > 關
- 為平板電腦充電並打開電源。如果提示設置帳戶,請跳過它(Camera ITS 不需要任何與平板電腦配對的帳戶)。
- 將平板電腦更新至 Android 7.0 或更高版本。 Android 6.x 及更低版本不支持 Camera ITS。
- 啟用開發者模式。
- 返回設置並選擇開發人員選項。
啟用選項 - 上
- 保持清醒
- USB調試(這允許主機在調試模式下運行平板電腦。當您第一次將平板電腦連接到主機時,平板電腦會提示允許USB調試?如果平板電腦沒有顯示調試提示,請斷開連接然後重新連接藥片。)
禁用選項 - 自動系統更新
- 通過 USB 驗證應用程序
- 通過運行
$ adb devices
列出可用設備來確定 DUT 和圖表 ID。要確定device_id
和chart_id
,請插拔設備並觀察連接和斷開連接的設備。 - 執行三個測試運行,以抑制可能使平板電腦屏幕上的圖表模糊的提示和用戶提示。
- 將平板電腦正面朝上放在桌子上(不要將平板電腦連接到盒子的後面板上)。
- 運行以下命令:
python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
場景 2 和 3 要求平板電腦顯示圖像,因此平板電腦會提示允許 Drive 訪問您設備上的照片、媒體和文件? .按允許清除此提示(並防止將來出現提示)。 - 再次運行該命令。平板電腦提示保留此文件的副本?並建議使用 Google Drive。清除此提示(並防止將來出現提示),方法是按驅動器圖標,然後按取消以上傳到驅動器。
- 最後,運行
tools/run_all_tests.py
並確認當腳本在不同場景中循環時場景會自動變化。雖然大多數測試都失敗了(因為相機沒有指向圖表),但您可以驗證平板電腦是否正確地在場景中循環,而不會在屏幕上顯示任何提示或其他彈出窗口。
運行測試
在運行 ITS-in-a-box 之前,請確保您的測試設置包括以下硬件和軟件:
- 一 (1) 個 ITS-in-a-box
- 一 (1) 個用於顯示場景的高分辨率 10" 平板電腦,序列號:5811000011
- 一 (1) 個已安裝 CTS Verifier 7.0_8+ 應用程序的 DUT。示例 DUT:
- 一 (1) 個 Pixel NOF26W,用於後置攝像頭 (0) 測試,S/N:FA6BM0305016。要安裝 CTS Verifier 應用,請解壓縮
android-cts-verifier.zip
,然後運行adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
- 一 (1) 個 Pixel NOF26W,用於後置攝像頭 (0) 測試,S/N:FA6BM0305016。要安裝 CTS Verifier 應用,請解壓縮
運行基於平板電腦的場景
要在後置攝像頭上運行場景 0 到 4、6 和 scene_change:
cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0
例子:
重試場景
您可以為單個攝像機重試場景:
- 在單個相機上重試場景:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
跑步場景5
場景 5 需要使用特定照明進行特殊設置(有關詳細信息,請參閱 CTS 驗證程序中的CameraITS.pdf
,您可以在兼容性測試套件下載處下載該文件)。您必須單獨運行場景 5(開箱即用)。
要在單個設備上運行前置和後置攝像頭的場景 5:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5
獲得結果
您可以在測試期間查看結果並將完成的結果保存為報告。
- 查看結果。要將相機 ITS 結果保存為報告:
- 按通過並保存報告。
圖 3.相機 ITS 報告 - 從設備中提取報告:
adb -s FA6BM0305016 pull /sdcard/verifierReports
- 解壓縮報告文件並查看
test_result.xml
。
圖 4.相機 ITS 報告
- 按通過並保存報告。
平板電腦要求
平板電腦的顯示屏尺寸必須約為 10 英寸,屏幕分辨率必須大於 1920 x 1200 像素。 brightness
值必鬚根據平板型號在config.yml
中設置。下表列出了推薦的用於 ITS 測試的平板電腦以及適用於平板電腦的 DUT 的 Android 版本。
設備 | 顯示屏尺寸 (英寸) | 顯示屏尺寸 (像素) | 平板電腦尺寸 (英寸) | 展示 亮度 | 支持的 DUT 操作系統 |
---|---|---|---|---|---|
小米平板 5 | 11 | 2560 x 1600 | 10.03 x 6.55 x 0.27 | 192 | 安卓 12+ |
聯想 Tab M10 Plus | 10.3 | 1920 x 1200 | 9.61 x 6.03 x 0.32 | 192 | 安卓 12+ |
三星 Galaxy Tab A7 | 10.4 | 2000 x 1200 | 9.75 x 6.2 x 0.28 | 192 | 安卓 12+ |
Chuwi Hi9 Air 10.1 | 10.1 | 2560 x 1600 | 9.52 x 6.77 x 0.31 | 192 | 安卓 7+ |
華碩 ZenPad 3 | 9.7 | 2048 x 1536 | 9.47 x 6.44 x 0.28 | 192 | 安卓 7+ |
華為MediaPad m5 | 10.8 | 2560 x 1600 | 10.18 x 6.76 x 0.29 | 192 | 安卓 7+ |
像素 C | 10.2 | 2560 x 1800 | 9.53 x 7.05 x 0.28 | 96 | 安卓 7+ |
索尼 Xperia Z4 | 10.1 | 2560 x 1600 | 10×6.57×0.24 | 192 | 安卓 7+ |
常見問題 (FAQ)
Q1:如何確定我的設備需要哪些測試台?
RFoV ITS-in-a-box 修訂版 1在CameraITS/tests
目錄中測試 RFoV 攝像機的場景 0 到場景 4 測試。 RFoV 定義為60° < FoV < 90° 。對於較大的 FoV 相機,燈光可能會出現在圖像中,或者圖表可能會覆蓋 FoV 中太小的區域,從而影響測試結果。
WFoV ITS-in-a-box 修訂版 2在CameraITS/tests
目錄中測試 WFoV 攝像機的場景 0 到場景 4 測試。 WFoV 定義為FoV >= 90° 。它在功能上與修訂版 1 相同,但更大。修訂版 2 測試台可以在 Android 9 及更高版本中測試 RFoV 和 WFoV 攝像頭。
傳感器融合盒通過scenes=sensor_fusion
中的測試測試相機/陀螺儀時間偏移和多相機系統幀同步。 REALTIME
功能標誌和 VR/AR 應用程序需要小於 1 毫秒的相機/陀螺儀時間偏移。
如果相機具有REALTIME
功能標誌,則可以使用單個設備進行靜態 ITS 測試和傳感器融合設備測試多相機設備。
下表提供了一組示例配置。
例子 | 相機 FoV | 即時的? | 推薦鑽機 | 筆記 |
---|---|---|---|---|
1 | 75° | 不 | 第 1 版 | Android 7.0 或更高版本 |
2 | 75° | 是的 | Rev 1 + 傳感器融合 | 安卓 9 或更高版本 |
3 | 75° + 95° | 是的 | Rev 2 + 傳感器融合 | 安卓 9 或更高版本 |
Q2:如何指定正在使用的測試台?
要指定正確的測試台,請確保圖表距離參數正確。 rev1 試驗台 (RFoV) 的圖表距離為 31 cm,rev2 試驗台 (WFoV) 的圖表距離為 22 cm。默認情況下,圖表距離設置為 31 厘米。
安卓 10 到安卓 11
要在 Android 10 到 11 中識別正確的測試平台,請在命令行中添加dist
標誌。 dist
的默認值為31
。運行以下命令更改chart_distance
參數。python tools/run_all_tests.py ... chart=# dist=22
安卓 12
要在 Android 12 中識別正確的測試台,您可以編輯 config.yml 文件以更改chart_distance
參數。edit config.yml chart_distance: 31.0 → chart_distance: 22.0
Q3:如何控制平板電腦的亮度?
默認情況下,數位板亮度設置為 96。
要更改運行 Android 7.0 到 Android 9 的平板電腦的亮度,請運行:
edit tools/wake_up_screen.py DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
要更改運行 Android 10 到 11 的平板電腦的亮度,可以通過添加brightness
標誌在命令行中更改該值:
python tools/run_all_tests.py device=# camera=# chart=# brightness=192
要更改運行 Android 12 的平板電腦的亮度,請運行:
edit config.yml brightness: 96 → brightness: 192
Q4:如何調試單個測試?
可以出於調試目的單獨運行測試,但除非運行整個場景,否則結果不會報告給CtsVerifier.apk
。
要在 Android 11 及更低版本中運行單個場景:
- 通過在
tools/run_all_tests.py
中添加scenes
標誌來加載場景:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
在場景被記錄為加載到
stdout
後,按Control+C停止測試。如果正確的場景已經出現在屏幕上,喚醒屏幕:
python tools/wake_up_screen.py screen=#
運行單獨的測試。
python tests/scene#/test_*.py device=# camera=#
然後在本地目錄中生成繪圖,並將
stdout
和stderr
打印到屏幕上。要獲取更多調試信息,請在腳本中添加
print
語句。要增加調試的測試輸出,請添加debug=True
標誌。python tests/scene#/test_*.py device=# camera=# debug=True
運行tools/run_all_tests.py
時,結果打印到本地屏幕,圖像保存在本地目錄而不是生成的/tmp/tmp###
目錄中。
要在 Android 12 中運行單個場景:
編輯
config.yml
文件。edit config.yml camera: <camera-id> → camera: 0 scene: <scene-name> → scene: scene1_1
運行單個測試。
python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
結果打印在按運行時間排序的/tmp/logs/mobly/TEST_BED_TABLET_SCENES/
目錄中。
Q5:為什麼我需要將失敗的測試作為整個場景運行,而不是單獨重新運行測試?
測試可以單獨運行以進行調試,但除非運行整個場景,否則結果不會報告給CtsVerifier.apk
。
相機 ITS 確保第三方應用程序具有兼容的相機界面。與單元測試類似,每個測試都強調相機中的單個規範。為了捕捉不可靠的行為,這些測試應該作為一個組通過整個場景。例如,雖然一個不可靠的測試可以通過整個場景的重新運行,但多個不可靠的測試很難通過。
作為一個極端的例子,考慮一個場景中有 10 個測試,每個測試都有 50% 的概率返回PASS
。通過單獨運行每個測試,操作員很有可能讓相機通過相機 ITS。但是,如果測試作為一個場景在聚合中運行,則該場景通過的可能性只有 0.1%。
Q6:如何運行單個場景或重新排序運行場景?
默認情況下,腳本tools/run_all_tests.py
按順序運行所有場景。但是,場景可以單獨運行或按指定順序運行並報告給CtsVerifier.apk
。
要在 Android 11 或更低版本中運行單個場景(例如場景 2)或以特定順序運行多個場景:
python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
要在 Android 12 中運行單個場景或以特定順序運行多個場景:
python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2
附加參數在config.yml
文件中設置。
Q7:許多場景 1 測試在數位板設置中失敗,但在紙質圖表中通過。怎麼了?
確保平板電腦和測試環境符合以下規格。
平板電腦規格
確保平板電腦符合以下規格:
- 顯示尺寸(英寸):10 英寸
- 顯示尺寸(像素):大於 1920 x 1200 像素
有關更多詳細信息,請參閱平板電腦要求。
平板電腦亮度
如果數位板顯示屏亮度過低,測試可能無法獲得正確結果。
有關詳細信息,請參閱如何控制數位板亮度?
箱體照明水平(需要照度計)
確保平板打開時的目標勒克斯值在 100 到 300 之間。
如果勒克斯級別太高, scene1/test_param_flash_mode.py
返回FAIL
。如果勒克斯水平太低,則多次測試失敗。
Q8:如何調試傳感器融合測試?
確保您在
dialout
組中。groups | egrep ‘dialout'
通過確定 Microchip Technology 是否連接到 USB 端口,確保傳感器融合控制器已連接。
lsusb … Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc. …
使用以下命令多次運行測試以獲取測試嘗試的分佈。
在 Android 11 或更低版本中:
python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
在安卓 12 中:
python tools/run_sensor_fusion_box.py num_runs=10
附加參數在
config.yml
文件中設置。運行輸出位於
sensor_fusion_#
文件夾下創建的/tmp/tmp###
文件夾中,其中#
是運行編號。失敗的常見原因有:- 手機沒有正確居中。
- 在圖像中找不到足夠的特徵(通常是 FoV 或照明問題)。
- 返回的
FAIL
有效,需要修正相機和陀螺儀的時間偏差。
Q9:報告測試錯誤時我應該包含哪些信息?
報告測試錯誤時,請包括為測試生成的文件和圖像。
- 如果您通過
tools/run_all_tests.py
運行測試,請將壓縮的/tmp/
目錄附加到錯誤。 - 如果您自己運行測試,請將所有屏幕輸出和生成的圖像附加到錯誤中。
還包括錯誤報告。在有問題的測試失敗後,使用以下命令生成錯誤報告並將生成的 zip 文件附加到錯誤中。
adb -s device_id bugreport
Q10:如何去除 16:10 平板電腦上遮擋場景的導航欄?
對於寬高比為 16:10(或更大)的平板電腦,導航欄可能會遮擋部分場景。要隱藏導航欄,請對平板電腦使用以下 adb 命令。
adb -s device_id shell settings put global policy_control immersive.full=*