Полезный способ оценить качество приложения — просмотреть рабочие процессы вашего приложения и оценить плавность и безопасность его работы.
Этот контрольный список определяет набор основных критериев качества и связанных с ними тестов, которые помогут вам оценить качество вашего приложения. Некоторые из этих критериев можно легко пропустить, и тесты помогут вам не забыть включить их в свои планы тестирования.
В контрольном списке указано минимальное качество, которому должны соответствовать все приложения. Ваше тестирование, скорее всего, выйдет далеко за рамки описанного здесь.
Каждый элемент контрольного списка качества имеет уникальный идентификатор, который вам может оказаться полезным использовать при общении со своей командой. Вы также можете просмотреть предыдущую версию этих рекомендаций .
Визуальный опыт
Ваше приложение должно обеспечивать стандартный визуальный дизайн Android и шаблоны взаимодействия, где это необходимо, для единообразного и интуитивно понятного взаимодействия с пользователем.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Навигация | ВХ-Н1 | CR-3 | Приложение поддерживает стандартную навигацию с помощью кнопки «Назад» и не использует никаких настраиваемых экранных подсказок «Кнопка «Назад». |
ВХ-Н2 | CR-3 | Приложение поддерживает навигацию жестами для возврата/перехода на главный экран. | |
ВХ-Н3 | CR-1 CR-3 CR-5 | Приложение правильно сохраняет и восстанавливает состояние пользователя или приложения. Приложение сохраняет состояние пользователя или приложения при выходе из переднего плана и предотвращает случайную потерю данных из-за обратной навигации и других изменений состояния. При возвращении на передний план приложение должно восстановить сохраненное состояние и любую ожидающую значительную транзакцию с состоянием. Примеры: изменения редактируемых полей, хода игры, меню, видео и других разделов приложения или игры.
| |
Уведомления | VX-S1 | CR-9 | Уведомления соответствуют рекомендациям по дизайну. В частности:
|
VX-S2 | CR-9 | Для приложений для обмена сообщениями, социальных приложений и разговоров:
| |
Пользовательский интерфейс и графика | ВХ-У1 | CR-5 | Приложение поддерживает альбомную и портретную ориентацию, а также сложенное и развернутое состояние устройства. Ориентации и состояния складки демонстрируют по существу одни и те же функции и действия и сохраняют функциональную четность. |
ВХ-У2 | CR-5 | Приложение заполняет окно приложения в обеих ориентациях и не имеет почтового ящика из-за изменений конфигурации, включая сворачивание и раскладывание устройства. Незначительные почтовые ящики для компенсации небольших отклонений в геометрии экрана допустимы. | |
ВХ-У3 | CR-5 | Приложение правильно обрабатывает быстрые переходы между ориентациями дисплея, а также складыванием и раскладыванием устройства без проблем с отображением на дисплее и без потери состояния. | |
Визуальное качество | ВХ-В1 | CR-все | Приложение отображает графику, текст, изображения и другие элементы пользовательского интерфейса без заметных искажений, размытия или пикселизации.
|
ВХ-В2 | CR-все | Приложение отображает текст и текстовые блоки приемлемым образом для каждого из поддерживаемых приложением языков.
| |
VX-V3 | CR-все | Содержимое приложения и все веб-содержимое, на которое ссылается приложение, поддерживают темную тему . | |
Доступность | ВХ-А1 | CR-все | Сенсорные цели должны иметь размер не менее 48 dp. Узнать больше . |
ВХ-А2 | CR-все | Текст приложения и содержимое переднего плана должны поддерживать достаточно высокий коэффициент цветового контраста с фоном:
Узнайте больше о цвете и контрасте . | |
ВХ-А3 | 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 не отвечает). Используйте предварительный отчет 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, необходимой для соответствия требованиям 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 Store, также должны соответствовать политике пользовательских данных для защиты конфиденциальности пользователей.
Область | ИДЕНТИФИКАТОР | Тесты | Описание |
---|---|---|---|
Разрешения | СК-П1 | СК-4 | Приложение запрашивает только абсолютно минимальное количество разрешений, необходимое для поддержки конкретного варианта использования. Для некоторых разрешений, таких как местоположение, по возможности используйте грубое местоположение вместо точного. |
СК-П2 | Приложение запрашивает разрешение на доступ к конфиденциальным данным (например , SMS, журналу вызовов или местоположению ) или платным услугам (например, номеронабирателю или SMS) только в том случае, если они напрямую связаны с основными вариантами использования приложений. Последствия, связанные с этими разрешениями, должны быть четко раскрыты пользователю. В зависимости от того, как вы используете разрешения, может существовать альтернативный способ реализовать вариант использования вашего приложения, не полагаясь на доступ к конфиденциальной информации. Например, вместо того, чтобы запрашивать разрешения, связанные с контактами пользователя, может быть более целесообразным запрашивать доступ, используя неявное намерение . | ||
СК-П3 | CR-0 | Приложение запрашивает разрешения во время выполнения в контексте, когда запрашивается функциональность, а не заранее во время запуска приложения. | |
СК-П4 | CR-0 | Приложение четко объясняет, почему необходимы определенные разрешения, или следует рекомендуемой процедуре, чтобы объяснить, почему ему нужно разрешение . | |
СК-П5 | CR-0 | Приложение должно плавно ухудшаться , когда пользователи отклоняют или отзывают разрешение. Приложение не должно полностью препятствовать доступу пользователя к приложению. | |
Дата файлы | СК-DF1 | СК-1 | Все конфиденциальные данные хранятся во внутренней памяти приложения . |
СК-ДФ2 | СК-10 | Никакие личные или конфиденциальные данные пользователя не записываются в системный журнал или журнал приложения. | |
СК-ДФ3 | Приложение не использует несбрасываемые идентификаторы оборудования , такие как IMEI, для целей идентификации. | ||
Личность | SC-ID1 | CR-0 | Приложение предоставляет подсказки по автозаполнению учетных данных и другой конфиденциальной информации, такой как данные кредитной карты, физический адрес и номер телефона. |
СК-ИД2 | CR-0 | Интегрируйте Credential Manager для 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, поставщик безопасности инициализируется при запуске приложения . | ||
Веб-представления | СК-W1 | СК-6 | Не используйте setAllowUniversalAccessFromFileURLs() для доступа к локальному контенту. Вместо этого используйте WebViewAssetLoader . |
СК-W2 | СК-7 | WebViews не должны использовать addJavaScriptInterface() с ненадежным содержимым. В Android 6.0 и более поздних версиях вместо этого используйте каналы сообщений HTML . | |
Исполнение | СК-Е1 | Приложение не загружает динамически код извне APK приложения. Разработчикам следует использовать пакеты приложений Android , которые включают доставку функций Play и доставку ресурсов Play . С августа 2021 года использование пакетов Android App Bundle является обязательным для всех новых приложений в Google Play Store. | |
Криптография | СК-С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) так, чтобы они представляли наиболее распространенные форм-факторы и комбинации аппаратного и программного обеспечения для вашей целевой пользовательской базы. Помимо тестирования на телефонах, мы также рекомендуем вам протестировать другие форм-факторы, используя как минимум следующие эмуляторы:
- Складные модели — складной 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» . |
Безопасность | СК-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()
.