Эффективное тестирование производительности приложения требует не просто генерации нагрузки, а имитации реальных пользовательских сценариев. Такой подход позволяет выявить узкие места и обеспечить стабильную работу под высокой нагрузкой. В этой статье рассмотрим, как создать скрипты для автоматизированного тестирования с использованием популярных инструментов.
Для симуляции пользовательского поведения подходят инструменты, такие как Apache JMeter, Gatling, или k6. Сегодня поговорим про k6 - легковесном и мощном инструменте для нагрузочного тестирования.
1. Создание Скрипта на k6. k6 позволяет описывать сценарии в виде JavaScript-кода, что делает его удобным для разработчиков. Пример Скрипта:
import http from 'k6/http';
import { sleep, check } from 'k6';
export let options = {
stages: [
{ duration: '2m', target: 100 }, // Разогрев
{ duration: '5m', target: 100 }, // Пик нагрузки
{ duration: '2m', target: 0 }, // Спад
],
};
export default function () {
let res = http.get('https://bashtex.com');
check(res, {
'статус 200': (r) => r.status === 200,
'время отклика < 200мс': (r) => r.timings.duration < 200,
});
sleep(1);
}
2. Анализ результатов. После выполнения скрипта k6 выводит подробные метрики:
checks.....................: 100.00% ✓ 1200 ✗ 0
http_req_duration..........: avg=135ms min=100ms med=130ms max=200ms p(95)=180ms
http_reqs..................: 4000 13.333334/s
Эти метрики позволяют оценить производительность приложения и выявить потенциальные проблемы.
3. Автоматизация с CI/CD. Для полной автоматизации можно использовать тесты производительности в CI/CD пайплайн. Например, GitLab CI или Jenkins для запуска тестов при каждом деплое. Пример Конфигурации GitLab CI:
performance_test:
script:
- k6 run loadtest.js
stage: test
Преимущества подхода:
Реалистичные сценарии: Тестирование, основанное на реальном поведении пользователей, дает более точные результаты.
Автоматизация: Экономит время и усилия, минимизирует ручной труд.
Интеграция: Легко встраивается в существующие процессы CI/CD, обеспечивая постоянный контроль за производительностью.
BashTex 📱 #bash