Зачем вам нужно мастерское владение HTTP Request Sampler?
HTTP Request Sampler — это «кисть» в руках нагрузочного тестировщика, позволяющая:
- Реалистично имитировать поведение пользователей
- Тестировать REST API, SOAP-сервисы и обычные веб-страницы
- Выявлять узкие места в производительности backend-систем
5 уровней настройки HTTP-запросов
1. Базовый уровень: «Я просто хочу проверить сайт»
Protocol: https Server Name: example.com Port: 443 Method: GET Path: /home
Что проверяем: Доступность главной страницы
Как анализировать: Смотрите Response Code = 200 в View Results Tree
2. Параметризованные запросы: «Реальные пользовательские сценарии»
# users.csv user_id,token 101,abc123xyz 102,def456uvw
Path: /api/users/${user_id} Headers: Authorization: Bearer ${token}
Фишка: Используйте CSV Data Set Config + переменные для массового тестирования
3. Работа с API: «От новичка до профессионала»
// Body Data для POST /api/orders { "items": [ {"id": ${item_id}, "qty": ${__Random(1,5)} ], "promo": "${promo_code}" }
Профессиональные приёмы:
- JSON Extractor для сохранения order_id из ответа
- HTTP Header Manager с Content-Type: application/json
- Response Assertion для проверки схемы JSON
4. Файлы и бинарные данные: «Сложные кейсы»
Content-Type: multipart/form-data Send Files With Request: File Path: /uploads/test.jpg Parameter Name: file MIME Type: image/jpeg
Когда нужно: Тестирование загрузки файлов, импорта данных
5. Экстремальные условия: «Проверка на прочность»
Connect Timeout: 5000 Response Timeout: 10000 Implementation: HttpClient4 Redirects: false Use KeepAlive: false
Для чего: Эмуляция плохого интернет-соединения и стресс-тестирование
7 смертельных ошибок в настройке HTTP-запросов
- «GET вместо POST»
- Симптом: Сервер возвращает 405 Method Not Allowed
- Лечение: Всегда проверяйте документацию API
- «Потерянные заголовки»properties# Обязательные для большинства API: Accept: application/json Content-Type: application/json Authorization: Bearer ${token}
- «Таймауты-убийцы»
- Правило: Устанавливайте timeout = 2×SLА
- Пример: Для SLA 3 сек → timeout 6 сек
- «Кодировочный ад»propertiesContent-Encoding: gzip Use multipart/form-data for UTF-8 file names
- «Параметры в URL для POST»
- Плохо:
/submit?data=value
+ Body - Хорошо: Все данные либо в URL (GET), либо в Body (POST)
- Плохо:
- «Игнорирование кук»
- Решение: Добавьте HTTP Cookie Manager
- Бонус: Настройте политику cookie в jmeter.properties
- «Тест только для happy path»
- Обязательно проверяйте:
- 400 Bad Request
- 401 Unauthorized
- 500 Server Error
- Обязательно проверяйте:
Продвинутые техники для экспертов
Динамическая подстановка параметров
// В JSR223 PreProcessor: vars.put("timestamp", new Date().getTime()); vars.put("signature", org.apache.commons.codec.digest.DigestUtils.md5Hex("secret" + vars.get("timestamp")));
Работа с GraphQL
Body Data: { "query": "{ user(id: ${user_id}) { name email orders { id } } }" } Headers: Content-Type: application/json
Кастомные SSL-сертификаты
bash
# Запуск JMeter с доверенными сертификатами jmeter -Djavax.net.ssl.trustStore=/path/to/keystore.jks -Djavax.net.ssl.trustStorePassword=changeit
Чек-лист перед запуском теста
- Проверены HTTP-методы (GET/POST/PUT/DELETE)
- Добавлены все обязательные заголовки
- Параметры передаются в правильном месте (URL/Body)
- Установлены адекватные таймауты
- Есть обработка ошибок (Assertions)
- Настроен Cookie Manager (если нужно)
- Реализована корреляция динамических параметров
Инструменты для анализа результатов
- View Results Tree (только для отладки!)
- Response Time Graph (динамика изменения)
- JSON/HTML/XPath Assertions (валидация контента)
- JSR223 PostProcessor (кастомная обработка ответов)

Заключение: эволюция тестировщика
- Уровень 1: Ручное создание запросов
- Уровень 2: Параметризация из CSV
- Уровень 3: Динамическая генерация данных
- Уровень 4: Кастомные обработчики на Groovy
- Уровень 5: Полная имитация реального трафика
«Хороший нагрузочный тест — это не просто 1000 запросов в секунду. Это точная модель реального поведения пользователей, где каждый HTTP-запрос имеет смысл.» — Senior Performance Engineer
Профессиональный совет: Начните с простого GET-запроса, постепенно добавляя сложность. Каждый новый параметр — это дополнительное измерение в вашем тестировании.