Контрольный список тестирования камеры HAL

В этом документе перечислены все тесты, доступные для оценки уровня абстракции оборудования камеры Android (HAL). Он предназначен для производителей оригинального оборудования (OEM) и поставщиков прикладных процессоров (AP), поэтому они могут обеспечить надлежащую реализацию HAL камеры с минимальными дефектами. Хотя это добровольное добавление к Android Compatibility Test Suite (CTS), оно значительно увеличивает охват тестирования камеры и, безусловно, выявляет потенциальные ошибки.

Пройдя эти тесты, OEM-производители проверяют, правильно ли они интегрировали интерфейсы уровня аппаратной абстракции камеры Android (HAL) 3. Когда в соответствии со всеми элементами в контрольном списке, реализация устройства может рассматриваться в полном объеме в отношении интерфейсов Android Camera HAL. Это в свою очередь позволит устройство правильно поддерживать android.hardware.camera2 пакет, камера приложения сборки на.

Спецификация камеры HAL3

Android камеры HAL3 спецификация является авторитетным источником информации о том, какие устройства должны удовлетворять; на этой странице представлена ​​сводка всех тестов, которые можно использовать в качестве контрольного списка. Разработчики Camera HAL (например, поставщики точек доступа) должны последовательно изучить спецификацию Camera HAL3 и убедиться, что их устройства соответствуют ей.

Текущая спецификация HAL определена в этих файлах в Android 5.0 и более поздних версиях универсального пакета разработки платформы Android (PDK):

Типы тестов камеры

Вот основные типы тестов, доступные для последней версии камеры Android, а также ссылки на соответствующие инструкции ниже:

Все эти типы тестов подробно описаны ниже. Эти тесты представлены в хронологическом порядке, в котором OEM-производители должны их выполнять.

Например, если устройство не пройдёт нативные тесты, оно обязательно не пройдёт последующие тесты Compatibility Test Suite (CTS). А если устройство не проходит CTS, переход к Image Test Suite (ITS) бесполезен. Мы рекомендуем устранять сбои в каждом типе теста, прежде чем переходить к следующему набору тестов.

Vendor Test Suite (VTS) тесты

Android Vendor Test Suite (VTS) - это набор для тестирования, который работает на уровне интерфейса HIDL. Для получения дополнительной информации об использовании VTS см Vendor Test Suite .

Тесты на совместимость (CTS)

Тесты Camera Android Compatibility Test Suite (CTS) ориентированы на совместимость устройств. Для получения информации о настройке тестовой среды, см Настройка CTS .

Исходный путь для камеры испытаний CTS является: platform/cts .

При запуске CTS камеры для устройств, которые поддерживают внешние камеры (например, веб-камеры USB), вы должны подключить устройство при запуске CTS, иначе тесты автоматически завершатся ошибкой. Примеры внешних камер включают в себя: Logitech HD Pro Webcam C920 и Microsoft LifeCam HD-3000 .

Смотрите введение CTS и ее подстраниц для общих инструкций по работе с CTS.

CTS тесты для android.hardware.Camera API

Найти эти тесты камеры под cts/tests/tests/ :

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

CTS тесты для android.hardware.camera2 API

Найти эти тесты камеры под cts/tests/tests/ :

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

CTS Verifier тесты камеры

Найти эти тесты камеры под: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Image Test Suite (ITS) тесты

Тесты Camera Image Test Suite (ITS) ориентированы на правильность изображения. Чтобы выполнить тесты, запустите сценарии Python на рабочей станции с устройством Android, подключенным через USB.

Камера инфраструктура и тесты расположены в cts/apps/CameraITS каталоге. Каждый тест постоянно находится в tests/scene # подкаталога.

Для того, чтобы создать тестовую среду, выполните команду:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

Для получения более подробной информации о том , как настроить и запустить тесты, см CameraITS файл PDF в cts/apps/CameraITS . См tutorial.py в tests подкаталог для руководства о том , как использовать скрипты.

Статические тесты ITS (сцены 0–5) могут выполняться с любой операционной системой с требуемой средой Python 2.7. Однако sensor_fusion тест с датчиком Fusion Box должен быть запущен с операционной системой Linux.

Рекомендуемая установка для сцен 0-4 описана в Camera ИТС-в-коробке . Рекомендуемая установка для sensor_fusion сцены описана в Sensor Fusion Box Краткое руководство по .

Чтобы запустить ITS вручную, подготовьте простую физическую среду с определенной многоразовой целью, такой как белая стена, серая карта и настольная лампа. Установите Android-устройство на штатив и запустите сценарии для проверки функций камеры. Большинство тестов проходят или не проходят, но некоторые предлагают показатели.

Эти сценарии тестируют сценарии, которые не тестируются в CTS и являются важным компонентом плана тестирования HAL 3.2.

ЕГО тесты либо проходят, либо не проходят. Все обязательные тесты в каждой папке сцены должны пройти. Тесты, которые не могут не санкционированные и до сих пор считается пропуском в CtsVerifier .

Тесты от сцены 0 до сцены 4

Эти сцены представляют большую часть его тестирования и включаются в PDF - файлы в scene папке. Для автоматизации этих тестов, используйте Camera ITS-в-коробке системы.

  • Сцена 0: не требует настройки.
  • Сцена 1: Требуется серая карта.
  • Сцена 2: Требуется сцена с лицом.
  • Сцена 3: диаграмма ISO12233.
  • Сцена 4: Пользовательская сцена с кругом внутри квадрата.

