Allure Report — это великолепный инструмент для визуализации результатов тестирования, но его истинная мощь раскрывается при постоянном мониторинге тенденций, а не разовых проверках. Эксперты по качеству (QA Lead, SDET) строят вокруг Allure целые дашборды, которые в реальном времени показывают здоровье проекта. Давайте разберем, как настроить такой мониторинг, от сбора сырых данных до их визуализации в Grafana.
Основой мониторинга являются сами Allure-отчеты, генерируемые после каждого прогона тестов (CI-пайплайна). Первый шаг — обеспечить их сохранение с историей. Нельзя просто перезаписывать отчет. Используйте возможности Allure Commandline или плагинов для CI (Jenkins, GitLab CI, GitHub Actions) чтобы сохранять отчеты с уникальными именами, например, с timestamp или номером сборки.
```
# Пример команды для генерации отчета с историей
allure generate ./allure-results -o ./allure-report --clean
# Ключ --clean очищает только временные данные, а сам отчет копируется в папку с историей
```
Но сырые HTML-отчеты неудобны для анализа. Эксперты извлекают ключевые метрики в структурированном виде. Allure создает в директории `allure-results` JSON-файлы для каждого теста. Можно написать простой скрипт на Python или Node.js для их парсинга и агрегации.
```
// Пример Node.js скрипта для извлечения основных метрик
const fs = require('fs').promises;
const path = require('path');
async function parseAllureResults(resultsDir) {
const files = await fs.readdir(resultsDir);
const jsonFiles = files.filter(f => f.endsWith('.json'));
let total = 0;
let passed = 0;
let failed = 0;
let broken = 0;
let totalDuration = 0;
for (const file of jsonFiles) {
const data = JSON.parse(await fs.readFile(path.join(resultsDir, file), 'utf8'));
total++;
if (data.status === 'passed') passed++;
if (data.status === 'failed') failed++;
if (data.status === 'broken') broken++;
if (data.stop && data.start) {
totalDuration += (data.stop - data.start);
}
}
return {
buildNumber: process.env.CI_PIPELINE_ID || 'local',
timestamp: new Date().toISOString(),
total,
passed,
failed,
broken,
skipped: total - passed - failed - broken,
passRate: ((passed / total) * 100).toFixed(2),
avgDuration: (totalDuration / total / 1000).toFixed(2) // в секундах
};
}
```
Следующий шаг — отправка этих метрик в систему хранения временных рядов, такую как **InfluxDB** или **Prometheus**. Это сердце мониторинга. Для Prometheus можно создать простой экспортер, который будет предоставлять метрики в нужном формате по HTTP-эндпоинту.
```
# Пример метрики в формате Prometheus
# TYPE test_execution_total counter
test_execution_total{status="passed",suite="api"} 150
test_execution_total{status="failed",suite="api"} 5
# TYPE test_duration_seconds gauge
test_duration_seconds{suite="api"} 12.7
```
И вот наступает этап визуализации — подключение **Grafana** к вашей базе данных с метриками. Эксперты создают дашборды, которые могут включать: график проходного процента (pass rate) за последние 30 сборок, список самых часто падающих тестов, тепловую карту длительности выполнения тестов по сьютам, тренд на увеличение количества "broken"-тестов (что может указывать на проблемы с инфраструктурой).
Ключевой совет от экспертов: мониторьте не только общие цифры, но и специфические метрики. Например, время прохождения критичного smoke-сьюта после каждого деплоя. Или количество дефектов, обнаруженных автоматическими тестами (связь с тикет-системой, например, Jira, которую тоже можно отобразить в Allure через аннотации @Issue). Настройте алерты в Grafana: если проходной процент падает ниже 95% или если критичный тест не выполняется дольше 5 минут — команда получает уведомление в Slack.
Такой подход превращает Allure из статического отчета в живой пульс проекта. Вы не просто видите, что тесты упали сегодня, а наблюдаете деградацию качества за неделю, корреляцию между количеством изменений в коде и ростом неустойчивых (flaky) тестов. Это позволяет принимать упреждающие решения: выделить время на рефакторинг тестовой базы, обновить тестовые данные или пересмотреть подход к изоляции тестов. Мониторинг Allure — это стратегическое преимущество для любой команды, серьезно относящейся к качеству.
Как мониторить Allure с примерами кода: опыт экспертов по сбору метрик и визуализации
Практическое руководство по настройке мониторинга Allure Report: от парсинга JSON-результатов и экспорта метрик в Prometheus до создания информативных дашбордов в Grafana с примерами кода на Node.js.
61
4
Комментарии (14)