Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

카메라 ITS-in-a-Box

Android 카메라 이미지 테스트 도구 모음(ITS)은 Android 호환성 테스트 도구 모음(CTS) 인증 도구의 일부이며 이미지 콘텐츠를 확인하는 테스트를 포함하고 있습니다. CTS 인증 도구는 카메라 ITS-in-a-Box로 ITS 테스트 자동화를 지원합니다. 수동 테스트 지원은 모든 Android 기기 폼 팩터에 적용됩니다.

ITS-in-a-box에는 다음과 같은 이점이 있습니다.

  • 자동화. 테스트 과정에 사용자의 개입은 필요하지 않습니다.
  • 테스트 시간 단축. 전면/후면 카메라의 병행 테스트로 테스트 주기 시간이 50% 단축됩니다.
  • 문제해결 용이성. 테스트 환경의 일관성으로 인해 설정 오류가 줄어들고 재현성이 향상됩니다.
  • 효율성. 개별 카메라/장면을 다시 시도할 수 있어 테스트 실행 효율성이 향상됩니다.

시작하기

ITS-in-a-box는 컴퓨터 지원 설계(CAD) 도면을 통해 레이저 절단한 플라스틱 상자, 차트 태블릿 및 테스트 대상 기기(DUT)로 구성됩니다. WFoV(FoV > 90도) 카메라와 RFoV(FoV < 90도) 카메라를 모두 테스트할 수 있는 넓은 시야(WFoV) ITS-in-a-box 또는 일반 시야(RFoV) ITS-in-a-box를 사용할 수 있습니다.

카메라 ITS-in-a-box를 시작하려면 다음 단계를 따르세요.

  1. WFoV 또는 RFoV ITS-in-a-box를 구매하거나 제작합니다.
  2. 카메라 ITS 소프트웨어로 태블릿을 구성합니다.
  3. 테스트를 실행합니다.
  4. DUT에서 결과를 확인합니다.

태블릿 구성

이 섹션에서는 CameraITS 디렉터리에 있는 카메라 ITS 테스트에 사용할 태블릿을 설정하기 위한 단계별 안내를 제공합니다. 이 안내에서는 Pixel C를 태블릿의 예로 사용합니다. 태블릿 요구사항 및 권장사항에 관한 자세한 내용은 태블릿 요구사항을 참조하세요.

참고: 카메라 ITS Python 스크립트는 태블릿에서 다음 옵션을 자동으로 설정합니다.
설정 > 디스플레이 > 절전 모드 > 30분 동안 사용하지 않을 때
밝기 자동 조절 > 끄기

  1. 태블릿을 충전하고 전원을 켭니다. 계정을 설정하라는 메시지가 표시되면 건너뜁니다(카메라 ITS에는 태블릿과 페어링된 계정이 필요하지 않음).
  2. 태블릿을 Android 7.0 이상으로 업데이트합니다. Android 6.x 이하 버전은 카메라 ITS를 지원하지 않습니다.
  3. 개발자 모드를 사용 설정합니다.
  4. 설정으로 돌아가서 개발자 옵션을 선택합니다.
    옵션 사용 설정
    • 사용
    • 절전모드 해제
    • USB 디버깅(호스트가 태블릿을 디버그 모드로 실행할 수 있도록 합니다. 태블릿을 호스트에 처음 연결하면 태블릿에 USB 디버깅을 허용하시겠습니까?라는 메시지가 표시됩니다. 태블릿에 디버그 메시지가 표시되지 않으면 연결을 끊었다가 태블릿을 다시 연결합니다.)
    옵션 사용 중지
    • 자동 시스템 업데이트
    • USB를 통해 앱 인증
  5. $ adb devices를 실행하여 사용 가능한 기기를 나열함으로써 DUT 및 차트 ID를 확인합니다. device_idchart_id를 확인하려면 기기를 연결하고 분리하면서 연결 및 연결 해제하는 기기를 관찰합니다.
  6. 태블릿 화면에서 차트를 이해하기 어렵게 만들 수 있는 힌트 및 사용자 메시지를 표시하지 않으려면 테스트를 3회 실행합니다.
    1. 태블릿을 위로 향하게 하여 테이블에 놓습니다. 이때 태블릿을 상자의 후면 패널에 부착하지 마세요.
    2. 다음 명령어를 실행합니다.
          python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
          
      장면 2 및 3에서는 태블릿에 이미지가 표시되어야 하므로 드라이브가 기기의 사진, 미디어 및 파일에 액세스하도록 허용하시겠습니까?라는 메시지가 태블릿에 표시됩니다. 허용을 눌러 이 메시지를 지우고 나중에 메시지가 표시되지 않도록 합니다.
    3. 명령어를 다시 실행합니다. 태블릿에 이 파일의 사본을 유지하시겠습니까?라는 메시지가 표시되며, Google 드라이브에 저장하도록 제안합니다. 드라이브 아이콘을 누른 후 드라이브에 업로드 취소를 눌러 이 메시지를 지우고 나중에 메시지가 표시되지 않도록 합니다.
    4. 마지막으로 tools/run_all_tests.py를 실행하고 스크립트가 다른 장면을 순환할 때 장면이 자동으로 변경되는지 확인합니다. 대부분의 테스트는 실패하지만(카메라가 차트를 가리키지 않기 때문에) 태블릿이 화면에 메시지 또는 다른 팝업을 표시하지 않고 장면을 올바르게 순환하는지 확인할 수 있습니다.

