Обработка ошибок, контент, аналитика: что проверить перед запуском мобильного приложения

Список от руководителя проектов компании-разработчика MobileUp Олега Широкова.

Несколько месяцев вы с разработчиками трудились над созданием приложения. Настало время его выпускать. Все фичи готовы и работают, как задумано.

Но всё же есть вероятность, что в процессе был упущен какой-нибудь важный момент. Поэтому мы собрали список распространённых ошибок, которые нужно обязательно проверить перед релизом, даже если вас убеждают, что всё нормально.

Материал поможет продакт-менеджерам и собственникам бизнеса на клиентской стороне убедиться в том, что их приложение действительно готово к релизу и не нуждается в срочных доработках.

Обработка ошибок и особых случаев

Нужно проверить, как приложение ведёт себя в проблемных ситуациях. Детально это изучают тестировщики, поэтому здесь речь идет о быстром smoke-тесте самых популярных кейсов.

1. Проблемы с геолокацией

Если приложение использует геолокацию, то нужно проверить, как оно ведёт себя в типичных случаях.

Первая ситуация: пользователь запретил приложению доступ к геолокации

Как должно быть: показать пользователю сообщение и предложить перейти в настройки, чтобы разрешить доступ.

Как проверить: в настройках запретить приложению доступ к геоданным и запустить приложение.

iOS-приложение Maps.me показывает детальную инструкцию по включению геолокации. iOS-приложение «Яндекс.Карты» вообще ничего вам не сообщит, пока вы не нажмете кнопку определения местоположения.
iOS-приложение Maps.me показывает детальную инструкцию по включению геолокации. iOS-приложение «Яндекс.Карты» вообще ничего вам не сообщит, пока вы не нажмете кнопку определения местоположения.

Вторая ситуация: приложению не удаётся быстро определить координаты пользователя. Например, если он находится в помещении или выключил Wi-Fi и мобильный интернет.

Как должно быть: показать последнее определённое местоположение пользователя, а если его нет — показать какую-то точку по умолчанию или заглушку, но не карту в море.

Как проверять: включить авиарежим и запустить приложение.

Приложения Google Maps, «Яндекс.Карты», Maps.me (iOS-версии) показывают последнее определенное местоположение. Android-приложение Waze показывает пользователю карту в море.
Приложения Google Maps, «Яндекс.Карты», Maps.me (iOS-версии) показывают последнее определенное местоположение. Android-приложение Waze показывает пользователю карту в море.

2.Проблемы с интернетом

Первая ситуация: пользователь совершает действие, для которого нужен доступ к интернету. Например, нажимает на кнопку «Загрузить». А интернета в этот момент нет.

Как должно быть: пользователь остаётся на том же экране и видит сообщение об отсутствии интернета на понятном человеческом языке.

Как проверить: запустить приложение, выключить интернет, нажать на какую-нибудь кнопку действия.

При попытке найти ближайшие велостанции iOS-приложение «Велогород» подсказывает, что доступа к интернету нет. В iOS-версии TaxFree4U при тапе на кнопку «Восстановить» ничего не происходит.
При попытке найти ближайшие велостанции iOS-приложение «Велогород» подсказывает, что доступа к интернету нет. В iOS-версии TaxFree4U при тапе на кнопку «Восстановить» ничего не происходит.

Вторая ситуация: пользователь хочет перейти в другой раздел приложения, например, из бокового меню, а доступа к интернету нет.

Как должно быть: приложение загрузит раздел в том состоянии, в котором пользователь покинул в последний раз. Пользователь увидит сообщение об отсутствии интернета на понятном человеческом языке.

Как проверить: запустить приложение, зайти в один из разделов, потом перейти в другой, отключить интернет, вернуться в предыдущий раздел.

iOS-приложение Telegram оставляет уже загруженные сообщения всегда доступными. В iOS-приложении Avito переписка загружается каждый раз по новой, даже если мы были на этом экране два нажатия назад.
iOS-приложение Telegram оставляет уже загруженные сообщения всегда доступными. В iOS-приложении Avito переписка загружается каждый раз по новой, даже если мы были на этом экране два нажатия назад.

