Modern QA2026Дашборды качества
Join

Course22 Test Strategy & Quality Metrics

Foundations · Chapter 22

Дашборды качества

Updated Jul 2026

Превращение сырых данных в решения

Дашборд качества — это не украшение. Это инструмент поддержки принятия решений. Хорошо спроектированный дашборд отвечает на вопрос «Что нам делать?» за секунды. Плохо спроектированный дашборд порождает второй вопрос: «Что это означает?» — а затем его начинают игнорировать.

Этот раздел рассматривает, как строить дашборды для разных аудиторий, выбирать правильные инструменты и визуализации, а также автоматизировать сбор данных, чтобы дашборд оставался актуальным без ручных усилий.

Построение дашбордов для разных аудиторий

Разным аудиториям нужна разная информация с разной степенью детализации.

Матрица аудиторий

Аудитория Что им нужно Частота обновления Уровень детализации
QA-команда Результаты тестов, нестабильные тесты, прогресс автоматизации, заблокированные тесты В реальном времени Высокий (отдельные результаты тестов)
Команда разработки Статус сборки, падения тестов в их коде, покрытие для их PR В реальном времени Средний (по PR, по модулю)
Менеджер разработки Сводка по качеству спринта, тренды дефектов, готовность к релизу Ежедневно / по спринтам Средний (по функции, по спринту)
Продуктовый менеджер Статус качества функций, области риска, предполагаемые даты релизов По спринтам Низкий-средний (по функции)
VP / CTO Общая позиция по качеству, тренды, основные риски Еженедельно / ежемесячно Низкий (светофор, тренды)

Дизайн дашборда по аудиториям

Дашборд QA-команды — «Ситуационный центр»

┌─────────────────────────────────────────────────────────────┐
│ PIPELINE STATUS                          Last run: 2 min ago │
│ ✅ Unit Tests (412/412)     18s                              │
│ ✅ Integration (87/89)      3m 12s    [2 failures → details] │
│ ✅ E2E (101/104)            24m 8s    [3 failures → details] │
│ ⚠️  Flaky quarantine (8 tests)         [trend: ↓ from 12]    │
├─────────────────────────────────────────────────────────────┤
│ OPEN BUGS BY SEVERITY          │ AUTOMATION PROGRESS         │
│ Critical: 1  [→ details]       │ Sprint target: 70%          │
│ Major:    4                     │ Current:       67% ████░░  │
│ Minor:    7                     │ New this sprint: +12 tests  │
│ Total:    12 (↓ from 15)       │                             │
├─────────────────────────────────────────────────────────────┤
│ ENVIRONMENT HEALTH                                           │
│ Staging:     🟢 Healthy    │ Pre-prod:  🟢 Healthy          │
│ CI Runners:  🟢 4/4 online │ Test data:  🟡 Last refresh 3d │
└─────────────────────────────────────────────────────────────┘

Дашборд для руководства — «Светофор»

┌─────────────────────────────────────────────────────────────┐
│ QUALITY POSTURE -- Q1 2026                                   │
│                                                              │
│  Overall:  🟡 YELLOW  (1 critical bug in partner API)       │
│                                                              │
│  ┌─────────────┬──────────┬──────────┬──────────┐           │
│  │ Payment     │ Search   │ User Mgmt│ Admin    │           │
│  │   🟢        │   🟢     │   🟢     │   🟡    │           │
│  └─────────────┴──────────┴──────────┴──────────┘           │
│                                                              │
│  Trend (last 6 sprints):                                     │
│  Escaped defects:  12% → 8% → 6% → 5% → 4% → 4%   ✅      │
│  Release cadence:  Bi-weekly → Weekly                ✅      │
│  Customer complaints: 8 → 6 → 5 → 3 → 2 → 2        ✅      │
│                                                              │
│  ACTION NEEDED: Partner API timeout handling (ETA: Sprint 48)│
└─────────────────────────────────────────────────────────────┘

Инструменты для дашбордов качества

Сравнение инструментов

Инструмент Лучше всего для Плюсы Минусы Стоимость
Grafana Метрики в реальном времени, данные CI/CD Мощные запросы, много источников данных, алертинг Крутая кривая обучения для нетехнических пользователей Бесплатно (open source)
Datadog Полная наблюдаемость + тестирование Интеграция с CI/CD, APM, логами Дорого при масштабировании Платный
Allure Отчётность по результатам тестов Красивые отчёты, интеграции с фреймворками Не универсальный инструмент для дашбордов Бесплатно (open source)
ReportPortal Агрегация результатов тестов ML-обнаружение нестабильных тестов, анализ трендов Требует хостинга и поддержки Бесплатно (open source)
Google Sheets Быстрые, доступные дашборды Доступ для всех, без инфраструктуры Ручной ввод данных или скриптовый импорт, ограниченная визуализация Бесплатно
Looker / Metabase Дашборды на базе хранилища данных На основе SQL, мощный кросс-источниковый анализ Требует настройки конвейера данных Платный / Бесплатно (Metabase)
Кастомный (React/Vue) Очень специфические потребности Точное соответствие вашему рабочему процессу Стоимость разработки и поддержки Бесплатно (но трудозатратно)

