Как проверять и анализировать метрики в проекте?

«Как проверять и анализировать метрики в проекте?» — вопрос из категории Логирование и мониторинг, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Проверка метрик — это процесс валидации, что собираемые данные корректны, и их анализ для оценки здоровья и производительности системы.

Этапы и методы проверки:

1. Валидация сбора данных (Instrumentation)

  • Логирование событий: Проверка, что события (клики, загрузки страниц, ошибки) отправляются корректно.
    • Инструменты: Отладка через браузер DevTools (Network tab), Charles Proxy, логи сервера.
    • Проверка: Корректность payload (параметры события, user ID, timestamp).
      // Пример: Отправка события в аналитическую систему
      analytics.track('Purchase Completed', {
      item: 'Laptop',
      value: 1200,
      currency: 'USD'
      });
      // Проверка: Убедиться, что запрос ушёл с правильными данными.

2. Проверка инфраструктуры мониторинга

  • Системы метрик: Prometheus, Graphite, InfluxDB.
    • Проверка: Доступность эндпоинта /metrics, актуальность данных (нет "залипания" значений).
  • Дашборды: Grafana, Kibana.
    • Проверка: Графики обновляются в реальном времени, нет разрывов в данных.

3. Анализ значений метрик

  • Сравнение с базовыми значениями (Baseline): Отклонение от нормального уровня.
  • Корреляция метрик: Например, рост числа ошибок (error_rate) должен коррелировать с падением успешных транзакций (success_rate).
  • Анализ перцентилей (P50, P95, P99): Особенно важно для метрик времени ответа (latency).
    # Пример проверки метрики времени ответа API
    import requests
    response = requests.get('https://api.service.com/health')
    assert response.status_code == 200
    metrics = response.json()
    # Проверяем, что 95-й перцентиль времени ответа меньше 500мс
    assert metrics['response_time_p95'] < 500

4. A/B-тестирование и канареечные релизы

  • Сравнение метрик между контрольной (A) и тестовой (B) группами.
  • Статистическая значимость: Использование t-теста или chi-squared test для определения, является ли разница не случайной.
  • Мониторинг ключевых метрик во время постепенного rollout новой версии.

5. Автоматические проверки и алертинг

  • Пороговые значения (Thresholds): Настройка алертов в Prometheus Alertmanager или Grafana.
    # Пример правила алерта Prometheus для высокой ошибки 5xx
    alert: HighErrorRate
    expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
    for: 10m
    labels:
    severity: critical
    annotations:
    summary: "High error rate on {{ $labels.instance }}"
  • Аномалии (Anomaly Detection): Использование ML-моделей для обнаружения необычных паттернов.

Ключевые Best Practices:

  • Определение SLO/SLA: Четкие цели по доступности и latency.
  • Осмысленные метрики: Измеряйте бизнес-показатели (конверсия, доход), а не только технические.
  • Контекст: Всегда анализируйте метрики во временном контексте (сравнение с прошлой неделей/месяцем).
  • Документация: Ведение глоссария метрик (что измеряет, как рассчитывается, источник данных).