테스트 실행

ITS-in-a-box를 실행하기 전에 테스트 설정에 다음 하드웨어 및 소프트웨어가 포함되어 있는지 확인합니다.

  • ITS-in-a-box 1개
  • 장면을 표시하기 위한 고화질 10인치 태블릿 1개, S/N: 5811000011
  • CTS 인증 도구 7.0_8+ 앱이 설치된 DUT 1개. DUT 예:
    • 후면 카메라(0) 테스트를 위한 Pixel NOF26W 1개, S/N: FA6BM0305016. CTS 인증 도구 앱을 설치하려면 android-cts-verifier.zip의 압축을 풀고 다음을 실행합니다.
          adb -s FA6BM0305016 install -r android-cts-verifier/CtsVerifier.apk
          

장면 0~4 실행

후면 카메라에서 장면 0~4를 실행하는 방법:

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

예:

카메라 0 S/N: FA6BM0305016
그림 1. 카메라 0 S/N: FA6BM0305016

장면 다시 시도

단일 카메라의 장면을 다시 시도할 수 있습니다.

  • 단일 카메라의 장면을 다시 시도하려면 다음 명령을 실행합니다.
        python tools/run_all_tests.py device=FA6BM0305016 chart=5811000011 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인치여야 하며 화면 해상도가 2,000 x 1,500픽셀을 초과해야 합니다. DISPLAY_LEVEL 값은 태블릿 모델에 따라 CameraITS/tools/wake_up_screen.py에서 설정해야 합니다. 아래 표에는 ITS 테스트에 권장되는 태블릿 목록이 나와 있습니다.

기기 디스플레이 크기
(인치)
디스플레이 크기
(픽셀)
태블릿 크기
(인치)
DISPLAY_LEVEL OS
Asus ZenPad 3 9.7 2,048 x 1,536 9.47 x 6.44 x 0.28 192 Android 6.0
Huawei MediaPad m5 10.8 2,560 x 1,600 10.18 x 6.76 x 0.29 192 Android 8.0
Pixel C 10.2 2,560 x 1,800 9.53 x 7.05 x 0.28 96 Android 8.0
삼성 S3 9.7 2,048 x 1,536 10.76 x 6.65 x 0.24 192 Android 7.0
Sony Xperia Z4 10.1 2,560 x 1,600 10 x 6.57 x 0.24 192 Android 7.0

자주 묻는 질문(FAQ)

Q1: 기기에 필요한 테스트 장비는 어떻게 알 수 있나요?

