Зачем, когда и как они нужны вам
TG: haradkou_sdet
Помогаю с автоматизацией и нагрузкой
Данный рассказ опирается на Playwright а также на тестовый фреимворк, который предоставляет Playwright для платформы Nodejs (@playwright/test)
Цикл: Metrics -> Обратная связь -> метрики
Цикл SDLC
const requestsMetric = new Counter("api_requests", { unit: "requests" });
const token = await http.post("server.com/login")
requestsMetric.add(1, { endpoint: "/auth", method: "POST" });
await page.goto("/some-page");
// rest code
Делает отсчет. Начинается как правило с 0 и не может уменьшаться
const parallelMetric = new Gauge("parallel_requests", { unit: "requests" });
const req1 = http.post("server.com/login")
parallelMetric.inc({ endpoint: "/auth", method: "POST" });
const req2 = http.get("server.com/data")
parallelMetric.inc({ endpoint: "/data", method: "GET" });
await waitForAllRequests(req1, req2)
parallelMetric.dec(2) // сбиваем 2 параллельных запроса
await page.goto("/some-page");
// rest code
Тотже счетчик, но также умеет сбрасыватся к начальному значению и уменьшаться
Что-то что имеет периодичность во времени. Как правило это что-то с измерением времени
Внутри одного отчета гистограммы всегда передается несколько цифр:
Количество (Count)
Сумма (Sum)
Границы корзин (Explicit Bounds)
Счетчики корзин (Bucket Counts)
Минимум и Максимум (Min/Max):
const durationMetric = useHistogram("e2e_page_load_ms", {
description: "E2E test: simulated page load times",
unit: "ms",
});
await page.goto("/home")
duration.record(120, { route: "/home" });
await page.goto("/dashboard")
duration.record(340, { route: "/dashboard" });
await page.goto("/login")
duration.record(85, { route: "/login" });
Любые метрики, которые мы можем/хотим собрать через API самих фреимворков
Flacky тесты (нужно хранилище тестов и их статусов)
Самые сложные метрики для сбора. Но самые полезные и важные
OTEL - open telemetry. Открытый стандарт для отправки и получения метрик (Collector, SDK, протокол данных OTLP)
Vitalics/playwright-prometheus-remote-write-reporter
Vitalics/playwright-labs/reporter-otel
Vitalics/playwright-labs/fixture-otel
Vitalics/playwright-labs/fixture-prometheus
Vitalics/playwright-labs/reporter-prometheus-remote-write
Начните с малого: автоматические метрики (CPU, memory, Tests pass, Test fail, Test skipped)
Можете добавить собственные метрики, когда автоматических вам будет не хватать
Подключите метрики продукта или бекенда на Dashboard