Разработка нагрузочных тестов для сайта (Artillery)

500-е ошибки во время распродаж — типичная боль для e-commerce. Если пиковая нагрузка в 10 000 RPS ложит сервер, вы теряете до 1 млн рублей в час. Чтобы избежать простоев, мы проводим нагрузочное тестирование с Artillery. Этот инструмент симулирует тысячи одновременных пользователей, показывая, как

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка нагрузочных тестов для сайта (Artillery)
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

500-е ошибки во время распродаж — типичная боль для e-commerce. Если пиковая нагрузка в 10 000 RPS ложит сервер, вы теряете до 1 млн рублей в час. Чтобы избежать простоев, мы проводим нагрузочное тестирование с Artillery. Этот инструмент симулирует тысячи одновременных пользователей, показывая, как система ведёт себя под давлением. Перед запуском акций или нового функционала мы моделируем сценарии: просмотр каталога, поиск, оформление заказа. В результате вы получаете не просто отчёт, а конкретные шаги по оптимизации — от настройки кеширования до индексов БД. Наши клиенты экономят до 500 000 рублей на каждом инциденте благодаря своевременному выявлению узких мест. Оценка проекта занимает 1 день, после чего мы даём детальный отчёт с рекомендациями. Свяжитесь с нами, чтобы получить консультацию.

Как Artillery помогает выявить узкие места?

Artillery — Node.js-инструмент с YAML-конфигурацией, поддерживающий HTTP и WebSocket. Он генерирует нагрузку по фазам: разогрев, ступенчатый рост, пик. На каждом этапе мы отслеживаем latency, error rate и throughput. Если p99 превышает 1 секунду или 5xx ошибки >1% — это сигнал к оптимизации. Например, в одном проекте на Laravel задержка возникала из-за N+1 запроса к базе при просмотре каталога. Тест с 50 RPS выявил рост p95 до 3 с. После добавления eager loading p95 упал до 200 мс. Подробнее о нагрузочном тестировании читайте в Wikipedia.

Почему стоит выбрать Artillery для нагрузочного тестирования?

Artillery проще K6 в настройке: не нужен JS-код для простых сценариев, только YAML. По сравнению с JMeter, Artillery легче интегрируется в CI/CD: одна команда artillery run и JSON-отчёт. Нагрузка распределяется на несколько воркеров, что даёт до 100 000 RPS с одной машины (при правильной конфигурации). По нашим тестам, Artillery в 2 раза быстрее генерирует отчёт, чем K6, при аналогичной нагрузке.

Пример развёрнутого YAML-сценария
# tests/load/basic.yml config: target: "https://staging.example.com" phases: - duration: 60 arrivalRate: 5 name: Warm up - duration: 120 arrivalRate: 20 name: Ramp up load - duration: 300 arrivalRate: 50 name: Sustained load - duration: 60 arrivalRate: 100 name: Stress test defaults: headers: Accept: "application/json" Content-Type: "application/json" ensure: p99: 1000 p95: 500 maxErrorRate: 1 scenarios: - name: Browse catalog weight: 60 flow: - get: url: "/api/products" expect: - statusCode: 200 - hasProperty: "data" - think: 2 - get: url: "/api/products/{{ $randomNumber(1, 100) }}" - name: Search weight: 30 flow: - get: url: "/api/search?q={{ $randomString() }}" expect: - statusCode: [200, 404] - name: Contact form weight: 10 flow: - post: url: "/api/contact" json: name: "Test User" email: "[email protected]" message: "Load test message" expect: - statusCode: 201 

Как написать сценарий нагрузочного теста за 5 шагов?

  1. Определите критические эндпоинты: каталог, поиск, корзина, оформление заказа.
  2. Установите SLA: p99 < 1 с, error rate < 1%.
  3. Напишите YAML-сценарий с фазами нагрузки: разогрев, ступенчатый рост, пик.
  4. Добавьте авторизацию, если требуется (capture токена).
  5. Запустите тест локально, проверьте корректность, затем интегрируйте в пайплайн.

Основные сценарии Artillery

Сценарий с авторизацией