Третья ситуация: интернет есть, но нестабильный — и он пропал в процессе загрузки экрана.

Как должно быть: пользователь увидит не пустой экран, а экран-заглушку с грустной иконкой и сообщением об отсутствии интернета. Если часть данных уже успела загрузиться, приложение оставит их на экране и покажет сообщение о том, что есть проблемы с интернетом.

Как проверить: запустить приложение, зайти в один из разделов, потом перейти в другой раздел, для которого нужно загрузить много данных с сервера, и в процессе загрузки отключить интернет.

iOS-приложение «ВКонтакте» при разрыве связи с интернетом оставляет ленту в том состоянии, в котором успело её загрузить. iOS-версия HeadHunter при разрыве соединения вместо уже найденных и показанных на экране вакансий раньше показывала заглушку. Достаточно было немного поскроллить экран с результатами поиска.
iOS-приложение «ВКонтакте» при разрыве связи с интернетом оставляет ленту в том состоянии, в котором успело её загрузить. iOS-версия HeadHunter при разрыве соединения вместо уже найденных и показанных на экране вакансий раньше показывала заглушку. Достаточно было немного поскроллить экран с результатами поиска.

Четвёртая ситуация: при открытии экрана не было интернета, он появился уже после.

Обработка такой ситуации нужна не в каждом приложении и не на каждом экране. Но она очень актуальна для чатов, соцсетей и приложений, работающих с картой.

Как должно быть: приложение периодически проверяет, не появился ли интернет снова. Если появился — загружает нужные данные автоматически без дополнительных действий со стороны пользователя.

Как проверить: запустить приложение, включить авиарежим, выключить авиарежим.

iOS-приложение Uber при появлении интернета автоматически возобновляет загрузку данных. iOS-версия «Яндекс.Такси» ждёт, пока пользователь сдвинет карту.
iOS-приложение Uber при появлении интернета автоматически возобновляет загрузку данных. iOS-версия «Яндекс.Такси» ждёт, пока пользователь сдвинет карту.

3. Проблемы с сервером

Сервер может возвращать различные виды ошибок. При этом пользователь не должен видеть непонятные сообщения вроде «401 Token is invalid» или неопределенное «Internal server error». Нужно объяснить ему, что делать: попробовать совершить действие ещё раз через некоторое время или обратиться в службу технической поддержки.

Логика и сценарий проверки здесь такие же, как и при проблемах с интернетом. Только вместо отключения интернета нужно попросить серверного разработчика отдавать приложению различные ошибки.

Во всех случаях должно отображаться сообщение на понятном языке или экран-заглушка.

Android-приложение Gusli в случае проблем с сервером показывает понятное сообщение об ошибке. Android-приложение Facebook после обновления одной из версий не давало авторизоваться в системе. При этом появлялось непонятное для простого пользователя сообщение.
Android-приложение Gusli в случае проблем с сервером показывает понятное сообщение об ошибке. Android-приложение Facebook после обновления одной из версий не давало авторизоваться в системе. При этом появлялось непонятное для простого пользователя сообщение.

Проработка контента

Любой грамотный дизайнер или разработчик скажет вам, что текст на экране так же важен, как удобный интерфейс и отсутствие багов. Пользователи часто не могут разобраться с непонятными пояснениями и названиями кнопок. А конкурентов и многочисленных «диванных» экспертов знатно повеселят найденные орфографические ошибки.

Поэтому обязательно нужно заглянуть на каждый экран приложения и проверить тексты на внятность и орфографические ошибки. Для ускорения работы можно попросить разработчиков сделать скриншоты всех экранов и состояний через специальный сервис. Например, Fastlane Snapshot.

Названия кнопок

В продуманных приложениях названия кнопок соответствуют тому, что произойдёт при их нажатии, и побуждают к действию. Например: «Выбрать» и «Подтвердить» вместо «ОК», «Отказаться» вместо «Отмена», «Найти мастера» вместо «Поиск мастеров».

