Этот контрольный список определяет набор основных критериев качества и связанных с ними тестов, которые помогут вам оценить качество вашего приложения. Некоторые из этих критериев можно легко пропустить, и тесты помогут вам не забыть включить их в свои планы тестирования.
В контрольном списке указано минимальное качество, которому должны соответствовать все приложения. Ваше тестирование, скорее всего, выйдет далеко за рамки описанного здесь.
Каждый элемент контрольного списка качества имеет уникальный идентификатор, который вам может оказаться полезным использовать при общении со своей командой.
Визуальный опыт
Ваше приложение должно обеспечивать стандартный визуальный дизайн Android и шаблоны взаимодействия, где это необходимо, для единообразного и интуитивно понятного взаимодействия с пользователем.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Навигация | ВХ-Н1 | CR-3 | Приложение поддерживает стандартную навигацию с помощью кнопки «Назад» и не использует никаких настраиваемых экранных подсказок «Кнопка «Назад». |
ВХ-Н2 | CR-3 | Приложение поддерживает навигацию жестами для возврата/перехода на главный экран. | |
ВХ-Н3 | CR-1 CR-3 CR-5 | Приложение правильно сохраняет и восстанавливает состояние пользователя или приложения. Приложение сохраняет состояние пользователя или приложения при выходе из переднего плана и предотвращает случайную потерю данных из-за обратной навигации и других изменений состояния. При возвращении на передний план приложение должно восстановить сохраненное состояние и любую ожидающую значительную транзакцию с состоянием. Примеры: изменения редактируемых полей, хода игры, меню, видео и других разделов приложения или игры.
| |
Уведомления | VX-S1 | CR-9 | Уведомления соответствуют рекомендациям Material Design. В частности:
|
VX-S2 | CR-9 | Для обмена сообщениями/социальных приложений и разговоров:
| |
Пользовательский интерфейс и графика | ВХ-У1 | CR-5 | Приложение поддерживает как альбомную, так и портретную ориентацию (если это возможно). Ориентации раскрывают в основном одни и те же функции и действия и сохраняют функциональное равенство. Незначительные изменения в содержании или представлениях приемлемы. |
ВХ-У2 | CR-5 | Приложение использует весь экран в обеих ориентациях и не использует почтовый ящик для учета изменений ориентации. Незначительные почтовые ящики для компенсации небольших отклонений в геометрии экрана допустимы. | |
ВХ-У3 | CR-5 | Приложение правильно обрабатывает быстрые переходы между ориентациями дисплея без проблем с рендерингом и потерей состояния. | |
Визуальное качество | ВХ-В1 | CR-все | Приложение отображает графику, текст, изображения и другие элементы пользовательского интерфейса без заметных искажений, размытия или пикселизации.
|
ВХ-В2 | CR-все | Приложение отображает текст и текстовые блоки приемлемым образом для каждого из поддерживаемых приложением языков.
| |
VX-V3 | CR-все | Содержимое приложения и все веб-содержимое, на которое ссылается приложение, поддерживают темную тему . |
Функциональность
Ваше приложение должно реализовать ожидаемое функциональное поведение.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Аудио | ФН-А1 | CR-1 CR-8 | Звук возобновляется, когда приложение возвращается на передний план или указывает пользователю, что воспроизведение находится в состоянии паузы. |
ФН-А2 | CR-1 CR-2 CR-8 | Если воспроизведение звука является основной функцией, приложение должно поддерживать фоновое воспроизведение . | |
ФН-А3 | CR-0 | Когда пользователь инициирует воспроизведение звука, приложение должно выполнить одно из следующих действий в течение одной секунды:
| |
ФН-А4 | CR-0 | Приложение должно запрашивать фокусировку звука , когда звук начинает воспроизводиться, и отключать фокусировку звука, когда воспроизведение останавливается. | |
ФН-А5 | CR-0 | Приложение должно обрабатывать запросы других приложений на фокусировку звука . Например, приложение может уменьшить громкость воспроизведения, когда другое приложение воспроизводит речь. | |
СМИ | ФН-М1 | CR-0 CR-6 CR-8 | Если приложение воспроизводит звук в фоновом режиме, оно должно создать уведомление, стилизованное с помощью MediaStyle . |
ФН-М2 | CR-0 | Если приложение воспроизводит видео, оно должно поддерживать воспроизведение «картинка в картинке» . | |
ФН-М3 | CR-0 | Если приложение кодирует видео, оно должно делать это, используя стандарт сжатия видео HEVC. | |
Совместное использование | ФН-С1 | CR-0 | Приложение должно использовать Android Sharesheet при обмене контентом. Он может предлагать цели, недоступные для индивидуальных решений. |
Фоновая служба | ФН-Б1 | CR-6 | Приложение по возможности избегает запуска фоновых служб. Чтобы обеспечить бесперебойную работу устройства пользователя, система применяет различные ограничения на фоновые службы . Это не считается хорошим использованием фоновых служб:
Узнайте, как выбрать правильное решение для вашей работы . |
ФН-Б2 | CR-10 | Приложение должным образом поддерживает функции управления питанием, представленные в Android 6.0 (Doze и App Standby). В случае, если основная функциональность нарушается из-за управления питанием, только квалифицированные приложения могут запросить исключение. См. раздел «Поддержка» для других вариантов использования в Doze и App Standby. |
Производительность и стабильность
Ваше приложение должно обеспечивать производительность, стабильность, совместимость и скорость реагирования, ожидаемые пользователями.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Стабильность | ПС-С1 | CR-все СД-1 | Приложение не аварийно завершает работу и не блокирует поток пользовательского интерфейса , вызывая ошибки ANR (Android не отвечает). Используйте предварительный отчет Google Play, чтобы выявить потенциальные проблемы со стабильностью. После развертывания обратите внимание на страницу Android Vitals в консоли разработчика Google Play. |
Производительность | ПС-П1 | CR-все СД-1 | Приложение загружается быстро или предоставляет пользователю обратную связь на экране (индикатор выполнения или аналогичный сигнал), если загрузка приложения занимает более двух секунд. |
ПС-П2 | CR-все СД-1 | Приложения должны отображать кадры каждые 16 мс, чтобы достичь скорости 60 кадров в секунду. Разработчики могут использовать параметр рендеринга Profile HWUI при тестировании. В случае возникновения проблем доступны инструменты, помогающие диагностировать медленный рендеринг . | |
ПС-П3 | ПМ-1 | Если StrictMode включен (см. «Тестирование StrictMode» ниже), при тестировании приложения не отображаются красные вспышки (предупреждения о производительности от StrictMode). Любое красное мигание указывает на неправильное поведение в отношении хранилища, доступа к сети или утечек памяти. | |
SDK | ПС-Т1 | CR-0 | Приложение работает на последней общедоступной версии платформы Android без сбоев и серьезного влияния на основные функции. |
ПС-Т2 | СП-1 | Приложение нацелено на последнюю версию Android SDK, установив значение targetSdk . | |
ПС-Т3 | СП-1 | Приложение создано с использованием последней версии SDK путем установки значения compileSdk . | |
ПС-Т4 | СП-2 СП-3 | Все используемые сторонние SDK являются актуальными. Любые улучшения этих SDK, такие как стабильность, совместимость или безопасность, должны быть доступны пользователям своевременно. Разработчик несет ответственность за всю кодовую базу приложения, включая любые используемые сторонние SDK. | |
ПС-Т5 | CR-0 | Приложение не использует интерфейсы, отличные от SDK . | |
Батарея | ПС-Б1 | БА-1 | Приложение должным образом поддерживает функции управления питанием, представленные в Android 6.0 (Doze и App Standby). В случае, если основная функциональность нарушается из-за управления питанием, только квалифицированные приложения могут запросить исключение. Во время разработки разработчики могут тестировать поведение приложений в режиме ожидания и дремоты с помощью этих команд ADB . Что касается использования батареи, разработчики могут использовать профилировщик энергопотребления Android Studio или инструмент Battery Historian в сочетании с плановой фоновой работой для диагностики неожиданного использования батареи. |
Конфиденциальность и безопасность
Ваше приложение должно безопасно обрабатывать пользовательские данные и личную информацию с соответствующим уровнем разрешений.
В дополнение к этому контрольному списку приложения, опубликованные в Google Play Store, также должны соответствовать политике пользовательских данных для защиты конфиденциальности пользователей.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Разрешения | СК-П1 | СК-4 | Приложение запрашивает только абсолютно минимальное количество разрешений, необходимое для поддержки конкретного варианта использования. Для некоторых разрешений, таких как местоположение, по возможности используйте грубое местоположение вместо точного. |
СК-П2 | Приложению следует запрашивать разрешение на доступ к конфиденциальным данным (например, SMS, журналу вызовов или местоположению ) или платным услугам (например, номеронабирателю или SMS), если это напрямую связано с основными вариантами использования приложений. Последствия, связанные с этими разрешениями, должны быть четко раскрыты пользователю. В зависимости от того, как вы используете разрешения, может существовать альтернативный способ реализовать вариант использования вашего приложения, не полагаясь на доступ к конфиденциальной информации. Например, вместо того, чтобы запрашивать разрешения, связанные с контактами пользователя, может быть более целесообразным запрашивать доступ, используя неявное намерение . | ||
СК-П3 | CR-0 | Приложение запрашивает разрешения во время выполнения в контексте, когда запрашивается функциональность, а не заранее во время запуска приложения. | |
СК-П4 | CR-0 | Приложение должно проектировать свой пользовательский интерфейс так, чтобы четко объяснять, почему необходимы определенные разрешения. Если это невозможно, следует следовать рекомендуемой процедуре и объяснить, почему для функции вашего приложения требуется разрешение . Приложение должно плавно ухудшаться , когда пользователи отклоняют или отзывают разрешение. Приложение не должно полностью препятствовать доступу пользователя к приложению. | |
Дата файлы | СК-DF1 | СК-1 | Все конфиденциальные данные хранятся во внутренней памяти приложения . |
СК-ДФ2 | СК-10 | Никакие личные или конфиденциальные данные пользователя не записываются в системный журнал или журнал приложения. | |
СК-ДФ3 | Приложение не должно использовать несбрасываемые идентификаторы оборудования , такие как IMEI, в целях идентификации. | ||
Личность | SC-ID1 | CR-0 | Предоставляйте подсказки по автозаполнению учетных данных учетной записи и другой конфиденциальной информации, такой как данные кредитной карты, физический адрес и номер телефона. |
СК-ИД2 | CR-0 | Интегрируйте One Tap для Android , чтобы упростить вход в систему. | |
СК-ID3 | CR-0 | Интегрируйте биометрическую аутентификацию для защиты финансовых транзакций или конфиденциальной информации, например важных пользовательских документов. | |
Компоненты приложения | СК-АС1 | СК-5 | Экспортируются только компоненты приложения, которые обмениваются данными с другими приложениями , или компоненты, которые должны вызываться другими приложениями . Сюда входят виды деятельности , услуги , приемники вещания и особенно поставщики контента . Всегда устанавливайте атрибут |
СК-АС2 | CR-0 СК-4 | Все намерения и трансляции соответствуют лучшим практикам:
| |
СК-АС3 | СК-3 | Все поставщики контента, которые обмениваются контентом между вашими приложениями, используют android:protectionLevel="signature" для пользовательских разрешений . Сюда входят виды деятельности , услуги , приемники вещания и особенно поставщики контента . Большинству приложений не следует полагаться на доступ к списку установленных пакетов. Доступ был ограничен начиная с Android 11. | |
сеть | СК-Н1 | СК-9 | Весь сетевой трафик передается через SSL . |
СК-Н2 | СК-6 | Приложение объявляет конфигурацию сетевой безопасности . | |
СК-Н3 | Если приложение использует сервисы Google Play, поставщик безопасности инициализируется при запуске приложения . | ||
Библиотеки | СК-У1 | СП-2 | Все библиотеки, SDK и зависимости обновлены . |
СК-У2 | В рабочее приложение не включены никакие библиотеки отладки. Это может привести к проблемам с производительностью и безопасностью. | ||
Веб-представления | СК-W1 | СК-6 | Не используйте setAllowUniversalAccessFromFileURLs() для доступа к локальному контенту. Вместо этого используйте WebViewAssetLoader . |
СК-W2 | СК-7 | WebViews не должны использовать addJavaScriptInterface() с ненадежным содержимым. В Android 6.0 и более поздних версиях вместо этого используйте каналы сообщений HTML . | |
Исполнение | СК-Е1 | Приложение не загружает динамически код извне APK приложения. Разработчикам следует использовать пакеты приложений Android , которые включают доставку функций Play и доставку ресурсов Play . С августа 2021 года использование пакетов Android App Bundle станет обязательным для всех новых приложений в магазине Google Play. | |
Криптография | СК-С1 | Приложение использует надежные криптографические алгоритмы, предоставляемые платформой, и генератор случайных чисел . Кроме того, приложение не реализует собственные алгоритмы. |
Гугл игры
Убедитесь, что ваши приложения могут быть опубликованы в Google Play.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Политика | ГП-П1 | GP-все | Приложение строго соблюдает условия Политики в отношении контента для разработчиков Google Play и не предлагает неприемлемый контент, не использует чужую интеллектуальную собственность или бренд и так далее. |
ГП-П2 | ГП-1 | Уровень зрелости приложения устанавливается соответствующим образом в соответствии с Руководством по рейтингу контента . | |
Страница сведений о приложении | ГП-Д1 | ГП-1 ГП-2 | Графическое изображение приложения соответствует рекомендациям, изложенным в этой статье поддержки . Убедись в том, что:
|
ГП-Д2 | ГП-1 | Скриншоты и видео приложения не показывают устройства, отличные от Android, и не ссылаются на них. | |
ГП-Д3 | ГП-1 | Скриншоты и видео приложения не отражают содержание и возможности вашего приложения вводит в заблуждение. | |
Поддержка пользователей | ГП-Х1 | ГП-1 | Распространенные ошибки, о которых сообщают пользователи, на вкладке «Обзоры» на странице Google Play устраняются, если они воспроизводимы и возникают на многих разных устройствах. Если ошибка возникает только на нескольких устройствах, вам все равно следует устранить ее, если эти устройства особенно популярны или новые. |
Настройка тестовой среды
Для настройки тестовой среды для этого контрольного списка мы рекомендуем следующее:
- Ориентирован на тестирование эмуляторов . Android Emulator — отличный способ протестировать ваше приложение под различными версиями Android и разрешениями экрана. Вам следует настроить эмулируемые устройства (AVD) так, чтобы они представляли наиболее распространенные форм-факторы и комбинации аппаратного и программного обеспечения для вашей целевой базы пользователей.
- Аппаратные устройства . Ваша тестовая среда должна включать небольшое количество реальных аппаратных устройств, которые представляют ключевые форм-факторы и комбинации аппаратного и программного обеспечения, которые в настоящее время доступны потребителям. Нет необходимости проводить тестирование на каждом устройстве, представленном на рынке — скорее, вам следует сосредоточиться на небольшом количестве репрезентативных устройств, даже используя одно или два устройства на каждый форм-фактор.
- Лаборатории тестирования устройств . Вы также можете использовать сторонние сервисы, такие как Firebase Test Lab , для тестирования своего приложения на более широком спектре устройств.
- Тестируйте с последней версией Android . Помимо тестирования репрезентативных версий Android для вашей целевой пользовательской базы, вам всегда следует тестировать последнюю версию Android (в настоящее время Android 11). Это гарантирует, что последние изменения в поведении не окажут негативного влияния на работу вашего пользователя.
Более подробные рекомендации по тестированию, включая модульное тестирование, интеграционное тестирование и тестирование пользовательского интерфейса, можно найти в Основах тестирования Android .
Процедуры испытаний
Эти процедуры тестирования помогут вам обнаружить различные типы проблем с качеством вашего приложения. Вы можете комбинировать тесты или интегрировать группы тестов в свои собственные планы тестирования. См. разделы выше для ссылок, которые связывают критерии с этими процедурами испытаний.
Тип | Тест | Описание |
---|---|---|
Основной люкс | CR-0 | Перейдите ко всем частям приложения — ко всем экранам, диалоговым окнам, настройкам и всем пользовательским потокам.
|
CR-1 | На каждом экране приложения нажмите клавишу «Домой» устройства или проведите пальцем вверх при навигации с помощью жестов, а затем перезапустите приложение с экрана «Все приложения». | |
CR-2 | На каждом экране приложения переключитесь на другое запущенное приложение, а затем вернитесь к тестируемому приложению с помощью переключателя приложений «Последние». | |
CR-3 | На каждом экране приложения (и в диалоговых окнах) нажмите кнопку «Назад» или проведите пальцем назад. | |
CR-5 | На каждом экране приложения поверните устройство между альбомной и книжной ориентацией не менее трех раз. | |
CR-6 | Переключитесь на другое приложение, чтобы отправить тестовое приложение в фоновый режим. Перейдите в «Настройки» и проверьте, есть ли в тестовом приложении какие-либо службы, работающие в фоновом режиме. В Android 4.0 и более поздних версиях перейдите на экран приложений и найдите приложение на вкладке «Работающие». | |
CR-7 | Нажмите кнопку питания, чтобы перевести устройство в спящий режим, затем снова нажмите кнопку питания, чтобы разбудить экран. | |
CR-8 | Настройте блокировку экрана на устройстве. Нажмите кнопку питания, чтобы перевести устройство в спящий режим (при этом устройство блокируется). Затем снова нажмите кнопку питания, чтобы вывести экран из режима сна и разблокировать устройство. | |
CR-9 | Запускайте и наблюдайте в панели уведомлений все типы уведомлений, которые может отображать приложение. Разверните уведомления, где это возможно (Android 4.1 и выше), и коснитесь всех доступных действий. | |
CR-10 | Ознакомьтесь с поддержкой других вариантов использования в Doze и App Standby. | |
Установить на SD-карту | СД-1 | Повторите процедуру Core Suite , установив приложение на SD-карту устройства (если приложение поддерживает этот метод установки). Чтобы переместить приложение на SD-карту, вы можете использовать «Настройки» > «Информация о приложении» > «Переместить на SD-карту». |
Производительность и стабильность | СП-1 | Просмотрите файл манифеста Android и создайте конфигурацию, чтобы убедиться, что приложение создано на основе последней доступной версии SDK ( targetSdk и compileSdk ). |
СП-2 | Проверьте файл build.gradle на наличие устаревших зависимостей. | |
СП-3 | Используйте инструмент Android Studio lint для обнаружения использования интерфейса, отличного от SDK. Существуют и другие альтернативные методы тестирования . | |
Мониторинг производительности | ПМ-1 | Повторите Core Suite с включенным профилированием StrictMode . Обратите пристальное внимание на сбор мусора и его влияние на взаимодействие с пользователем. |
Батарея | БА-1 | Повторите Core Suite в циклах сна и ожидания приложения. Обратите пристальное внимание на будильники, таймеры, уведомления, синхронизацию и т. д. Требования и рекомендации см. в разделе «Тестирование с помощью Doze и App Standby» . |
Безопасность | СК-1 | Просмотрите все данные, хранящиеся во внешнем хранилище. |
СК-2 | Узнайте, как обрабатываются данные, загружаемые из внешнего хранилища. | |
СК-3 | Просмотрите всех поставщиков контента, определенных в файле манифеста Android. Убедитесь, что каждый поставщик имеет соответствующий protectionLevel . | |
СК-4 | Просмотрите все разрешения, необходимые вашему приложению, в файле манифеста, во время выполнения и на экране настроек приложения («Настройки» > «Информация о приложении») на устройстве. | |
СК-5 | Проверьте все компоненты приложения, определенные в файле манифеста Android, на предмет соответствующего состояния экспорта. Экспортируемое свойство должно быть задано явно для всех компонентов. | |
СК-6 | Проверьте конфигурацию сетевой безопасности приложения и убедитесь, что ни одна проверка конфигурации не завершилась неудачей. | |
СК-7 | Для каждого WebView перейдите на страницу, для которой требуется JavaScript. | |
СК-8 | В каждом WebView попытайтесь перейти на сайты и контент, которые не загружаются непосредственно вашим приложением. | |
СК-9 | Объявите конфигурацию сетевой безопасности, которая отключает трафик открытого текста , а затем протестируйте приложение. | |
СК-10 | Запустите приложение и задействуйте все основные функции, наблюдая за журналом устройства . Никакая личная информация пользователя не должна регистрироваться. | |
Гугл игры | ГП-1 | Войдите в консоль разработчика Google Play , чтобы просмотреть свой профиль разработчика, описание приложения, снимки экрана, графику функций, рейтинг контента и отзывы пользователей. |
ГП-2 | Загрузите графическое изображение и снимки экрана и уменьшите их, чтобы они соответствовали размерам дисплеев на устройствах и форм-факторах, на которые вы ориентируетесь. | |
ГП-3 | Просмотрите все графические ресурсы, мультимедиа, текст, библиотеки кода и другой контент, упакованный в загружаемый файл приложения или расширения. |
Тестирование с помощью StrictMode
Для тестирования производительности мы рекомендуем включить StrictMode
в вашем приложении и использовать его для перехвата операций, которые могут повлиять на производительность, доступ к сети, чтение/запись файлов и т. д. Ищите потенциально проблемные операции как в основном потоке, так и в других потоках.
Вы можете настроить политику мониторинга для каждого потока с помощью StrictMode.ThreadPolicy.Builder
и включить весь поддерживаемый мониторинг в ThreadPolicy
с помощьюDetectAll detectAll()
.
Обязательно включите визуальное уведомление о нарушениях политики для ThreadPolicy
с помощью penaltyFlashScreen()
.