# tests/load/authenticated.yml config: target: "https://staging.example.com" phases: - duration: 300 arrivalRate: 20 variables: users: - email: "[email protected]" password: "pass123" - email: "[email protected]" password: "pass456" scenarios: - name: Authenticated user flow flow: - post: url: "/api/auth/login" json: email: "{{ users[0].email }}" password: "{{ users[0].password }}" capture: - json: "$.access_token" as: "token" expect: - statusCode: 200 - get: url: "/api/user/profile" headers: Authorization: "Bearer {{ token }}" expect: - statusCode: 200 - post: url: "/api/orders" headers: Authorization: "Bearer {{ token }}" json: product_id: 1 quantity: 1 expect: - statusCode: 201 capture: - json: "$.id" as: "orderId" - get: url: "/api/orders/{{ orderId }}" headers: Authorization: "Bearer {{ token }}" expect: - statusCode: 200 

Кастомный JS-процессор

# tests/load/custom.yml config: processor: "./processor.js" scenarios: - name: Dynamic flow flow: - function: "generateDynamicPayload" - post: url: "/api/data" json: "{{ payload }}" 
// processor.js module.exports = { generateDynamicPayload }; function generateDynamicPayload(context, events, done) { context.vars.payload = { id: Math.floor(Math.random() * 10000), timestamp: new Date().toISOString(), data: Array.from({ length: 10 }, (_, i) => ({ key: `item_${i}`, value: Math.random() })), }; return done(); } 

GitHub Actions

- name: Load Test run: | artillery run --output results.json tests/load/basic.yml artillery report --output load-report.html results.json - name: Check SLA run: | ERRORS=$(cat results.json | jq '.aggregate.counters["http.codes.5xx"] // 0') P99=$(cat results.json | jq '.aggregate.latency.p99') if [ "$ERRORS" -gt "10" ] || [ "$(echo "$P99 > 2000" | bc)" = "1" ]; then echo "Load test failed: too many errors or high latency" exit 1 fi 

Сравнение инструментов нагрузочного тестирования

Инструмент Язык сценариев WebSocket Распределённая нагрузка CI/CD интеграция Наша оценка
Artillery YAML + JS Да Встроенная Из коробки Отлично
Apache JMeter XML, Groovy Да Через удалённые серверы Плагины Хорошо
k6 JS Нет Через воркеры Отличная Хорошо

Типичные ошибки при нагрузочном тестировании

  • Тестирование только одного эндпоинта, игнорируя бизнес-процессы.
  • Неправильная эмуляция пользовательского поведения (например, отсутствие think time).
  • Запуск нагрузки с одного IP (блокировка на уровне сети).
  • Игнорирование кеширования на уровне приложения.
  • Отсутствие мониторинга серверных метрик (CPU, RAM, DB connections).

Этапы разработки нагрузочных тестов

Этап Длительность Результат
Анализ текущей архитектуры 0.5 дня Список критических эндпоинтов, SLA-параметры
Написание сценариев 1–2 дня YAML-конфигурации для 3–5 сценариев
Пробный прогон, отладка 0.5 дня Исправление ошибок, корректная эмуляция
Запуск на staging 1 день Сбор метрик, подготовка отчёта
Финальный отчёт + рекомендации 0.5 дня PDF-отчёт с графиками и советами по оптимизации

Что входит в работу

  • Документация: техническое задание, описание сценариев, инструкция по запуску.
  • Сценарии: 3–5 YAML-файлов с поддержкой авторизации, WebSocket, кастомных процессоров.
  • Отчёт: HTML-дашборд с метриками (latency, RPS, errors), JSON-данные для CI.
  • Рекомендации: список узких мест и конкретные шаги по улучшению (индексы, кеши, репликация).
  • Поддержка: 1 месяц консультаций после сдачи.

Наш опыт — 50+ проектов в e-commerce и SaaS. После выполнения работ вы получите чёткое понимание пропускной способности сайта и сможете предотвратить падения в пик. Закажите разработку нагрузочных тестов и будьте уверены в стабильности вашего сайта. Получите консультацию: мы протестируем ваш сайт под нагрузкой и дадим рекомендации.

Сроки ориентировочно

Разработка 3–5 сценариев под ключ занимает от 2 до 5 дней в зависимости от сложности. Стоимость рассчитывается индивидуально после анализа вашего проекта.