Привет, я Оля, 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, которые касаются не только нашего приложения, хотелось бы отметить следующие:- не обеспечивает графическое представление показателей.
- не объединяет и не хранит полезные данные.
Без графиков и таблиц вы не получите четкого представления о том, что происходит в бою.
И отследить динамику показателей от релиза к релизу станет невозможно.
Заключение
Мониторинг производительности Firebase
Метрики
Для простоты я буду называть Firebase Performance Monitoring — FPM. FPM имеет несколько групп метрик — метрики жизненного цикла, метрики рендеринга экрана, характеристики сетевых запросов и пользовательские метрики.Подробнее о каждой группе: Жизненный цикл приложения:
- время запуска приложения,
- время работы приложения в переднем/фоновом режиме.
- медленный рендеринг экрана,
- Зависание экрана.
- время ответа сервера,
- Запросить размер полезной нагрузки,
- Размер полезной нагрузки ответа.
Поскольку оба инструмента предоставляют возможность добавлять собственные метрики, FPM может быть вполне достаточно.
FPM позволяет собирать данные о показателях производительности в режиме реального времени.
Как независимый инструмент, он не собирает отчеты о сбоях и сбоях; для этого есть отдельный инструмент — Firebase Crashlytics. Для справедливого сравнения с MetricKit стоит это отметить, поскольку реализация одного инструмента из Firebase не подразумевает автоматически реализацию другого.
Данные собираются в трассировки — отчеты с информацией о метриках, снятых за определенный период времени.
Метрики можно получить не только из сборок на стадии бета и публичных релизов, но и на стадии локальной разработки.
FPM можно использовать для сбора метрик как с реального устройства, так и с симулятора.
Следы мониторинга производительности Firebase
Документация
Подробный , с пошаговыми инструкциями по настройке метрик.
Графическое представление
В отличие от MetricKit, создатели FPM позаботились о готовом графическом представлении агрегированных характеристик.Важные показатели можно добавить на панель мониторинга.
Для навигации по отчетам можно использовать фильтры: версия приложения, ОС, регион и другие.
Панель приборов
Раздел задач за последний месяц
Детализация показателей
Детализация сетевых запросов
Заключение
Что мы выбрали
При выборе инструмента нужно отталкиваться от целей снятия метрик.
Если приложение имеет широкий функционал и команда готова потратить силы на организацию хранения, агрегации и отрисовки графических представлений метрик, можно использовать MetricKit. Мы решили, что у нас нет времени и сил допиливать, и забросили инструмент. Если приложение небольшое или ресурсов команды недостаточно, проще обратиться к Firebase Performance Monitoring. Мы так и сделали :)
Сравнение MetricKit и FRM Буду рад прочитать в комментариях о том, как вы выбирали инструменты для тестирования приложений.
Теги: #iOS #qa #testing #Тестирование мобильных приложений #автоматизация тестирования #автоматизация качества #Firebase #metrickit #отчеты о сбоях Firebase #qa mobile
-
Вам Нужна Информация Об Обратной Ссылке?
19 Oct, 24 -
Javascript — Полезные Материалы
19 Oct, 24 -
360 Дней Программирования
19 Oct, 24