Выбор правильного инструмента

Если ваша ситуация... Начните с
Маленькая команда, ограниченный бюджет, нужно сегодня Google Sheets со скриптовым импортом данных
CI/CD-ориентированная команда, уже используете Prometheus/InfluxDB Grafana
Уже платите за Datadog для APM Datadog (добавьте тестовые дашборды к существующей настройке)
Нужны детальные отчёты по тестам с историей Allure или ReportPortal
Data-ориентированная организация с хранилищем данных Looker или Metabase
Очень специфические потребности, которые ни один инструмент не покрывает Кастомный дашборд (крайний случай)

Ключевые визуализации

Линии трендов

Используйте для: Метрик, которые меняются со временем (процент пропущенных дефектов, покрытие автоматизацией, процент нестабильных тестов)

Escaped Defect Rate (%)
12 │ ●
10 │   ●
 8 │     ●
 6 │       ●
 4 │         ● ─ ─ ● ─ ─ ●
 2 │                          Target: 3%
 0 │─────────────────────────
   S42  S43  S44  S45  S46  S47  S48

Принципы дизайна:

  • Всегда показывайте линию целевого значения
  • Включайте как минимум 6 точек данных для содержательных трендов
  • Аннотируйте значимые события («Внедрены практики shift-left» в Sprint 44)

Тепловые карты

Используйте для: Визуализации рисков, тестового покрытия по областям, распределения дефектов

Defect Distribution by Module (Last 6 Sprints)

                S42  S43  S44  S45  S46  S47
Payment         ░░   ░░   ██   ░░   ░░   ░░
Search          ██   ██   ██   ░░   ░░   ░░
User Mgmt       ░░   ░░   ░░   ░░   ░░   ░░
Cart            ░░   ██   ░░   ░░   ░░   ░░
Partner API     ██   ██   ██   ██   ██   ██
Admin           ░░   ░░   ░░   ██   ██   ░░

█ = High defect count   ░ = Low/zero defects

Это сразу показывает, что Partner API имеет постоянные проблемы с качеством, требующие структурного внимания.

Диаграммы распределения

Используйте для: Распределение серьёзности дефектов, распределение типов тестов, покрытие по модулям

Defect Severity Distribution -- Sprint 47

Critical  ██                                    (2)    5%
Major     ████████                              (8)   20%
Minor     ████████████████████                 (20)   50%
Trivial   ██████████                           (10)   25%
          ─────────────────────────────────
          0     5     10    15    20    25

Столбчатые диаграммы

Используйте для: Сравнения между спринтами, модулями или командами

Спринт Баги открыты Баги закрыты Бэклог багов
S44 15 12 23
S45 11 14 20
S46 9 13 16
S47 7 11 12

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

Отчётность в реальном времени vs периодическая

Характеристика Дашборд реального времени Периодический отчёт
Частота обновления Секунды — минуты Ежедневно, еженедельно или по спринтам
Лучше всего для Статус пайплайна, здоровье окружения, активное тестирование в спринте Тренды качества, готовность к релизу, сводки для руководства
Инструмент Grafana, Datadog, кастомный Email, Slack-бот, PDF
Аудитория QA-команда, команда разработки Менеджеры, руководство, заинтересованные стороны
Риск злоупотребления Усталость от алертов, микроменеджмент Устаревшие данные, задержанные решения

Когда что использовать

  • В реальном времени: Активные фазы тестирования, окна релизов, реагирование на инциденты
  • Периодическая: Обзоры спринтов, планирование релизов, квартальные обзоры, презентации для совета директоров

Принципы дизайна дашбордов

1. Простота

Если зрителю нужно более 10 секунд, чтобы понять сообщение дашборда, он слишком сложен. Уберите всё, что не поддерживает принятие решения напрямую.

2. Действенность

Каждый элемент на дашборде должен отвечать на вопрос: «Что мне с этим делать?» Если ответ «ничего», элемента не должно быть на дашборде.

Действенный элемент Недейственный элемент
«3 критических бага открыты — исправить до релиза» «Всего тестов: 605»
«Нестабильность выросла до 7% — расследовать» «Тестов запущено сегодня: 1 814»
«Покрытие Partner API: 40% — ниже целевых 60%» «Среднее время выполнения теста: 42мс»

3. Контекст

Числа без контекста бессмысленны. Всегда включайте:

  • Целевые значения (как выглядит «хорошо»)
  • Тренды (становится лучше или хуже?)
  • Сравнения (vs прошлый спринт, vs среднее по команде, vs отраслевой бенчмарк)

4. Прогрессивное раскрытие

Покажите сводку первой. Дайте зрителю возможность углубиться в детали по желанию.

