Android Camera Image Test Suite (ITS) является частью Android Compatibility Test Suite (CTS) Verifier и включает тесты, которые проверяют содержимое изображения. CTS Verifier поддерживает автоматизацию тестирования ITS с помощью Camera ITS-in-a-box; поддержка ручных тестов охватывает все форм-факторы Android-устройств.
ITS-in-a-box включает в себя следующие преимущества:
- Автоматизация. Вмешательство человека во время теста не требуется.
- Простое устранение неполадок. Постоянство тестовой среды приводит к меньшему количеству ошибок настройки и повышает воспроизводимость.
- Эффективность. Возможность повторной попытки для отдельной камеры/сцены повышает эффективность выполнения теста.
Начиная
ITS-in-a-box состоит из пластиковой коробки, вырезанной лазером из чертежей системы автоматизированного проектирования (CAD), планшета с диаграммами и тестируемого устройства (DUT). Вы можете использовать ITS-in-a-box с широким полем зрения (WFoV), который позволяет тестировать как камеры WFoV (FoV > 90 градусов), так и камеры RFoV (FoV < 90 градусов), или стандартное поле зрения. -view (RFoV) ITS-in-a-box.
Чтобы начать работу с камерой ITS-in-a-box:
- Купите или создайте WFoV или RFoV ITS-in-a-box.
- Настройте планшет с программным обеспечением Camera ITS.
- Запустите тесты .
- Получите результаты от DUT.
Настройка планшета
В этом разделе приведены пошаговые инструкции по настройке планшета для использования с тестами Camera ITS, расположенными в каталоге CameraITS
. В этих инструкциях в качестве примера используется планшет Pixel C. Сведения о требованиях к планшетам и рекомендации см. в разделе Требования к планшетам .
Примечание. Скрипты Camera ITS Python автоматически устанавливают для вас следующие параметры планшета:
Настройки > Дисплей > Спящий режим > Через 30 минут бездействия
Адаптивная яркость > ВЫКЛ.
- Зарядите планшет и включите его. Если будет предложено настроить учетную запись, пропустите ее (Camera ITS не требует какой-либо учетной записи, сопряженной с планшетом).
- Обновите планшет до Android 7.0 или выше. Android 6.x и более ранние версии не поддерживают Camera ITS.
- Включить режим разработчика .
- Вернитесь в « Настройки » и выберите «Параметры разработчика».
Включить параметры - На
- бодрствовать
- Отладка по USB (это позволяет хосту запускать планшет в режиме отладки. При первом подключении планшета к хосту на планшете появляется запрос Разрешить отладку по USB? Если планшет не отображает запрос на отладку, отключите, а затем снова подключите планшет.)
Отключить параметры - Автоматические обновления системы
- Проверка приложений через USB
- Определите идентификаторы тестируемого устройства и диаграммы, запустив
$ adb devices
для получения списка доступных устройств. Чтобы определить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-in-a-box убедитесь, что ваша тестовая установка включает следующее аппаратное и программное обеспечение:
- Один (1) ITS-in-a-box
- Один (1) 10-дюймовый планшет с высоким разрешением для отображения сцен, серийный номер: 5811000011
- Одно (1) тестируемое устройство с установленным приложением CTS Verifier 7.0_8+. Пример тестируемого устройства:
- Один (1) пиксель NOF26W для тестирования задней камеры (0), серийный номер: FA6BM0305016. Чтобы установить приложение CTS Verifier, распакуйте
android-cts-verifier.zip
запуститеadb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
.
- Один (1) пиксель NOF26W для тестирования задней камеры (0), серийный номер: 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 требует специальной настройки с определенным освещением (подробности см. в CameraITS.pdf
в CTS Verifier, который можно загрузить в разделе «Загрузки комплекта тестов совместимости» ). Вы должны запустить сцену 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
Получение результатов
Вы можете просматривать результаты во время тестирования и сохранять готовые результаты в виде отчета.
- Посмотреть Результаты. Чтобы сохранить результаты Camera ITS в виде отчета:
- Нажмите Pass и сохраните отчет.
Рис. 3. Отчет ITS камеры - Получение отчетов с устройства:
adb -s FA6BM0305016 pull /sdcard/verifierReports
- Разархивируйте файл отчета и просмотрите
test_result.xml
.
Рисунок 4. Отчеты камеры ITS
- Нажмите Pass и сохраните отчет.
Требования к планшету
Планшеты должны иметь размер дисплея около 10 дюймов и разрешение экрана более 1920 x 1200 пикселей. Значение brightness
должно быть установлено в config.yml
в соответствии с моделью планшета. В таблице ниже перечислены планшеты, рекомендуемые для тестирования ITS, а также версии Android для тестируемого устройства, с которым работают планшеты.
Устройство | Размер дисплея (дюймы) | Размер дисплея (пиксели) | Размеры планшета (дюймы) | Отображать яркость | Поддерживаемое тестируемое устройство Операционные системы |
---|---|---|---|---|---|
Сяоми Пэд 5 | 11 | 2560 х 1600 | 10,03 х 6,55 х 0,27 | 192 | Андроид 12+ |
Вкладка Lenovo M10 Plus | 10.3 | 1920 х 1200 | 9,61 х 6,03 х 0,32 | 192 | Андроид 12+ |
Вкладка Samsung Galaxy Tab A7 | 10.4 | 2000 х 1200 | 9,75 х 6,2 х 0,28 | 192 | Андроид 12+ |
Чуви Хай9 Эйр 10.1 | 10.1 | 2560 х 1600 | 9,52 х 6,77 х 0,31 | 192 | Андроид 7+ |
Асус Зенпад 3 | 9,7 | 2048 х 1536 | 9,47 х 6,44 х 0,28 | 192 | Андроид 7+ |
Huawei MediaPad m5 | 10,8 | 2560 х 1600 | 10,18 х 6,76 х 0,29 | 192 | Андроид 7+ |
Пиксель С | 10.2 | 2560 х 1800 | 9,53 х 7,05 х 0,28 | 96 | Андроид 7+ |
Сони Икспериа З4 | 10.1 | 2560 х 1600 | 10 х 6,57 х 0,24 | 192 | Андроид 7+ |
Часто задаваемые вопросы (FAQ)
Q1: Как определить, какие испытательные стенды мне нужны для моего устройства?
RFoV ITS-in-a-box версии 1 тестирует камеры RFoV для тестов сцен 0 и 4 в CameraITS/tests
. RFoV определяется как 60° < FoV < 90° . Для камер с большим полем зрения на изображениях могут появляться огни или диаграммы могут покрывать слишком малую область поля зрения, что влияет на результаты тестирования.
WFoV ITS-in-a-box версии 2 тестирует камеры WFoV для сцен от 0 до 4 в CameraITS/tests
. WFoV определяется как FoV >= 90° . Он функционально идентичен ревизии 1, но крупнее. Испытательный стенд версии 2 может тестировать камеры RFoV и WFoV в Android 9 и выше.
Блок слияния датчиков проверяет смещение синхронизации камеры/гироскопа и синхронизацию кадров многокамерных систем с помощью тестов в scenes=sensor_fusion
. Смещение синхронизации камеры/гироскопа менее 1 мс требуется для флага функции REALTIME
и приложений VR/AR.
Устройства с несколькими камерами можно тестировать с помощью одной установки для статических тестов ITS и установки для слияния датчиков, если камера имеет флаг функции REALTIME
.
Набор примеров конфигураций представлен в таблице ниже.
Пример | Поле зрения камеры | В РЕАЛЬНОМ ВРЕМЕНИ? | Рекомендуемые установки | Заметки |
---|---|---|---|---|
1 | 75° | Нет | Версия 1 | Андроид 7.0 или выше |
2 | 75° | Да | Rev 1 + слияние датчиков | Андроид 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 и ниже:
- Загрузите сцену, добавив флаг
scenes
вtools/run_all_tests.py
:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
Нажмите Control+C , чтобы остановить тесты после того, как сцена будет зарегистрирована как загруженная на
stdout
.Если правильная сцена уже есть на экране, активируйте экран:
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
Результаты выводятся на локальный экран, а изображения сохраняются в локальном каталоге вместо созданного каталога /tmp/tmp###
при запуске tools/run_all_tests.py
.
Чтобы запустить отдельную сцену в 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
. Выполняя каждый тест по отдельности, оператор с большой долей вероятности сможет заставить камеру пройти тест Camera ITS. Однако, если тесты выполняются в совокупности как сцена, вероятность того, что сцена пройдет, составляет всего 0,1%.
Q6: Как запустить одну сцену или изменить порядок сцен?
По умолчанию скрипт tools/run_all_tests.py
запускает все сцены по порядку. Однако сцены можно запускать по отдельности или в указанном порядке и сообщать об этом в CtsVerifier.apk
.
Чтобы запустить отдельную сцену (например, сцену 2) или несколько сцен в определенном порядке в Android 11 или более ранней версии:
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 к порту 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
.Выходные данные запуска находятся в папке
/tmp/tmp###
, созданной в папкахsensor_fusion_#
, где#
— номер запуска. Распространенными причинами отказа являются:- Телефон не отцентрирован должным образом.
- На изображении обнаружено недостаточное количество функций (часто проблема с полем зрения или освещением).
-
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=*