В iOS-приложении DMV Genie заказчик уделил много времени всем текстам и названиям кнопок, чтобы всё было максимально понятно для пользователя. В iOS-приложении Profi.ru кнопка «Заказать» в «Избранном» не подходит по смыслу. При нажатии на неё открывается форма для отправки сообщения специалистам. Заказ при этом не оформляется. Здесь больше подойдёт кнопка «Оставить заявку».
В iOS-приложении DMV Genie заказчик уделил много времени всем текстам и названиям кнопок, чтобы всё было максимально понятно для пользователя. В iOS-приложении Profi.ru кнопка «Заказать» в «Избранном» не подходит по смыслу. При нажатии на неё открывается форма для отправки сообщения специалистам. Заказ при этом не оформляется. Здесь больше подойдёт кнопка «Оставить заявку».

Сообщения и диалоги

В разделе с проблемами мы говорили, что сообщения об ошибках должны быть написаны на понятном каждому человеку языке. На самом деле, это относится ко всем текстам в приложении.

iOS-приложение «Эриус» просто объясняет, что нужно сделать пользователю. А инструкция по оплате в iOS-приложении «Метро Москвы» написана сложным канцелярским языком, в котором тяжело разобраться.
iOS-приложение «Эриус» просто объясняет, что нужно сделать пользователю. А инструкция по оплате в iOS-приложении «Метро Москвы» написана сложным канцелярским языком, в котором тяжело разобраться.

Подтверждения для важных действий

Когда пользователь совершает критичные действия, которые нельзя вернуть назад или которые могут доставить ему неудобства, нужно обязательно показывать диалоги-подтверждения. Примеры таких действий: выход из учётной записи, удаление контента, отмена заказа и так далее.

iOS-приложение «ВКонтакте» при выходе из учётной записи запрашивает подтверждение. iOS-приложение PlayStation разлогинивает сразу.
iOS-приложение «ВКонтакте» при выходе из учётной записи запрашивает подтверждение. iOS-приложение PlayStation разлогинивает сразу.

Заглушки

Когда пользователь только установил приложение, в некоторых разделах у него будет пусто, например, в списке заказов. Чтобы эти разделы не были пустыми и грустными, в них размещают специальные заглушки с картинкой и пояснением, как заполнить этот раздел.

В продуманном приложении помимо текста будет кнопка. Например, «Создать первый заказ».

iOS-версия WhatsApp вместо пустого экрана показывает полноценную инструкцию, как добавить сообщение в избранные. Раздел «Избранное» в iOS-приложении Visit Petersburg показывает пустой экран.
iOS-версия WhatsApp вместо пустого экрана показывает полноценную инструкцию, как добавить сообщение в избранные. Раздел «Избранное» в iOS-приложении Visit Petersburg показывает пустой экран.

Связь с техподдержкой

В продуманных приложениях на видном месте (например, в боковом меню или в профиле) есть контакты технической поддержки. Это позволяет уменьшить количество гневных отзывов в App Store и Google Play.

В iOS-версии Aladdin телефон и email техподдержки расположены на видном месте. А в iOS-приложении iTunesConnect есть только ссылка на веб-страницу с FAQ, при переходе на которую возникает ошибка: «Page not found».
В iOS-версии Aladdin телефон и email техподдержки расположены на видном месте. А в iOS-приложении iTunesConnect есть только ссылка на веб-страницу с FAQ, при переходе на которую возникает ошибка: «Page not found».

Аналитика

Перед релизом в приложения обычно интегрируют один или несколько сервисов по сбору аналитики: Google Analytics, Mixpanel, Fabric.io, Flurry, Appsee. Собранные данные можно удобно просматривать в веб-интерфейсе.

Если это ваше первое мобильное приложение, то вы, скорее всего, не будете детально знать, какие действия нужно отслеживать. Но есть минимальный набор, который точно нужно настроить.

Крэшлог

Чтобы отслеживать, как часто приложение «падает» и у какого процента пользователей, настраивают сбор крэшей. Кроме того, они помогают разработчикам быстрее разобраться с причиной падения.

Статистика самых распространенных крэшей в Crashlytics для приложения DMV Genie
Статистика самых распространенных крэшей в Crashlytics для приложения DMV Genie