Level 1: 🟢 Payment  🟢 Search  🟡 Admin  🔴 Partner API

Level 2 (click on Partner API):
  - 3 open bugs (1 critical, 2 major)
  - Coverage: 40% (target: 80%)
  - Last tested: 3 days ago

Level 3 (click on critical bug):
  - BUG-1234: API timeout not handled for batch requests
  - Impact: 500 partner transactions/day
  - Fix ETA: Sprint 48

Примеры макетов дашбордов

Дашборд спринта

SPRINT 47 QUALITY DASHBOARD
━━━━━━━━━━━━━━━━━━━━━━━━━━

Stories Tested:  18/23 (78%)  │  Days Remaining: 3
Bugs Found:     7             │  Bugs Fixed:     5
Bugs Remaining: 2 (0 critical)│  Release Risk:   LOW

Test Automation:              │  Coverage:
  New tests: +12              │  Payment:    95% ✅
  Total:     342              │  Search:     72% ⚠️
  Pass rate: 98.4%            │  User Mgmt:  88% ✅
  Flaky:     2.1%             │  Admin:      45% ⚠️

Дашборд релиза

RELEASE v3.2.0 READINESS
━━━━━━━━━━━━━━━━━━━━━━━━

Overall Status: 🟡 CONDITIONAL GO

Feature Readiness:
  Payment flow:     [READY]     Full test coverage, 0 bugs
  User registration: [READY]     Full test coverage, 0 bugs
  Search:           [READY]     2 minor bugs (non-blocking)
  Partner API:      [BLOCKED]   1 critical bug (ETA: 2 days)
  Admin dashboard:  [RISK]      Not load-tested

Release Conditions:
  1. Partner API critical bug fixed and verified
  2. Admin load test completed (can be post-release)

Rollback Plan: Feature flag for Partner API, full rollback < 15 min

Автоматизация сбора данных для дашбордов

Источники данных и интеграция

Источник данных Что предоставляет Метод интеграции
CI/CD-пайплайн (GitHub Actions, GitLab CI, Jenkins) Результаты тестов, статус сборки, события деплоя Webhook / API push в хранилище данных дашборда
Тестовые фреймворки (JUnit, pytest, Playwright) Результаты pass/fail, время выполнения, скриншоты JUnit XML / JSON экспорт, обработанный пайплайном
Баг-трекер (JIRA, Linear, GitHub Issues) Количество багов, серьёзность, статус, время цикла API polling или webhook при изменении статуса
Инструменты покрытия кода (Istanbul, JaCoCo) Покрытие строк/ветвей/функций Отчёт покрытия в CI, обработанный и сохранённый
APM / мониторинг (Datadog, New Relic) Частота ошибок в продакшене, задержки, доступность Прямая интеграция с дашбордом
Кастомные скрипты Обнаружение нестабильных тестов, категоризация тестов Запланированные задачи, отправляющие данные в дашборд

Пример: Автоматический пайплайн в Grafana

# GitHub Actions step that pushes test metrics to Grafana
- name: Push test metrics
  run: |
    TOTAL=$(cat test-results.json | jq '.total')
    PASSED=$(cat test-results.json | jq '.passed')
    FAILED=$(cat test-results.json | jq '.failed')
    DURATION=$(cat test-results.json | jq '.duration')

    curl -X POST "$GRAFANA_PUSH_URL" \
      -H "Content-Type: application/json" \
      -d "{
        \"test_total\": $TOTAL,
        \"test_passed\": $PASSED,
        \"test_failed\": $FAILED,
        \"test_duration_seconds\": $DURATION,
        \"branch\": \"$GITHUB_REF\",
        \"commit\": \"$GITHUB_SHA\",
        \"timestamp\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"
      }"

Поддержание актуальности дашбордов без ручных усилий

  1. Автоматизируйте сбор данных при каждом запуске пайплайна (результаты тестов, покрытие, статус сборки)
  2. Планируйте периодические извлечения данных для метрик, которые меняются реже (бэклог багов, дефекты от клиентов)
  3. Настройте алерты для метрик, пересекающих пороговые значения (нестабильность > 5%, покрытие падает ниже 70%)
  4. Пересматривайте релевантность дашборда ежеквартально — удаляйте метрики, на которые никто не смотрит, добавляйте метрики, о которых спрашивают

Практическое упражнение

  1. Постройте дашборд спринта для вашего текущего проекта, используя любой инструмент (даже таблицу). Включите 5 наиболее важных метрик из раздела «Основные метрики QA».
  2. Создайте отчёт-светофор для руководства по 5 основным областям функциональности вашего продукта.
  3. Определите 3 метрики на вашем текущем дашборде (если он есть), которые не являются действенными. Предложите замены.
  4. Настройте один автоматический поток данных из вашего CI/CD-пайплайна в инструмент для дашбордов.
  5. Спроектируйте дашборд готовности к релизу для вашего следующего релиза и поделитесь им с командой для обратной связи.