RFoV ITS-in-a-box 버전 1 CameraITS/tests 디렉터리에서 장면 0~장면 4의 RFoV 카메라를 테스트합니다. RFoV는 60° < FoV < 90°으로 정의됩니다. 카메라의 FoV가 크면 이미지에 빛이 표시되거나 차트가 FoV의 너무 작은 영역을 포괄할 수 있으며 결국 테스트 결과에 영향을 줄 수 있습니다.

WFoV ITS-in-a-box 버전 2 CameraITS/tests 디렉터리에서 장면 0~장면 4의 WFoV 카메라를 테스트합니다. WFoV는 FoV >= 90°으로 정의됩니다. 기능적으로는 버전 1과 동일하지만 더 큽니다. 버전 2 테스트 장비는 Android 9 이상에서 RFoV 카메라와 WFoV 카메라를 모두 테스트할 수 있습니다.

센서 퓨전 상자scenes=sensor_fusion의 테스트로 카메라/자이로스코프 타이밍 오프셋 및 다중 카메라 시스템 프레임 동기화를 테스트합니다. REALTIME 기능 플래그 및 VR/AR 앱에는 1ms 미만의 카메라/자이로스코프 타이밍 오프셋이 필요합니다.

카메라에 REALTIME 기능 플래그가 있다면 정적 ITS 테스트용 단일 장비 및 센서 퓨전 장비로 다중 카메라 기기를 테스트할 수 있습니다.

아래 표에 일련의 구성 예가 나와 있습니다.

카메라 FoV REALTIME? 권장 장비 메모
1 75° 아니요 버전 1 Android 7.0 이상
2 75° 버전 1 + 센서 퓨전 Android 9 이상
3 75° + 95° 버전 2 + 센서 퓨전 Android 9 이상

Q2: 단일 테스트를 디버깅하려면 어떻게 해야 하나요?

디버깅 목적으로 테스트를 개별적으로 실행할 수 있지만 장면 전체를 실행하지 않는 한 결과가 CtsVerifier.apk에 보고되지 않습니다. 결과는 로컬 화면에 출력되며, 이미지는 tools/run_all_tests.py를 실행할 때 생성된 /tmp/tmp### 디렉터리 대신 로컬 디렉터리에 저장됩니다.

개별 장면을 실행하려면 다음 단계를 따르세요.

  1. 다음과 같이 tools/run_all_tests.pyscenes 플래그를 추가하여 장면을 로드합니다.
        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

Q3: 테스트를 개별적으로 다시 실행하는 대신 실패한 테스트를 장면 전체로 실행해야 하는 이유는 무엇인가요?

디버깅 목적으로 테스트를 개별적으로 실행할 수 있지만 장면 전체를 실행하지 않는 한 결과가 CtsVerifier.apk에 보고되지 않습니다.

카메라 ITS는 제3자 앱이 호환 가능한 카메라 인터페이스를 갖도록 합니다. 단위 테스트와 마찬가지로 각 테스트는 카메라의 단일 사양에 중점을 둡니다. 신뢰할 수 없는 동작을 포착하기 위해 이러한 테스트는 장면 전체에서 그룹으로 통과해야 합니다. 예를 들어 신뢰할 수 없는 단일 테스트가 장면 전체의 재실행을 통과할 수는 있지만 신뢰할 수 없는 여러 테스트를 통과하기는 어렵습니다.

극단적인 예로, 장면에 10개의 테스트가 있는데 각 테스트가 50%의 확률로 PASS를 반환할 수 있는 사례를 생각해 보세요. 각 테스트를 개별적으로 실행하면 운영자는 카메라가 카메라 ITS를 통과하도록 할 가능성이 높습니다. 그러나 테스트가 장면 전체로 실행된다면 장면 통과 가능성은 0.1%에 불과합니다.

Q4: 단일 장면을 실행하거나 실행 장면 순서를 변경하려면 어떻게 해야 하나요?

기본적으로 tools/run_all_tests.py 스크립트는 모든 장면을 순서대로 실행합니다. 그러나 장면을 개별적으로 또는 지정된 순서로 실행하고 CtsVerifier.apk에 보고할 수 있습니다.

