Как Измерить Показатели Производительности Приложения

Привет, я Оля, QA iOS. Наша команда выпускает обновления для мобильного 2ГИС и следит за тем, чтобы его производительность не падала.

Изначально мы отслеживали это после того, как приложение попало в магазин, что, конечно, было не очень эффективно.

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

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

Для этого теоретически подходили два инструмента — MetricKit и Performance Monitoring. Мы решили рассмотреть их поближе, потому что:

  • MetricKit — продукт Apple, а это означает, что он будет поддерживаться до тех пор, пока существует iOS;
  • Мониторинг производительности — это продукт Firebase от Google. Наша команда имеет опыт использования Firebase Crashlytics, а это значит, что перейти на продукт того же производителя будет легко.



Как измерить показатели производительности приложения

В этой статье я расскажу вам, что это за инструменты — их метрики, отчеты в реальном времени, документация и графическое представление.

И я вам скажу, какой мы выбрали.



МетрикКит



Метрики

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

Также есть пользовательские метрики, которые удобно настроить под приложение.

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

  • причины закрытия приложения в фоновом и переднем плане,
  • время, в течение которого приложение было активно,
  • использование памяти,
  • авария (диагностический отчет).

Батарея:
  • Использование процессора/графического процессора,
  • затраты на отображение приложения,
  • использование отслеживания местоположения,
  • передача данных по сети,
  • состояние сотовой сети,
  • Исключения ЦП (фатальные/нефатальные).

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

Доступ к диску:
  • использование диска,
  • исключения записи на диск.

С помощью пользовательских метрик вы можете отслеживать продолжительность событий, их количество и влияние на производительность.

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

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

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

Мы потратили несколько часов только на этот анализ.

Если автоматизировать измерения этих метрик, то можно быстро сравнить метрики и определить, просела ли у нас производительность или нет. Нас это устраивает. Снимать метрики можно как для сборок, которые уже находятся в бою, так и для отправленных в TestFlight. Отчеты приходят раз в день в виде json-файлов — полезных нагрузок.

Полезные данные выглядят как длинные текстовые фрагменты.

Я показал цветным людям, где собираются группы метрик:

Как измерить показатели производительности приложения

Мы поддерживаем 2ГИС с iOS 12. Обычно сообщения о проблемах с производительностью поступают от пользователей старых версий ОС.

Большую часть метрик в MetricKit можно отслеживать с помощью iOS 13, некоторые метрики можно отслеживать только с помощью iOS 14. Это означает, что MetricKit не решает вопрос отслеживания проблем с производительностью на старых версиях ОС.

Нам это не подходит.

Метрики и события в реальном времени

Отчеты по метрикам приходят один раз в день.

Помимо метрик, MetricKit может предоставлять отчеты о сбоях и сбоях.

Для iOS 13 и 14 они приходят раз в день, а для iOS 15 — как только что-то происходит. То есть о некоторых проблемах 2ГИС мы не узнаем сразу – это плохо.



Документация

Самая подробная информация была представлена на WWDC. Официальная документация является крайне конфиденциальным и не содержит подробностей о реализации и использовании MetricKit. И в Интернете довольно много статей от компаний, имеющих реальный опыт внедрения инструмента.



Графическое представление

Среди недостатков MetricKit, которые касаются не только нашего приложения, хотелось бы отметить следующие:
  1. не обеспечивает графическое представление показателей.

  2. не объединяет и не хранит полезные данные.

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

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

И отследить динамику показателей от релиза к релизу станет невозможно.



Заключение



Как измерить показатели производительности приложения



Мониторинг производительности Firebase



Метрики

Для простоты я буду называть Firebase Performance Monitoring — FPM. FPM имеет несколько групп метрик — метрики жизненного цикла, метрики рендеринга экрана, характеристики сетевых запросов и пользовательские метрики.

Подробнее о каждой группе: Жизненный цикл приложения:

  • время запуска приложения,
  • время работы приложения в переднем/фоновом режиме.

Рендеринг экрана:
  • медленный рендеринг экрана,
  • Зависание экрана.

Характеристики сетевых запросов:
  • время ответа сервера,
  • Запросить размер полезной нагрузки,
  • Размер полезной нагрузки ответа.

Диапазон метрик, фиксируемых FPM, не такой широкий, как у MetricKit. Является ли это недостатком, зависит от того, чем вы планируете управлять в приложении.

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

FPM позволяет собирать данные о показателях производительности в режиме реального времени.

Как независимый инструмент, он не собирает отчеты о сбоях и сбоях; для этого есть отдельный инструмент — Firebase Crashlytics. Для справедливого сравнения с MetricKit стоит это отметить, поскольку реализация одного инструмента из Firebase не подразумевает автоматически реализацию другого.

Данные собираются в трассировки — отчеты с информацией о метриках, снятых за определенный период времени.

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

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



Как измерить показатели производительности приложения

Следы мониторинга производительности Firebase

Документация

Подробный , с пошаговыми инструкциями по настройке метрик.



Графическое представление

В отличие от MetricKit, создатели FPM позаботились о готовом графическом представлении агрегированных характеристик.

Важные показатели можно добавить на панель мониторинга.

Для навигации по отчетам можно использовать фильтры: версия приложения, ОС, регион и другие.



Как измерить показатели производительности приложения

Панель приборов

Как измерить показатели производительности приложения

Раздел задач за последний месяц

Как измерить показатели производительности приложения

Детализация показателей

Как измерить показатели производительности приложения

Детализация сетевых запросов

Заключение



Как измерить показатели производительности приложения



Что мы выбрали

При выборе инструмента нужно отталкиваться от целей снятия метрик.

Если приложение имеет широкий функционал и команда готова потратить силы на организацию хранения, агрегации и отрисовки графических представлений метрик, можно использовать MetricKit. Мы решили, что у нас нет времени и сил допиливать, и забросили инструмент. Если приложение небольшое или ресурсов команды недостаточно, проще обратиться к Firebase Performance Monitoring. Мы так и сделали :)

Как измерить показатели производительности приложения

Сравнение MetricKit и FRM Буду рад прочитать в комментариях о том, как вы выбирали инструменты для тестирования приложений.

Теги: #iOS #qa #testing #Тестирование мобильных приложений #автоматизация тестирования #автоматизация качества #Firebase #metrickit #отчеты о сбоях Firebase #qa mobile

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.