相機 ITS-in-a-Box

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:

  1. 購買或構建WFoVRFoV ITS-in-a-box。
  2. 使用 Camera ITS 軟件配置平板電腦
  3. 運行測試
  4. 從 DUT獲取結果

配置平板電腦

本節提供設置平板電腦以與位於CameraITS目錄中的Camera ITS 測試一起使用的分步說明。這些說明使用 Pixel C 作為示例平板電腦。有關平板電腦要求和建議的信息,請參閱平板電腦要求

注意: Camera ITS Python 腳本會自動為您在平板電腦上設置以下選項:
設置 > 顯示 > 睡眠 > 30 分鐘不活動後
自適應亮度 > 關

  1. 為平板電腦充電並打開電源。如果提示設置帳戶,請跳過它(Camera ITS 不需要任何與平板電腦配對的帳戶)。
  2. 將平板電腦更新至 Android 7.0 或更高版本。 Android 6.x 及更低版本不支持 Camera ITS。
  3. 啟用開發者模式
  4. 返回設置並選擇開發人員選項。
    啟用選項
    • 保持清醒
    • USB調試(這允許主機在調試模式下運行平板電腦。當您第一次將平板電腦連接到主機時,平板電腦會提示允許USB調試?如果平板電腦沒有顯示調試提示,請斷開連接然後重新連接藥片。)
    禁用選項
    • 自動系統更新
    • 通過 USB 驗證應用程序
  5. 通過運行$ adb devices列出可用設備來確定 DUT 和圖表 ID。要確定device_idchart_id ,請插拔設備並觀察連接和斷開連接的設備。
  6. 執行三個測試運行,以抑制可能使平板電腦屏幕上的圖表模糊的提示和用戶提示。
    1. 將平板電腦正面朝上放在桌子上(不要將平板電腦連接到盒子的後面板上)。
    2. 運行以下命令:
      python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
      
      場景 2 和 3 要求平板電腦顯示圖像,因此平板電腦會提示允許 Drive 訪問您設備上的照片、媒體和文件? .按允許清除此提示(並防止將來出現提示)。
    3. 再次運行該命令。平板電腦提示保留此文件的副本?並建議使用 Google Drive。清除此提示(並防止將來出現提示),方法是按驅動器圖標,然後按取消以上傳到驅動器。
    4. 最後,運行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
      

運行基於平板電腦的場景

要在後置攝像頭上運行場景 0 到 4、6 和 scene_change:

cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0

例子:

相機 0 序列號:FA6BM0305016
圖 1.攝像機 0 序列號:FA6BM0305016

重試場景

您可以為單個攝像機重試場景:

  • 在單個相機上重試場景:
    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
    

跑步場景5

場景 5 需要使用特定照明進行特殊設置(有關詳細信息,請參閱 CTS 驗證程序中的CameraITS.pdf ,您可以在兼容性測試套件下載處下載該文件)。您必須單獨運行場景 5(開箱即用)。

相機場景5
圖 2.相機場景 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 結果保存為報告:
    1. 通過並保存報告。
      相機 ITS 報告
      圖 3.相機 ITS 報告
    2. 從設備中提取報告:
      adb -s FA6BM0305016 pull /sdcard/verifierReports
      
    3. 解壓縮報告文件並查看test_result.xml
      相機 ITS 報告
      圖 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 修訂版 1CameraITS/tests目錄中測試 RFoV 攝像機的場景 0 到場景 4 測試。 RFoV 定義為60° < FoV < 90° 。對於較大的 FoV 相機,燈光可能會出現在圖像中,或者圖表可能會覆蓋 FoV 中太小的區域,從而影響測試結果。

WFoV ITS-in-a-box 修訂版 2CameraITS/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 及更低版本中運行單個場景:

  1. 通過在tools/run_all_tests.py中添加scenes標誌來加載場景:
    python tools/run_all_tests.py device=# camera=# chart=# scenes=#
    
  2. 在場景被記錄為加載到stdout後,按Control+C停止測試。

    如果正確的場景已經出現在屏幕上,喚醒屏幕:

    python tools/wake_up_screen.py screen=#
    
  3. 運行單獨的測試。

    python tests/scene#/test_*.py device=# camera=#

    然後在本地目錄中生成繪圖,並將stdoutstderr打印到屏幕上。

    要獲取更多調試信息,請在腳本中添加print語句。要增加調試的測試輸出,請添加debug=True標誌。

    python tests/scene#/test_*.py device=# camera=# debug=True

運行tools/run_all_tests.py時,結果打印到本地屏幕,圖像保存在本地目錄而不是生成的/tmp/tmp###目錄中。

要在 Android 12 中運行單個場景:

  1. 編輯config.yml文件。

    edit config.yml
    camera: <camera-id> → camera:  0
    scene: <scene-name> → scene: scene1_1
  2. 運行單個測試。

    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:如何調試傳感器融合測試?

  1. 確保您在dialout組中。

    groups | egrep ‘dialout'
  2. 通過確定 Microchip Technology 是否連接到 USB 端口,確保傳感器融合控制器已連接。

    lsusb
    …
    Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
    …
    
  3. 使用以下命令多次運行測試以獲取測試嘗試的分佈。

    在 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###文件夾中,其中#是運行編號。失敗的常見原因有:

    1. 手機沒有正確居中。
    2. 在圖像中找不到足夠的特徵(通常是 FoV 或照明問題)。
    3. 返回的FAIL有效,需要修正相機和陀螺儀的時間偏差。

Q9:報告測試錯誤時我應該包含哪些信息?

報告測試錯誤時,請包括為測試生成的文件和圖像。

  1. 如果您通過tools/run_all_tests.py運行測試,請將壓縮的/tmp/目錄附加到錯誤。
  2. 如果您自己運行測試,請將所有屏幕輸出和生成的圖像附加到錯誤中。

還包括錯誤報告。在有問題的測試失敗後,使用以下命令生成錯誤報告並將生成的 zip 文件附加到錯誤中。

adb -s device_id bugreport

Q10:如何去除 16:10 平板電腦上遮擋場景的導航欄?

對於寬高比為 16:10(或更大)的平板電腦,導航欄可能會遮擋部分場景。要隱藏導航欄,請對平板電腦使用以下 adb 命令。

adb -s device_id shell settings put global policy_control immersive.full=*