Да, опять статья про Grafana и визуализацию метрик тестов.
Ваши автотесты интегрированы в CI и рядом лежит TMS (Test Management System), такие как Allure, qase, и так далее, где вы/ваша команда храните тест-кейсы, чек листы и результаты прогонов. По результатам тестирования строятся графики, рисуются цифры и так далее. Но как часто вы смотрите на эти результаты ? Показываете разработчикам, менеджерам? Достаточно ли этих цифр или хочется больше?
Мне нет. Я работал с разными TMS и местные дашборды были или являются для меня болью. Да, все красиво, но сделать что-то своё они не давали (или давали, но очень скудно). Нам приходилось делать свои отчёты, вычислять свои метрики, но единой точки входа, чтобы всё это посмотреть, не было (и я до сих пор не понимаю, почему так). В нашей компании были:
отчеты тестов в TMS
кастомный отчет по покрытию API
кастомный отчет по нагрузке (свое решение)
отчет в GitLab pages
состояние тестов в telegram
Да, часть метрики умеет выводить TMS, но сделать это всё в одном месте не получится. Поэтому, мы обратили внимание на Grafana (идея пришла давно, но статья Игоря подтолкнула ссылка).
Задача
Собрать результаты тестов (общее количество, количество успешных/упавших тестов и так далее) и отобразить их в Grafana.
Что мы будем использовать?
supabase: онлайн бд с рест апи. Хотя, что использовать в этом пункте, не особо важно, можно вашу бд или Prometeus и так далее
grafana: для вывода результатов
любой популярный язык программирования, на котором написаны тесты
Supabase
Supabase – это реляционная база данных, использующая SQL-синтаксис.
Регистрируем нового пользователя, выбираем бесплатный тариф.
Создаём новую базу данных (проект)
![](https://habrastorage.org/getpro/habr/upload_files/53e/6b8/1de/53e6b81de7794d080985e0c494f7533c.png)
Не забудьте скопировать пароль!
Так как эта статья про метрики, то не будем заниматься нормализацией, создадим одну большую таблицу, с такими полями:
![](https://habrastorage.org/getpro/habr/upload_files/b20/5fa/f09/b205faf09237f8535fab5cd33bab2767.png)
Где мы будем хранить результаты наших прогонов.
После того, как создали таблицы, идём в настройки. Нас интересуют url и secret.
![](https://habrastorage.org/getpro/habr/upload_files/179/19a/986/17919a986c53cd4124ed176e82bc521e.png)
Тесты
Для начала соберём наши метрики, которые мы будем отправлять.
Для сбора результатов тестов смотрите документации к вашим тестовым фреймворкам, например, для js/ts playwright это будет reporter, для python test это будет хуки pytest.
В самом конце я приведу ссылку на репозиторий тестов и сбора статистики на Python.
И последнее: нам надо отправлять данные в нашу бд. Для этого есть два пути:
Найти для вашего языка официальный клиент, например, для python или js.
-
Отправлять запросы без оберток, так как у нас база доступна через rest api. Единственное, необходимо в хедер добавить значение (кроме SUPABASE_KEY),
"Prefer": "return=representation"
чтобы нам на запрос приходил не пустой респонс боди.
Смотрите примеры в таблицах supabase
![](https://habrastorage.org/getpro/habr/upload_files/db9/f64/7af/db9f647afc5d146cef24c6262a908d64.png)
SUPABASE_KEY находится в настройках.
Тело для запроса необходимо заполнять согласно именам колонок в таблице, например:
body = {'total': 100, 'passed': 99 ...}
Grafana
Скачиваем docker image
Запускаем локально (доступ admin/admin)
docker run -d --name=grafana -p 3000:3000 grafana/grafana
В настройках находим Data sources
![](https://habrastorage.org/getpro/habr/upload_files/d6a/eda/085/d6aeda08515e473b4b6c1ebe47b6edfb.png)
Добавляем host + port, database, user и password. Основные настройки нужно взять в supabase
![](https://habrastorage.org/getpro/habr/upload_files/766/0ca/73c/7660ca73c82b4261666a5806ffa1d6ec.png)
password это пароль, который вы указали при создании бд. Делаем проверку, что подключение к базе работает.
Возвращаемся к тестам и запускаем прогон.
Проверяем нашу бд. Будет выглядеть примерно так:
![](https://habrastorage.org/getpro/habr/upload_files/eda/0e1/a03/eda0e1a03c7743c6a2e1332396741951.png)
Теперь возвращаемся в grafana и создаем простой дашборд, указываем наш ранее созданный data source, выбираем таблицу test и указываем поля, которые необходимо отобразить.
![](https://habrastorage.org/getpro/habr/upload_files/2d5/6d7/2a3/2d56d72a3580c9fd4e6f3f4ce2b9cdc0.png)
Вот и все! Теперь остается добавлять таблицы и наполнять их данными, которые вы собираетесь отобразить. В своих проектах мы следим за
временем тестов
данными из TMS (дергаем через api)
покрытием api тестов. Для измерения покрытия используем
временем запросов (ищем медленные запросы)
остальными тестовыми метриками