Полезный способ оценить качество приложения — это просмотреть рабочие процессы в нем и оценить плавность и безопасность работы с приложением.
Этот контрольный список определяет набор основных критериев качества и связанных с ними тестов, которые помогут вам оценить качество вашего приложения. Некоторые из этих критериев легко пропустить, и тесты помогут вам не забыть включить их в свои планы тестирования.
В контрольном списке указаны минимальные требования к качеству, которым должны соответствовать все приложения. Скорее всего, ваше тестирование выйдет далеко за рамки описанного здесь.
Каждый пункт контрольного списка качества имеет уникальный идентификатор, который может быть полезен при общении с вашей командой. Вы также можете ознакомиться с предыдущей версией этих рекомендаций .
Визуальный опыт
Ваше приложение должно обеспечивать стандартный визуальный дизайн Android и шаблоны взаимодействия там, где это необходимо, для обеспечения последовательного и интуитивно понятного пользовательского опыта.
| Область | ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|---|
| Навигация | VX-N1 | CR-3 | Приложение поддерживает стандартную навигацию с помощью кнопки «Назад» и не использует никаких специальных экранных подсказок «Кнопка «Назад»». |
| VX-N2 | CR-3 | Приложение поддерживает навигацию жестами для возврата/перехода на главный экран. | |
| VX-N3 | CR-1 CR-3 CR-5 | Приложение корректно сохраняет и восстанавливает состояние пользователя или приложения. Приложение сохраняет состояние пользователя или приложения при выходе из активного режима и предотвращает случайную потерю данных из-за возврата в исходное состояние или других изменений состояния. При возвращении на передний план приложение должно восстановить сохранённое состояние и любые важные транзакции с сохранением состояния, которые были выполнены. Примеры включают: изменения в редактируемых полях, ход игры, меню, видео и других разделах приложения или игры.
| |
| Уведомления | VX-S1 | CR-9 | Уведомления соответствуют рекомендациям по дизайну. В частности:
|
| VX-S2 | CR-9 | Для приложений обмена сообщениями, социальных приложений и бесед:
| |
| Пользовательский интерфейс и графика | VX-U1 | CR-5 | Приложение поддерживает альбомную и портретную ориентацию, а также сложенное и развернутое состояния устройства. Ориентации и состояния сгиба по сути демонстрируют одни и те же особенности и действия и сохраняют функциональную четность. |
| VX-U2 | CR-5 | Приложение заполняет окно приложения в обеих ориентациях и не сворачивается в почтовый ящик из-за изменений конфигурации, включая сворачивание и разворачивание устройства. Допустимы незначительные искажения, компенсирующие небольшие изменения в геометрии экрана. | |
| VX-U3 | CR-5 | Приложение корректно обрабатывает быстрые переходы между ориентациями дисплея, а также складывание и раскладывание устройства, не создавая проблем с отображением изображения и не теряя состояния. | |
| Визуальное качество | VX-V1 | CR-все | Приложение отображает графику, текст, изображения и другие элементы пользовательского интерфейса без заметных искажений, размытости или пикселизации.
|
| VX-V2 | CR-все | Приложение отображает текст и текстовые блоки приемлемым образом для каждого из поддерживаемых приложением языков.
| |
| VX-V3 | CR-все | Содержимое приложения и весь веб-контент, на который ссылается приложение, поддерживают темную тему . | |
| Доступность | VX-A1 | CR-все | Размер сенсорных объектов должен быть не менее 48 dp. Подробнее . |
| VX-A2 | CR-все | Текст приложения и содержимое переднего плана должны иметь достаточно высокий цветовой контраст с фоном:
Узнайте больше о цвете и контрасте . | |
| VX-A3 | CR-все | Опишите каждый элемент пользовательского интерфейса , за исключением TextView , с помощью contentDescription . |
Функциональность
Ваше приложение должно реализовывать ожидаемое функциональное поведение.
| Область | ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|---|
| Аудио | ФН-А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 | Приложение предотвращает запуск излишне длительных фоновых служб. Для обеспечения бесперебойной работы устройства пользователя система накладывает различные ограничения на фоновые службы . Нецелевое использование фоновых служб:
Узнайте, как выбрать правильное решение для вашей работы . |
Производительность и стабильность
Ваше приложение должно обеспечивать ожидаемую пользователями производительность, стабильность, совместимость и скорость реагирования.
| Область | ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|---|
| Стабильность | ПС-С1 | CR-все СД-1 | Приложение не аварийно завершает работу и не блокирует поток пользовательского интерфейса , вызывая ошибки ANR (Android Not Responding). Используйте отчёт Google Play о предзапуске для выявления потенциальных проблем со стабильностью. После развёртывания обратите внимание на страницу Android Vitals в консоли разработчика Google Play. |
| Производительность | ПС-П1 | CR-все СД-1 | Приложение загружается быстро или выводит на экран обратную связь для пользователя (индикатор хода выполнения или подобный сигнал), если загрузка приложения занимает больше двух секунд. |
| ПС-П2 | CR-все СД-1 | Приложения должны рендерить кадры каждые 16 мс для достижения частоты 60 кадров в секунду. Разработчики могут использовать параметр рендеринга HWUI Profile при тестировании. В случае возникновения проблем доступны инструменты для диагностики медленного рендеринга . | |
| ПС-П3 | ПМ-1 | При включённом режиме StrictMode (см. раздел «Тестирование в режиме StrictMode » ниже) при тестировании приложения не отображаются красные вспышки (предупреждения о производительности в режиме StrictMode). Любые красные вспышки указывают на проблемы с хранилищем, доступом к сети или утечками памяти. | |
| SDK | ПС-Т1 | CR-0 | Приложение работает на последней общедоступной версии платформы Android, не вызывая сбоев и не оказывая существенного влияния на основные функции. |
| ПС-Т2 | СП-1 | Приложение ориентируется на последнюю версию Android SDK , необходимую для соответствия требованиям Google Play, устанавливая значение targetSdk . | |
| ПС-Т3 | СП-1 | Приложение создается с использованием последней версии Android SDK путем установки значения compileSdk . | |
| ПС-Т4 | СП-2 СП-3 | Все используемые SDK Google или сторонних разработчиков должны быть актуальны . Любые улучшения этих SDK, такие как повышение стабильности, совместимости или безопасности, должны быть своевременно доступны пользователям. Для Google SDK рассмотрите возможность использования SDK на базе сервисов Google Play , если они доступны. Эти SDK обратно совместимы, получают автоматические обновления, уменьшают размер пакета приложения и эффективно используют ресурсы устройства. Разработчик несет ответственность за всю кодовую базу приложения, включая любые используемые сторонние SDK. | |
| ПС-Т5 | СП-3 | Приложение не использует интерфейсы, не входящие в SDK . | |
| ПС-Т6 | СП-2 | В производственном приложении отсутствуют отладочные библиотеки. Это может привести к проблемам как с производительностью, так и с безопасностью. | |
| Аккумулятор | ПС-Б1 | БА-1 | Приложение корректно поддерживает функции управления питанием, представленные в Android 6.0 (Doze и App Standby). В случае нарушения основных функций управления питанием, только соответствующие приложения могут запросить исключение. См. раздел «Поддержка» для других вариантов использования Doze и App Standby. В процессе разработки разработчики могут тестировать поведение приложения в режиме ожидания и дремоты с помощью этих команд ADB . Что касается использования батареи, разработчики могут использовать средство профилирования энергопотребления Android Studio или инструмент Battery Historian в сочетании с запланированной фоновой работой для диагностики непредвиденного использования батареи. |
Конфиденциальность и безопасность
Ваше приложение должно безопасно обрабатывать пользовательские данные и личную информацию, имея соответствующий уровень разрешений.
В дополнение к этому контрольному списку приложения, опубликованные в магазине Google Play, также должны соответствовать политикам в отношении пользовательских данных для защиты конфиденциальности пользователей.
| Область | ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|---|
| Разрешения | СК-П1 | СК-4 | Приложение запрашивает только минимально необходимое количество разрешений для поддержки текущего сценария использования. Для некоторых разрешений, таких как определение местоположения, по возможности используйте грубое определение местоположения вместо точного. |
| СК-П2 | Приложение запрашивает разрешение на доступ к конфиденциальным данным (например , SMS, журналу вызовов или местоположению ) или платным услугам (например, номеронабирателю или SMS) только в случаях, когда это напрямую связано с основными сценариями использования приложения. Последствия, связанные с этими разрешениями, должны быть четко раскрыты пользователю. В зависимости от того, как вы используете разрешения, может существовать альтернативный способ реализации сценария использования вашего приложения, не полагаясь на доступ к конфиденциальной информации. Например, вместо запроса разрешений, связанных с контактами пользователя, может быть более целесообразно запросить доступ с помощью неявного намерения . | ||
| СК-П3 | CR-0 | Приложение запрашивает разрешения на выполнение в контексте, когда запрашивается функциональность, а не заранее во время запуска приложения. | |
| СК-П4 | CR-0 | Приложение четко объясняет, почему необходимы определенные разрешения, или следует рекомендуемому процессу, чтобы объяснить, почему ему нужно разрешение . | |
| СК-П5 | CR-0 | Приложение должно корректно снижать производительность, когда пользователь отклоняет или отзывает разрешение. Приложение не должно полностью блокировать пользователю доступ к приложению. | |
| Данные и файлы | СК-ДФ1 | СК-1 | Все конфиденциальные данные хранятся во внутренней памяти приложения . |
| СК-ДФ2 | СК-10 | Никакие личные или конфиденциальные данные пользователя не регистрируются в системном журнале или журнале конкретного приложения. | |
| СК-ДФ3 | Приложение не использует для идентификации какие-либо несбрасываемые идентификаторы оборудования , такие как IMEI. | ||
| Личность | SC-ID1 | CR-0 | Приложение предоставляет подсказки для автоматического заполнения учетных данных и другой конфиденциальной информации, такой как данные кредитной карты, физический адрес и номер телефона. |
| SC-ID2 | CR-0 | Интегрируйте диспетчер учетных данных для Android, чтобы обеспечить удобный процесс входа в систему, объединяющий поддержку ключей доступа, федеративной идентификации и традиционных паролей. | |
| SC-ID3 | CR-0 | Приложение поддерживает биометрическую аутентификацию для защиты финансовых транзакций или конфиденциальной информации, например важных пользовательских документов. | |
| Компоненты приложения | СК-АС1 | СК-5 | Приложение явно устанавливает атрибут Экспортируются только те компоненты приложения, которые обмениваются данными с другими приложениями , или компоненты, которые должны вызываться другими приложениями . |
| СК-АС2 | CR-0 СК-4 | Все намерения и трансляции следуют лучшим практикам:
| |
| SC-AC3 | СК-3 | Все компоненты, которые обмениваются контентом между вашими приложениями, используют android:protectionLevel="signature" для пользовательских разрешений . Это включает в себя действия , службы , приёмники вещания и, в особенности, поставщики контента .Приложения не должны полагаться на доступ к списку установленных пакетов. Этот доступ ограничен, начиная с Android 11. | |
| Нетворкинг | СК-Н1 | СК-9 | Весь сетевой трафик отправляется по протоколу SSL . |
| СК-Н2 | СК-6 | Приложение объявляет конфигурацию безопасности сети . | |
| СК-Н3 | Если приложение использует сервисы Google Play, поставщик безопасности инициализируется при запуске приложения . | ||
| WebViews | СК-W1 | СК-6 | Не используйте setAllowUniversalAccessFromFileURLs() для доступа к локальному контенту. Вместо этого используйте WebViewAssetLoader . |
| СК-W2 | СК-7 | WebViews не должны использовать addJavaScriptInterface() с ненадежным контентом. На устройствах с Android 6.0 и выше вместо этого используйте каналы сообщений HTML . | |
| Исполнение | СК-Е1 | Приложение не загружает динамически код извне APK-файла. Разработчикам следует использовать пакеты Android App Bundles , включающие Play Feature Delivery и Play Asset Delivery . С августа 2021 года использование Android App Bundles станет обязательным для всех новых приложений в Google Play Store. | |
| Криптография | СК-С1 | Приложение использует надежные криптографические алгоритмы, предоставляемые платформой, и генератор случайных чисел . Кроме того, приложение не реализует собственные алгоритмы. |
Google Play
Убедитесь, что ваши приложения могут быть опубликованы в Google Play.
| Область | ИДЕНТИФИКАТОР | Тесты | Описание |
|---|---|---|---|
| Политики | ГП-П1 | Врач общей практики (GP-all) | Приложение строго соответствует условиям Политики разработчика Google Play в отношении контента и не предлагает нежелательного контента, не использует интеллектуальную собственность или бренды других лиц и т. д. |
| ГП-П2 | ГП-1 | Уровень зрелости приложения устанавливается соответствующим образом на основе Руководства по рейтингу контента . | |
| Страница сведений о приложении | ГП-Д1 | ГП-1 ГП-2 | Изображение приложения соответствует рекомендациям, изложенным в этой статье поддержки . Убедитесь, что:
|
| ГП-Д2 | ГП-1 | Скриншоты и видео приложения не показывают и не ссылаются на устройства, отличные от Android. | |
| ГП-Д3 | ГП-1 | Скриншоты или видео приложения не должны вводить в заблуждение относительно содержания и опыта использования вашего приложения. | |
| Поддержка пользователей | ГП-X1 | ГП-1 | Распространённые ошибки, о которых сообщают пользователи на вкладке «Обзоры» на странице Google Play, устраняются, если они воспроизводятся и возникают на разных устройствах. Даже если ошибка возникает только на нескольких устройствах, её всё равно следует устранить, если эти устройства особенно популярны или новы. |
Настройка тестовой среды
Для создания тестовой среды для этого контрольного списка мы рекомендуем следующее:
- Ориентирован на тестирование на эмуляторах . Android Emulator — отличный способ протестировать ваше приложение на разных версиях Android и разрешениях экрана. Вам следует настроить эмулируемые устройства (AVD) для представления наиболее распространённых форм-факторов и комбинаций аппаратного и программного обеспечения для вашей целевой аудитории. Помимо тестирования на телефонах, мы также рекомендуем тестировать другие форм-факторы, используя как минимум следующие эмуляторы:
- Складные устройства — 7,6-дюймовые складные устройства с внешним дисплеем (они перечислены в списке телефонов в AVD Manager).
- Планшет - Pixel C 9,94” (2560 x 1800 пикселей).
- Для тестирования уведомлений мобильного приложения выполните сопряжение мобильного устройства/эмулятора с эмулятором Wear OS — Wear OS Round 1.84”.
- Аппаратные устройства . Ваша тестовая среда должна включать небольшое количество реальных устройств, представляющих основные форм-факторы и аппаратно-программные сочетания, доступные потребителям в настоящее время. Необязательно проводить тестирование на каждом устройстве, представленном на рынке, — вместо этого следует сосредоточиться на небольшом количестве репрезентативных устройств, например, используя одно или два устройства на каждый форм-фактор.
- Лаборатории тестирования устройств . Вы также можете использовать сторонние сервисы, такие как Firebase Test Lab , для тестирования своего приложения на более широком спектре устройств.
- Тестирование с использованием последней версии Android . Помимо тестирования репрезентативных версий Android для вашей целевой аудитории, всегда следует проводить тестирование с использованием последней версии Android (в настоящее время это Android 14). Это гарантирует, что последние изменения в поведении не окажут негативного влияния на пользовательский опыт.
Более подробные рекомендации по тестированию, включая модульное тестирование, интеграционное тестирование и тестирование пользовательского интерфейса, см. в разделе « Основы тестирования 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. Обратите особое внимание на будильники, таймеры, уведомления, синхронизацию и т. д. Требования и рекомендации см. в разделе «Тестирование с Doze и App Standby» . |
| Безопасность | СК-1 | Просмотрите все данные, хранящиеся во внешнем хранилище. |
| СК-2 | Проверьте, как обрабатываются данные, загружаемые из внешнего хранилища. | |
| СК-3 | Проверьте всех поставщиков контента, указанных в файле манифеста Android. Убедитесь, что у каждого поставщика есть соответствующий protectionLevel . | |
| СК-4 | Проверьте все разрешения, требуемые вашему приложению, в файле манифеста, во время выполнения и на экране настроек приложения (Настройки > Информация о приложении) на устройстве. | |
| СК-5 | Проверьте все компоненты приложения, определённые в файле манифеста Android, на наличие соответствующего экспортируемого состояния. Экспортируемое свойство должно быть задано явно для всех компонентов. | |
| СК-6 | Проверьте конфигурацию сетевой безопасности приложения, убедившись, что ни одна из проверок конфигурации не дала сбоев. | |
| СК-7 | Для каждого WebView перейдите на страницу, требующую JavaScript. | |
| СК-8 | В каждом WebView попытайтесь перейти на сайты и контент, которые не загружаются напрямую вашим приложением. | |
| СК-9 | Объявите конфигурацию безопасности сети, которая отключает трафик открытого текста , затем протестируйте приложение. | |
| СК-10 | Запустите приложение и проверьте все основные функции, одновременно наблюдая за журналом устройства . Никакая личная информация пользователя не должна регистрироваться. | |
| Google Play | ГП-1 | Войдите в консоль разработчика Google Play , чтобы просмотреть свой профиль разработчика, описание приложения, снимки экрана, графические элементы, рейтинг контента и отзывы пользователей. |
| ГП-2 | Загрузите графические элементы и снимки экрана и уменьшите их масштаб в соответствии с размерами дисплеев и форм-факторами устройств, на которые вы ориентируетесь. | |
| ГП-3 | Просмотрите все графические ресурсы, медиафайлы, текст, библиотеки кода и другой контент, упакованный в загружаемый файл приложения или расширения. |
Тестирование с использованием StrictMode
Для тестирования производительности мы рекомендуем включить StrictMode в вашем приложении и использовать его для отслеживания операций, которые могут повлиять на производительность, сетевой доступ, чтение/запись файлов и т. д. Ищите потенциально проблемные операции как в основном потоке, так и в других потоках.
Вы можете настроить политику мониторинга для каждого потока с помощью StrictMode.ThreadPolicy.Builder и включить все поддерживаемые функции мониторинга в ThreadPolicy с помощью detectAll() .
Обязательно включите визуальное уведомление о нарушениях политики ThreadPolicy с помощью penaltyFlashScreen() .