개별 장면(예: 장면 2)을 실행하려면 다음 명령을 실행합니다.

    python tools/run_all_tests.py device=# camera=# chart=# scenes=2
    

둘 이상의 장면을 특정 순서대로 실행하려면 다음 명령을 실행합니다.

    python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
    

Q5: 장면 1 테스트가 태블릿 설정에서는 매우 여러 번 실패했지만 종이 차트에서는 통과합니다. 무엇이 문제인가요?

태블릿 및 테스트 환경이 다음 사양을 충족하는지 확인합니다.

태블릿 사양

태블릿이 다음 사양을 충족하는지 확인합니다.

  • 디스플레이 크기(인치): 10인치
  • 디스플레이 크기(픽셀): 2000x1400픽셀 초과

자세한 내용은 태블릿 요구사항을 참조하세요.

태블릿 밝기

태블릿 디스플레이 밝기가 너무 낮으면 테스트에서 정확한 결과를 얻지 못할 수 있습니다. Android 7.0 이상을 실행하는 태블릿에서 밝기를 높이려면 다음 명령을 실행합니다.

    edit tools/wake_up_screen.py
    DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
    

상자 조명 수준(럭스 측정기 필요)

태블릿을 열 때 목표 럭스 값이 100에서 300 사이인지 확인합니다.

럭스 수준이 너무 높으면 scene1/test_param_flash_mode.py에서 FAIL을 반환합니다. 럭스 수준이 너무 낮으면 여러 테스트가 실패합니다.

Q6: WFoV ITS-in-a-box 버전 2 사용 시 장면에 FoV 밖의 물체가 있는 이유는 무엇인가요?

차트의 크기가 제대로 조정되지 않았을 수 있습니다. 차트 크기 조정은 Android 9 이상에서 사용할 수 있습니다. 차트 거리 입력이 테스트 장비의 버전에 맞는지 확인해야 합니다.

WFoV ITS-in-a-box 버전 2

    python tools/run_all_tests.py ... chart=# dist=22
    

RFoV ITS-in-a-box 버전 1(기본값: dist=30)

    python tools/run_all_tests.py ... chart=#
    

Q7: 센서 퓨전 테스트를 디버깅하려면 어떻게 해야 하나요?

  1. dialout 그룹에 속해 있는지 확인합니다.

    groups | egrep ‘dialout'
  2. Microchip Technology가 USB 포트에 연결되어 있는지 확인하여 센서 퓨전 컨트롤러가 연결되었는지 확인합니다.

        lsusb
        …
        Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
        …
        
  3. 다음 명령어로 테스트를 여러 번 실행하여 테스트 시도 분포를 얻습니다.

        python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
        

    실행 결과는 sensor_fusion_# 폴더 아래에 생성된 /tmp/tmp### 폴더에 있습니다. 여기서 #은 실행 번호입니다. 실패의 일반적인 이유는 다음과 같습니다.

    1. 스마트폰이 중앙에 제대로 있지 않습니다.
    2. 이미지에 특징이 충분하지 않습니다(흔히 FoV 또는 조명 문제).
    3. 반환된 FAIL이 유효하면 카메라와 자이로스코프 사이의 타이밍 오프셋을 수정해야 합니다.

Q8: 테스트 버그를 보고할 때 어떤 정보를 포함해야 하나요?

테스트 버그 보고 시 테스트용으로 생성한 파일 및 이미지를 포함합니다.

  1. tools/run_all_tests.py를 통해 테스트를 실행했다면 /tmp/tmp### 디렉터리를 압축하여 버그에 첨부합니다.
  2. 테스트를 단독으로 실행했다면 모든 화면 출력 및 생성된 이미지를 버그에 첨부합니다.

또한 버그 보고서도 포함합니다. 문제의 테스트가 실패하면 다음 명령어를 사용하여 버그 보고서를 생성하고 생성된 ZIP 파일을 버그에 첨부합니다.

    adb -s device_id bugreport