1. Введение
Недавно встала задачка периодически проверять, все ли события в мобильном приложении работают корректно, передаются ли в AppMetrica.
Подробности интеграции я опущу, имеется в виду, что она уже есть в МП.
Для проверки нашел два варианта:
- через web интерфейс
- через API
Если одно-два события можно посмотреть на web интерфейсе, то, когда их десятки и сотни, без API уже не обойтись.
На всякий случай поясню, что можно конечно же сделать свой бэк, и будет всё работать быстро и надежно, но это дорого в плане разработки и поддержки в дальнейшем, поэтому в этой статье постараюсь описать, как можно построить такую систему минимальными усилиями и с минимальным кодированием.
2. Настройка Environments
Нам потребуются поля с изменяемыми данными, которые будут использоваться в нашем GET запросе. Для текущей задачки нам потребуются поля:
FirstData
LastData
OperationSystem
event
MinUsers
Params
Вот как это выглядит в Postman:
![image](https://i.postimg.cc/G35pjzqV/postman-2.png)
3. Настройка Collections
Теперь создадим Коллекцию с GET запросом и тестом.
![](https://habrastorage.org/webt/hu/pf/_c/hupf_cmeidifenfanmldelmxgjs.png)
3.1. Получение ссылки из AppMetrica
3.1.1. Настраиваем фильтр по дате события. Обычно выбираю вчерашнюю, т.к. метрика запросов за день полностью будет собрана и доступна на следующих день.
![](https://habrastorage.org/webt/hu/il/zq/huilzq4gxwjkonk64mucds3ponm.png)
3.1.2. Настраиваем фильтр События:
![](https://habrastorage.org/webt/bn/cz/53/bncz53prddx0_qpgvmmkqydqhhu.png)
3.1.3. Итого, мы получили:
Количество пользователей, которые открыли мобильное приложение, и при этом активировали зашитое в него событие под названием app_launch с параметром app.
Если бы событие не работало (в мобильном приложении в этот день) то пользователей было бы ноль.
3.1.4. Экспортируем ссылку для использования через API:
![](https://habrastorage.org/webt/q1/1u/86/q11u86m7wqw5xe9cj77xh8r32ng.png)
3.2. Вставляем полученную ссылку в Postman в созданный Collections.
3.3. Раздел Params
В него уже перешли необходимые поля для GET запроса. Сейчас мы сделаем их variable, что бы данные в запросе могли меняться.
Находим наименование события и меняем его на формулу для привязки его к нашему Environments.
Наименование формулы берем из наименования поля в разделе Environments:
![](https://habrastorage.org/webt/o-/ms/rc/o-msrchsuhfh8i004fljgtxyjms.png)
Также поступаем со всеми полями раздела Params:
FirstData
LastData
OperationSystem
Event
params
пример:
![](https://habrastorage.org/webt/8g/rd/eg/8grdegvjfelu0qamdc4vberjvrc.png)
3.4. Раздел Headers.
В данном разделе мы авторизуемся в AppMetrica, чтобы сервер пропустил наши запросы.
В данный момент нам достаточно заполнить
- наименование поля: Authorization
- значение поля: OAuth ***** (нужно получить токен своего приложения)
3.5. Можно попробовать сделать первый запрос.
Должно прийти тело со статистикой:
![](https://habrastorage.org/webt/rq/nf/th/rqnfthnw4xvef-czad2r1vnwmka.png)
Сравниваем его с web интерфейсом. Совпадает? Значит мы на правильном пути!
3.6. Раздел Pre-request Script
3.6.1. В данном разделе мы будем привязывать данные в environments к файлу с данными в формате CSV.
console.log("event = " + data.event)
![](https://habrastorage.org/webt/zf/v6/df/zfv6df_tgtzgozc-jobydg8lm_i.png)
3.7. Раздел Tests
В нём находится святая святых всего мероприятия, а именно код тест-кейса.
Ниже код для текущей задачки с комментариями:
pm.test("ответ сервера", function () {
pm.response.to.have.status(200); // стандартный тест, проверяющий ответ сервера
});
const jsonData = pm.response.json(); //конструктор, создаём переменную для удобства.
pm.test('событие из файла data - ' // начало информационного сообщения
+ pm.iterationData.get("event")+ // конкатенация, привязка текущего события из файла CSV в наименование тест-кейса
'.' // вставляем точку для удобства отображения.
+pm.iterationData.get("params"), // еще одна конкатенация, привязка текущего параметра из файла CSV в наименование тест-кейса
() => {
pm.expect(jsonData.totals[0] >= 1) // сравнение значения текущего с эталонным
.to.be.true; // ассерт, чтобы тест был PASS или FAIL
});
3.8. Проверка:
Запускаем запрос, смотрим, результаты теста:
![](https://habrastorage.org/webt/qo/dr/8k/qodr8ktyi2yxpx87a6tuv3icb9g.png)
То, что не видно наименования событий и параметров – это не баг, просто еще не подключен файлик CSV. Об этом позже, главное всё работает. Можно вместо ссылок на файл внести просто текст или ссылку на environment. Тут уже нет границ для творчества.
4. Настройка Runner
Теперь нам предстоит сделать первый шаг к тому, чтобы это был авто тест, а именно подключить к нему файл с данными.
4.1. Добавление файла со списком событий для тестов
Мы создадим простенький CSV файл с данными.
В первой строке будет наименование поля для environment
Далее будут строки с value поля environment.
![](https://habrastorage.org/webt/8j/tg/m8/8jtgm82ymwrmkurp052k1fg3xu0.png)
4.2. Запуск Runner
![](https://habrastorage.org/webt/bw/5c/5u/bw5c5ualaqpdcsisjsl6reocago.png)
Выбираем папку с коллекцией.
4.2.1. Выбираем нужный запрос.
4.2.2. Выбираем нужный Environment.
4.2.3. Видим количество кейсов, соответствующих загруженному файлику.
4.2.4. Вводим задержку между кейсами, чтобы не нагружать сервер. Я вводил 100ms на всякий случай.
4.2.5. Загружаем CSV файлик cо списком событий и параметров.
4.2.6. Смотрим, правильно ли распознал Postman файл.
4.3. Жмем RUN, наслаждаемся результатом. Солдат спит, тесты бегут!
![](https://habrastorage.org/webt/rl/ve/ey/rlveeyxwqtbs-e1dj36xuujlvls.png)
5. Экспорт отчета
Тут уже дело вкуса. Можно работать с отчетом в JSON. Я пока из VSON скопировал всё в Эксель и получил понимание, где трафик есть, а где нет:
![](https://habrastorage.org/webt/0z/al/ig/0zaligyf7t79io7pzdr52wmla0y.png)
Используемые материалы:
Postman
AppMetrica
ermolnik
прикольная штука, только не понял какая практическая польза от того что я прогоню csv-ник с заготовленными данными
Panarik Автор
Проверить, есть ли трафик в AppMetrica по всем заготовленным в файлике событиям. Если пользователей на событие будет более одного, то событие в мобильном приложении работает корректно, и передаёт данные в AppMetrica.