Розробка навантажувальних тестів для сайту (Artillery)

500-ті помилки під час розпродажів — типова біль для e-commerce. Якщо пікове навантаження в 10 000 RPS кладе сервер, ви втрачаєте до 500 000 гривень на годину. Щоб уникнути простоїв, ми проводимо навантажувальне тестування з Artillery. Цей інструмент симулює тисячі одночасних користувачів, показуючи

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

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

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

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1242
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

500-ті помилки під час розпродажів — типова біль для e-commerce. Якщо пікове навантаження в 10 000 RPS кладе сервер, ви втрачаєте до 500 000 гривень на годину. Щоб уникнути простоїв, ми проводимо навантажувальне тестування з 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 днів залежно від складності. Вартість розраховується індивідуально після аналізу вашого проєкту.