Сцена 5 тесты

Тесты в сцене 5 требуют размещения диффузора поверх камеры.

Тесты слияния сенсоров

Для тестов слияния датчиков требуется определенное движение камеры для проверки разницы в отметках времени между камерой и гироскопом для приложений AR и VR. Этот тест пропускается , если не гироскоп не включен или если REALTIME параметр не включен. sensor_fusion тест может быть автоматизирован с помощью датчика Fusion Box .

Media Framework тесты

Пройдите все медиа-тесты, связанные с камерой, в MediaFrameworkTest. Обратите внимание, что для этих тестов на устройстве Android должен быть установлен mediaframeworktest.apk. Вам нужно будет make mediaframeworktest , а затем использовать ADB для установки в результате .apk. Примеры команд включены ниже.

Исходный путь для камеры , связанной с рамочными медиа тестов: platform/frameworks/base

Найти исходный код для испытаний здесь: frameworks/base/media/tests/MediaFrameworkTest

Чтобы настроить эти тесты:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

Если name переменной представляет собой каталог , содержащий продукт вендора.

Найдите все тесты в следующем каталоге или его подкаталогах:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

Каждый подкаталог представляет собой класс тестов:

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

Запуск тестов Media Framework

Чтобы увидеть все доступные тесты:

adb shell pm list instrumentation

Это даст результаты, похожие на:

instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)

Выявление и извлечение компонента (между instrumentation: и (target=com.android.mediaframeworktest) из каждой тестовой линии компонент состоит из имени целевого пакета (. com.android.mediaframeworktest ) и название теста бегуна ( MediaFramework TestRunner MediaFramework TestRunner ).

Например:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

Затем вы можете передать каждый компонент adb shell am instrument , как так:

adb shell am instrument -w component.name

Там , где component.name равно Извлеченный значение выше. Например:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Обратите внимание, что хотя путь к классу - это пакет Java + имя класса, пакет инструментария не обязательно совпадает с пакетом Java. При объединении имени компонента убедитесь, что вы используете пакет AndroidManifest.xml, а не пакет Java, в котором находится класс средства выполнения тестов.

Чтобы запустить один класс тестов, передайте -e класс аргумент, например:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Для выполнения только одного метода в классе теста, добавьте знак фунта (#) и имя метода (в данном случае, testConnectPro ) к имени класса, например так:

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Функциональные тесты медиа-настроек

Вот пример выполнения функционального теста. Этот тест проверяет базовую функциональность различных комбинаций настроек камеры. (например, вспышка, экспозиция, баланс белого, сцена, размер изображения и geoTag)

Запустите тестовую команду:

adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner

Тесты интеграции медиа

Вот пример запуска интеграционного теста, в данном случае mediaframeworktest / integration / CameraBinderTest.java и mediaframeworktest / CameraStressTestRunner.java:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

В случае успеха это приводит к выводу, похожему на:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

Тесты производительности мультимедиа

Этот предварительный тест памяти откроется и запустит предварительный просмотр камеры 200 раз. Через каждые 20 итераций будет записываться снимок ps mediaserver, и он будет сравнивать использование памяти по-разному после 200 итераций. Тест завершится неудачно, если разница больше 150 км.

Запустите тестовую команду:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

Более подробно выход можно найти в: /sdcard/mediaMemOutput.txt

Модульные тесты мультимедиа

Команды для запуска модульных тестов похожи. Например, для CameraMetadataTest.java команда будет выглядеть так:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

Стресс-тесты СМИ

Этот тест предназначен для выявления возможностей захвата изображения с камеры и записи видео.

Запустите тестовую команду:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

Все тесты должны пройти.

Ручное тестирование

Приложение TestingCam следует запустить вручную, выполнив следующие проверки. Источник TestingCam здесь: pdk/apps/TestingCamera/

Бесконечная фокусировка с наклоном камеры

Запустите TestingCam, включите предварительный просмотр и убедитесь, что режим автофокусировки установлен на бесконечность. С помощью кнопки Сделать снимок, захват снимки удаленных объектов ( по крайней мере , 10 м от отеля) с камерой указала горизонтально, вверх (ближе к вертикали) и вниз (ближе к вертикали); Примером снимка вверх могут быть высокие листья / ветви дерева снизу, а примером снимка вниз может быть улица, видимая с крыши здания. Во всех случаях удаленный объект должен быть резким и в фокусе. Сохраняйте и просматривайте снимки в виде галереи, чтобы вам было проще увеличивать масштаб и проверять резкость.

Обратите внимание, что для камеры с приводом VCM, чтобы пройти этот тест, потребуется либо система управления автофокусом с обратной связью, либо потребуется некоторая коррекция SW на основе использования данных акселерометра для определения ориентации камеры. Также потребуется надежная заводская калибровка положения линзы на бесконечность.

Ручное тестирование TestingCam2

Приложение TestingCam2 следует запустить вручную, выполнив следующие проверки. Источник TestingCam2 здесь: pdk/apps/TestingCamera2/

Захват JPEG

Старт TestingCam2 и нажмите кнопку JPEG. Изображение, которое появляется справа от изображения в видоискателе, должно выглядеть так же, как в видоискателе, в том числе иметь ту же ориентацию.