Postman — Автотестирование метрики в AppMetrica

1. Введение

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

Подробности интеграции я опущу, имеется в виду, что она уже есть в МП.

Для проверки нашел два варианта:

  • через web интерфейс
  • через API

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

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

2. Настройка Environments

Нам потребуются поля с изменяемыми данными, которые будут использоваться в нашем GET запросе. Для текущей задачки нам потребуются поля:

FirstData
LastData
OperationSystem
event
MinUsers
Params

Вот как это выглядит в Postman:

image
Postman — Автотестирование метрики в AppMetrica

3. Настройка Collections

Теперь создадим Коллекцию с GET запросом и тестом.

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

3.1. Получение ссылки из AppMetrica

3.1.1. Настраиваем фильтр по дате события. Обычно выбираю вчерашнюю, т.к. метрика запросов за день полностью будет собрана и доступна на следующих день.

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

3.1.2. Настраиваем фильтр События:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

3.1.3. Итого, мы получили:

Количество пользователей, которые открыли мобильное приложение, и при этом активировали зашитое в него событие под названием app_launch с параметром app.

Если бы событие не работало (в мобильном приложении в этот день) то пользователей было бы ноль.

3.1.4. Экспортируем ссылку для использования через API:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

3.2. Вставляем полученную ссылку в Postman в созданный Collections.

3.3. Раздел Params

В него уже перешли необходимые поля для GET запроса. Сейчас мы сделаем их variable, что бы данные в запросе могли меняться.

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

Наименование формулы берем из наименования поля в разделе Environments:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

Также поступаем со всеми полями раздела Params:

FirstData
LastData
OperationSystem
Event
params

пример:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

3.4. Раздел Headers.

В данном разделе мы авторизуемся в AppMetrica, чтобы сервер пропустил наши запросы.

В данный момент нам достаточно заполнить

  • наименование поля: Authorization
  • значение поля: OAuth ***** (нужно получить токен своего приложения)

3.5. Можно попробовать сделать первый запрос.

Должно прийти тело со статистикой:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

Сравниваем его с web интерфейсом. Совпадает? Значит мы на правильном пути!

3.6. Раздел Pre-request Script

3.6.1. В данном разделе мы будем привязывать данные в environments к файлу с данными в формате CSV.

console.log("event = " + data.event)

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

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. Проверка:

Запускаем запрос, смотрим, результаты теста:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

То, что не видно наименования событий и параметров – это не баг, просто еще не подключен файлик CSV. Об этом позже, главное всё работает. Можно вместо ссылок на файл внести просто текст или ссылку на environment. Тут уже нет границ для творчества.

4. Настройка Runner

Теперь нам предстоит сделать первый шаг к тому, чтобы это был авто тест, а именно подключить к нему файл с данными.

4.1. Добавление файла со списком событий для тестов

Мы создадим простенький CSV файл с данными.

В первой строке будет наименование поля для environment

Далее будут строки с value поля environment.

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

4.2. Запуск Runner

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

Выбираем папку с коллекцией.

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, наслаждаемся результатом. Солдат спит, тесты бегут!

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

5. Экспорт отчета

Тут уже дело вкуса. Можно работать с отчетом в JSON. Я пока из VSON скопировал всё в Эксель и получил понимание, где трафик есть, а где нет:

Postman — Автотестирование метрики в AppMetrica — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

Используемые материалы:
Postman
AppMetrica

Специально для сайта ITWORLD.UZ. Новость взята с сайта Хабр