Базовые показатели аналитики

Часть этой информации можно посмотреть в iTunesConnect или Google Developer Console и без интеграции отдельного сервиса. Полный набор: количество установок, количество активных пользователей, среднее время, проводимое в приложении и прочее, — доступен только в специализированных сервисах аналитики.

Эта информация даст понять, востребовано ли ваше приложение и помог ли бюджет на продвижение.

Главный экран в Google Analytics
Главный экран в Google Analytics

Просмотры экранов

Так вы сможете узнать, в каких разделах приложения пользователи проводят больше всего времени. Например, если у вас есть важный раздел с акциями, но пользователи туда не заходят, то, возможно, интерфейс приложения нужно доработать.

Раздел статистики просмотров экранов в Google Analytics
Раздел статистики просмотров экранов в Google Analytics

Ключевые бизнес-показатели

Если в приложении пользователи что-то заказывают или покупают, смотреть количество этих действий и считать конверсию удобно в аналитике. Для этого нужно настроить специальные «кастомные события». В приложении «Туту ЖД» список таких событий занимает четыре полных листа А4.

Если у вас не такой масштабный проект, то вам будет достаточно одного-трёх событий. Например, «Заказ оплачен» или «Лайк новости».

Раздел статистики по событиям в Google Analytics для приложения Aerostat iOS
Раздел статистики по событиям в Google Analytics для приложения Aerostat iOS

Технические моменты

На ранних этапах разработчик обычно настраивает взаимодействие с внешними сервисами через тестовые аккаунты. Например:

  • отправку тестовых сборок (HockeyApp, TestFlight и так далее);
  • крэшлог и сбор аналитики (Crashlytics, Google Analytics, Firebase и так далее);
  • карты (Google Maps, «Яндекс.Карты», OSM и так далее);
  • push-уведомления (Firebase и другие).

К моменту релиза приложения все эти сервисы должны быть переведены на аккаунты заказчика. Это может показаться очевидным, но мы не раз сталкивались с ситуациями, когда это не было сделано. Также после перевода всех сервисов на аккаунты заказчика нужно проверить, что они работают.

99
8 комментариев

Мне кажется всю статью нужно заменить на один совет:

Проверьте, что вы наняли квалифицированного специалиста по тестированию

3

В iOS-приложении Profi.ru кнопка «Заказать» в «Избранном» не подходит по смыслу. При нажатии на неё открывается форма для отправки сообщения специалистам. Заказ при этом не оформляется.

Открывается форма для отправки сообщения - это утверждение не совсем верно. Открывается то, что в e-commerce называется корзиной: пользователю перед заказом нужно обозреть, что он собрался заказать. Сразу следом - подтверждение заказа.

Так что мы вас понимаем, но пример не самый удачный. ;-)

Когда рассматривается удобство интерфейса, то общих принципов достаточно не всегда. Что если метрики сильно падают от смены текста на кнопке? Что делать?
Мы тексты на СТА - тестируем АБ-тестами регулярно. Результаты часто контринтуитивные (детали сказать не можем). :)

Правильные решения находятся в точке баланса метрик и создания верных ожиданий у пользователя.

1

Анастасия, спасибо за пояснение.

Примеры в материале подобраны так, чтобы ими было легко пользоваться для воспроизведения конкретной ситуации. И в этом контексте множество пользователей сочтет такое название кнопки странным.

результаты АБ-тестов часто контринтуитивныеВ этом и проблема - разработчики пытаются подобрать наиболее правильный вариант с точки зрения логики, но бывает так, что для максимальной конверсии нужен не он.

Круто было бы почитать побольше про AB-тесты в приложении PROFI.RU.

1

Комментарий недоступен

1

Во многих приложениях переворот тупо лочат в один вариант. Причины
1. Дизайн и отладка под переворот - это дополнительный кусок расходов.
2. Дизайн оптимален только под одной ориентацией, в другой он будет костылен.
3. Дизайн и есть суть приложения - именно по этой причине практически все игры лочат намертво ориентацию.

+ Обработку IAP еще в реж. sanbox проверить.