Android 相機影像測試套件 (ITS) 是 Android 相容性測試套件 (CTS) 驗證程式的一部分,包括驗證影像內容的測試。 CTS Verifier 透過相機 ITS-in-a-box 支援 ITS 測試自動化;手動測試的支援涵蓋所有 Android 裝置外形規格。
盒裝 ITS 有以下優點:
- 自動化。測試過程中無需人工幹預。
- 輕鬆排除故障。測試環境的一致性可以減少設定錯誤並提高可重複性。
- 效率。對單一攝影機/場景進行重試的能力提高了測試執行效率。
開始使用
盒裝 ITS 由電腦輔助設計 (CAD) 圖紙雷射切割而成的塑膠盒、一個圖表板和一個被測設備 (DUT) 組成。您可以使用寬視野 (WFoV) 盒裝 ITS,它能夠測試 WFoV(FoV > 90 度)和 RFoV(FoV < 90 度)相機,或使用常規視野-檢視 (RFoV) 盒裝 ITS。
要開始使用盒裝相機 ITS:
設定平板電腦
本節提供有關設定平板電腦以與位於CameraITS
目錄中的相機 ITS 測試一起使用的逐步說明。這些說明使用 Pixel C 作為範例平板電腦。有關平板電腦要求和建議的信息,請參閱平板電腦要求。
注意:相機 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 需要平板電腦顯示影像,因此平板電腦會提示允許雲端硬碟存取裝置上的照片、媒體和檔案? 。按下「允許」清除此提示(並防止將來出現提示)。 - 再次運行命令。平板電腦提示保留此文件的副本嗎?並建議使用 Google 雲端硬碟。按下“雲端硬碟”圖標,然後按“取消上傳到雲端硬碟”,清除此提示(並防止將來出現提示)。
- 最後,執行
tools/run_all_tests.py
並確認場景隨著腳本循環通過不同的場景而自動變化。雖然大多數測試都會失敗(因為相機沒有指向圖表),但您可以驗證平板電腦是否正確循環瀏覽場景,而不會在螢幕上顯示任何提示或其他彈出視窗。
運行測試
在執行盒裝 ITS 之前,請確保您的測試設定包括以下硬體和軟體:
- 一 (1) 個盒裝 ITS
- 一 (1) 個用於顯示場景的高解析度 10 吋平板電腦,序號:5811000011
- 安裝了 CTS Verifier 7.0_8+ 應用程式的一 (1) 個 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 Verifier 中的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 像素。平板電腦不得使用脈衝寬度調變 (PWM) 來設定亮度等級。 brightness
值必須根據平板電腦型號在config.yml
中設定。下表列出了推薦用於 ITS 測試的平板電腦以及平板電腦所使用的 DUT 的 Android 發行版本。
裝置 | 顯示屏尺寸 (英吋) | 顯示屏尺寸 (像素) | 平板電腦尺寸 (英吋) | 展示 亮度 | 展示 位元 | 支持的 被測設備作業系統 | 支持的 平板電腦作業系統 |
---|---|---|---|---|---|---|---|
三星 銀河標籤 A8 | 10.5 | 1920×1200 | 9.72×6.37×0.27 | 192 | 8 | 安卓 13+ | 安卓11+ |
小米 墊 5 | 11 | 2560×1600 | 10.03×6.55×0.27 | 1024 | 11 | 安卓12+ | 僅安卓11 |
聯想 標籤 M10 Plus | 10.3 | 1920×1200 | 9.61×6.03×0.32 | 192 | 8 | 安卓12+ | 安卓9+ |
三星 銀河標籤 A7 | 10.4 | 2000×1200 | 9.75×6.2×0.28 | 192 | 8 | 安卓12+ | 安卓10+ |
楚維 Hi9空氣10.1 | 10.1 | 2560×1600 | 9.52×6.77×0.31 | 192 | 8 | 安卓7+ | 安卓8+ |
華碩 禪派 3 | 9.7 | 2048×1536 | 9.47×6.44×0.28 | 192 | 8 | 安卓7+ | 安卓6+ |
華為 媒體平板 m5 | 10.8 | 2560×1600 | 10.18×6.76×0.29 | 192 | 8 | 安卓7+ | 安卓8+ |
Google 像素C | 10.2 | 2560×1800 | 9.53×7.05×0.28 | 96 | 8 | 安卓7+ | 安卓6+ |
索尼 Xperia Z4 | 10.1 | 2560×1600 | 10×6.57×0.24 | 192 | 8 | 安卓7+ | 安卓5+ |
經常問的問題
問題 1:如何確定我的設備需要哪些測試裝置?
RFoV 盒裝 ITS 版本 1在CameraITS/tests
目錄中測試 RFoV 相機的場景 0 到場景 4 測試。 RFoV 定義為60° < FoV < 90° 。對於較大 FoV 相機,影像中可能會出現燈光,或者圖表可能覆蓋 FoV 中的區域太小,從而影響測試結果。
WFoV 盒裝 ITS 修訂版 2在CameraITS/tests
目錄中測試 WFoV 相機的場景 0 到場景 4 測試。 WFoV 定義為FoV >= 90° 。它在功能上與修訂版 1 相同,但更大。修訂版 2 測試裝置可測試 Android 9 及更高版本中的 RFoV 和 WFoV 相機。
感測器融合盒透過在scenes=sensor_fusion
中進行測試來測試相機/陀螺儀定時偏移和多相機系統幀同步。 REALTIME
功能標誌需要小於 1 ms 的相機/陀螺儀定時偏移。
如果相機具有REALTIME
功能標誌,則可以使用靜態 ITS 測試的單一裝備和感測器融合裝備來測試多相機設備。
下表提供了一組範例配置。
例子 | 相機視野 | 即時的? | 推薦裝備 | 筆記 |
---|---|---|---|---|
1 | 75° | 不 | 修訂版 1 或 2 | 安卓7.0或更高版本 |
2 | 75° | 是的 | Rev 1 或 2 + 感測器融合 | 安卓 9 或更高版本 |
3 | 75° + 95° | 是的 | Rev 2 + 感測器融合 | 安卓 9 或更高版本 |
Q2:如何指定正在使用的測試裝置?
若要指定正確的測試裝置,請確保圖表距離參數正確。 rev1 測試裝置 (RFoV) 的圖表距離為 31 厘米,rev2 測試裝置 (WFoV) 的圖表距離為 22 厘米。預設情況下,圖表距離設定為 31 公分。
Android 10 至 Android 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/
目錄中,依運行時間排序。
問題 5:為什麼我需要將失敗的測試作為整個場景運行,而不是單獨重新運行測試?
出於調試目的可以單獨運行測試,但除非運行整個場景,否則結果不會報告給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
檔案中設定。
問題 7:許多場景 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
在 Android 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
問題 10:如何使用最小焦距在 25 公分圖表距離處建立模糊影像的相機來執行sensor_fusion 測試場景?
如果您的相機無法在 25 公分距離處對焦,請拆下感光元件融合盒的圖表安裝面板。將圖表放置在 DUT 可以聚焦的距離處,並將config.yml
中的chart_distance
變更為 DUT 與圖表之間的測量距離。圖 5 顯示如何在這種情況下測量圖表距離的範例。
edit config.yml chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
問題 11:如何為具有最小焦距的相機運行平板電腦測試場景,從而在 31 公分圖表距離處創建模糊影像?
如果您的相機在 31 公分(RFoV 測試裝置的深度)處無法產生足夠清晰的影像進行測試,請將相機安裝在裝置前面一定距離,以使圖表場景填滿約 60% 的相機視場。 ) 具有更清晰的影像。此距離可以小於相機的最小焦距。將config.yml
中的chart_distance
保留為 31 公分。平板電腦上的圖表縮放比例由相機 FoV 決定,如下表所示:
相機視場角 | 圖表比例因子 |
---|---|
60 > 視場 > 40 | 0.67倍 |
40 > 視野 > 25 | 0.5倍 |
視場 < 25 | 0.33倍 |
Q12:使用邏輯多相機 API,哪些測試在哪些相機上運作?
如果您的相機使用REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
,則所有支援的 ITS 測試都在頂級邏輯相機上運行。 ITS 測試的子集在實體子攝影機上運行,這些測試列在tools/run_all_tests.py
的SUB_CAMERA_TESTS
常數下。