Программа совместимости Android — ключевой фактор, способствующий поддержанию положительной обратной связи в экосистеме Android. CTS — ключевой инструмент обеспечения качества совместимости в масштабе. Команда Android продолжает совершенствовать инструмент CTS и тестовое покрытие. Регулярное добавление тестовых случаев значительно повышает качество совместимых устройств.
Общие вопросы
В этом разделе приведены общие часто задаваемые вопросы по CTS.
Какие виды испытаний проводит CTS?
CTS проверяет наличие и корректность работы всех поддерживаемых строго типизированных API Android. CTS также тестирует другие системные характеристики, не относящиеся к API, такие как жизненный цикл и производительность приложения.
Как лицензируется CTS?
CTS лицензируется по той же лицензии Apache Software License 2.0, которую использует большая часть Android.
Проверяются ли кодеки CTS?
Да. Все обязательные кодеки проверены CTS.
Тестовые вопросы
В этом разделе приведены часто задаваемые вопросы, которые помогут более эффективно проводить тесты CTS.
В чем разница между CTS Sharding и TF Sharding?
CTS Sharding и TF Sharding — это совершенно разные планы тестирования, основанные на разной кодовой базе тестовой инфраструктуры. Хотя команда запуска одинакова в разных версиях, результат шардинга выглядит по-разному. CTS Sharding статически назначает тестовые случаи тестируемым устройствам (DUT) следующим образом:
- Команда: выполнить cts
- Конфигурация для Android 8.1 и более ранних версий: /tools/cts-tradefed/res/config/cts.xml
TF Sharding динамически назначает тестовые случаи доступным DUT следующим образом:
- Команда: выполнить cts
- Конфигурация для Android 9: /platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/cts-suite.xml
Чего ожидать от устройства, поддерживающего несколько ABI?
Устройство должно пройти все тесты CTS и CTS Verifier для каждого заявленного режима ABI. Поэтому необходимо запустить приложение для каждого из этих режимов. Для нескольких режимов ABI требования следующие:
- Для CTS и CTS Verifier существуют версии для ARM и x86 для каждой архитектуры. Каждая из них поддерживает 32- или 64-битный режим.
- Для тестов CTS, если устройство поддерживает как ARM, так и x86, оно должно запустить и пройти тесты ARM и x86 CTS соответственно.
Требования CDD к ABI см. в разделе CDD 3.3.1. Двоичные интерфейсы приложений.
Достаточно ли запустить тест только на основном ABI (например, 64 бита), чтобы сократить время выполнения теста?
Нет. Приложение Android работает в собственных 32- или 64-битных средах выполнения. Фактический машинный код, путь к коду и состояние различаются в 32- и 64-битных версиях. Если вы пропустите один режим, вы охватите только 50% ABI устройства.
Почему так много тестовых случаев отмечены как «Не выполнено»?
Вам следует проверить номер выполненного модуля , а не номер не выполненного модуля.
В предыдущих версиях модули CTS слишком агрессивно сообщали о состоянии «Модуль выполнен» до их завершения. Поэтому число «Модули выполнены» сообщалось без завершения всех тестовых случаев, даже если на некоторых устройствах возникали проблемы. Новая тестовая система более консервативна и сообщает большее количество тестов «Не выполнено» при возникновении проблем.
Модуль, выполненный до завершения, сообщает о том , что модуль не выполнен в самом последнем вызове (done="false") в отчете в течение следующих моментов:
- Тестовый запуск модуля был прерван из-за проблем с подключением устройства.
- Не все ожидаемые тестовые запуски модуля были выполнены.
Повторная попытка (с использованием параметра
-r/--retry) с дополнительными параметрами фильтрации, такими как:- --include-filter
- --exclude-filter
- -t/--test (опция пока не поддерживается при повторной попытке)
- --retry-type не удался
- --подплан
Чтобы получить статус «Модуль выполнен» (done="true") для этих модулей, повторите следующее для самого последнего вызова:
run retry --retry <session_id> for Android 9 and later versionsrun cts --retry <session_id> for Android 8.1 and previous versionsМодуль, выполненный без каких-либо проблем, упомянутых ранее (даже при 0 оставшихся тестах), помечается в новом отчете как «Модуль выполнен» .
Исключения
- У CtsNNAPITestCases есть известная проблема, связанная с ограничением количества аргументов в Linux/ОС. Модуль можно перезапустить изолированно,
run cts -m CtsNNAPITestCasesнапрямую.
Как избежать сбоев при подготовке к тестированию за корпоративным брандмауэром?
Все автоматизированные тестовые наборы пытаются загрузить либо медиафайлы CTS, либо файлы бизнес-логики во время выполнения. Во многих корпоративных средах обычно используются брандмауэр и прокси-сервер, что приводит к сбою подготовки теста. Выполните следующую строку или добавьте её в файл .profile (в Ubuntu).
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'Нужна ли мне SIM-карта для CTS для Secure Element?
Необходимость использования SIM-карты для проведения теста зависит от того, поддерживается ли данная функция в тестовом устройстве.
- Если вашему устройству НЕ требуется поддержка доступа приложений Android к защищённым элементам — как в UICC-карте (например, SIM-карте), предоставляемой операторами мобильной связи, так и встроенным в устройство, — вы можете настроить манифест HIDL так, чтобы он не включал элемент HAL
android.hardware.secure_element. В этом случае API android.se.omapi.SEService.getReaders() возвращает пустой список, а тест CTS автоматически проходится и сообщает о прохождении CTS. - Если вашему устройству НЕОБХОДИМА поддержка доступа приложений Android к защищённым элементам — как к UICC-карте (например, SIM-карте), предоставляемой операторами мобильной связи, так и к встроенным в устройство, — вам необходимо правильно реализовать защищённый элемент и протестировать его самостоятельно. В разделе «Тест CTS для защищённого элемента» описывается, как подготовиться к запуску тестов CTS, которые проверяют работоспособность API-пакета android.se.omapi , добавленного в Android 9. Мы также рекомендуем провести дополнительное тестирование самостоятельно, поскольку покрытие тестами CTS минимально.
Где я могу получить SIM-карты для CTS для Secure Element?
Вы можете обратиться к выбранному вами поставщику SIM-карты.
Почему во время выполнения CTS с шардингом токенов на экране блокировки отображается Orange SIM?
Тестовый случай не запускается, так как тестирование SIM-карты заблокировано. Отключите функцию «Блокировка SIM-карты» в настройках блокировки SIM-карты перед выполнением CTS с шардингом токенов.