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

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка навантажувальних тестів для сайту (JMeter)
Середня
~2-3 робочих дні
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розроблення нагрузочних тестів для сайтів (JMeter)

Apache JMeter — зрілий інструмент нагрузочного тестування на Java. Підтримує HTTP, HTTPS, WebSocket, JDBC, LDAP, FTP. Багатий GUI для побудови тест-планів, плагіни для розширення функціональності, широко використовується в enterprise.

Архітектура тест-плану

Test Plan
├── Thread Group (група користувачів)
│   ├── HTTP Request Defaults (загальні настройки)
│   ├── HTTP Cookie Manager
│   ├── HTTP Header Manager
│   ├── Login Sampler (POST /api/auth/login)
│   ├── Think Time (таймер очікування)
│   ├── Products Sampler (GET /api/products)
│   └── Assertions
├── Results Tree Listener
├── Aggregate Report Listener
└── Response Time Graph

Створення тест-плану через JMX (XML)

<!-- test-plan.jmx -->
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0">
  <hashTree>
    <TestPlan testname="E-commerce Load Test">
      <hashTree>
        <ThreadGroup testname="User Flow" enabled="true">
          <stringProp name="ThreadGroup.num_threads">100</stringProp>
          <stringProp name="ThreadGroup.ramp_time">60</stringProp>
          <stringProp name="ThreadGroup.duration">300</stringProp>
          <boolProp name="ThreadGroup.scheduler">true</boolProp>
          <hashTree>

            <HTTPSamplerProxy testname="Login">
              <stringProp name="HTTPSampler.domain">${BASE_URL}</stringProp>
              <stringProp name="HTTPSampler.path">/api/auth/login</stringProp>
              <stringProp name="HTTPSampler.method">POST</stringProp>
              <!-- ... -->
            </HTTPSamplerProxy>

          </hashTree>
        </ThreadGroup>
      </hashTree>
    </TestPlan>
  </hashTree>
</jmeterTestPlan>

Запуск через командну строку (без GUI)

# Базовий запуск
jmeter -n -t test-plan.jmx \
       -l results.jtl \
       -e -o html-report/ \
       -JBASE_URL=https://staging.example.com \
       -JN_USERS=100 \
       -JRAMP_UP=60

# З плагінами з командної строки
jmeter -n -t test-plan.jmx \
       -Jjmeterengine.force.system.exit=true \
       -l results.jtl \
       -JBASE_URL=https://staging.example.com

Змінні та параметризація

# users.csv — дані тестових користувачів
email,password
[email protected],pass123
[email protected],pass456
[email protected],pass789

У JMeter: Add → Config Element → CSV Data Set Config:

  • Filename: ${__P(data_dir)}/users.csv
  • Variable Names: email,password
  • Sharing Mode: All threads

Assertions

Response Assertion:
- Response Code: equals 200
- Response Body: contains "access_token"

Duration Assertion:
- Duration in milliseconds: <= 1000

JSON Path Assertion:
- JSON Path: $.data[0].id
- Expected Value: (не пусто)

Beanshell/Groovy Post-processor

// Groovy JSR223 PostProcessor — витягнути JWT з відповіді
import groovy.json.JsonSlurper

def response = prev.getResponseDataAsString()
def json = new JsonSlurper().parseText(response)
vars.put("auth_token", json.access_token)
vars.put("user_id", json.user.id.toString())

Розподілене тестування

# Конфігурація master-slave
# remote_hosts у jmeter.properties
remote_hosts=192.168.1.11,192.168.1.12,192.168.1.13

# Запуск на всіх вузлах
jmeter -n -t test-plan.jmx -r -l results.jtl

Інтеграція з Grafana через InfluxDB

# jmeter.properties
backend_listener_client=kg.apc.jmeter.reporters.influxdb2.InfluxDbBackendListenerClient

# Backend Listener Config
influxDBHost: localhost
influxDBPort: 8086
influxDBToken: your-token
influxDBOrganization: myorg
influxDBBucket: jmeter

Строк реалізації

Розроблення тест-плану JMeter з 5–7 сценаріями нагрузки: 3–6 днів.