Разработка
Моделирование
Запуск

3. СОЗДАНИЕ ТЕСТОВ НА JMETER
Инструменты
JMeter
•   Инструмент нагрузочного тестирования
•   Написан на Java (кроссплатформенный)
•   Бесплатный
•   Интерфейс
•   Настраиваемый
JMeter - возможности
• Эмуляция одновременной работы
  пользователей
• Распределенная нагрузка
• Снятие метрик

         JMeter – это не браузер!
Цель на сегодня
• Обучить пользоваться функционалом
  JMeter
Запуск
• Java
  – (http://www.java.com)
• Jmeter 2.6
  – (http://jmeter.apache.org/)
• Запускаем jmeter.bat/.sh
Интерфейс
План практики
• Разработка сценариев
• Моделирование нагрузки
• Запуск тестов
Разработка сценариев
•   Запись и воспроизведение
•   HTTP запрос
•   Проверка соответствия
•   Работа с переменными
•   Авторизация
•   Отладка
Объект тестирования
• Сайт на WordPress (3.3.1)
• Запущен на Denwer
  – Apache 2.2.4
  – PHP 5.2.12
  – MySQL 5.0.51a
Запись и воспроизведение
WorkBench  Add Non Test Elements 
  HTTP Proxy Server
Выполняем тест в браузере, затем
  воспроизводим его в JMeter
Группы пользователей
Test Plan  Threads (Users)  Thread Group
• Number of Threads - количество
   пользователей;
• Ramp-Up Period – время, за которое начнут
   работу все пользователи;
• Loop Count – количество циклов для
   каждого пользователя.
Поддерживаемые
          протоколы
•   HTTP
•   FTP
•   JDBC
•   Java
•   LDAP
•   SOAP
•   SMTP
HTTP запрос по умолчанию
Add Config Element  HTTP Requesе
  Defaults
• IP и Port сервера
• Таймауты
• Кодировка
Проверка соответствия
Add  Assertons  Response Assertion
• гибкие настройки
• поддержка регулярных выражений

Просмотр результатов проверки:
Add  Listener  Assertion Results
Простые отчеты
Add Listener 
  Aggregate Graph    Информация:
  Aggregate Report   - о выполнении запросов
                     - о времени отклика
  Summary Report
Работа с переменными
${param} – это переменная

Add  Config Element  User Defined
  Variables – хранилище переменных
Работа с переменными
Add  Config Element  Counter – счетчик
• начальное значение
• шаг
• максимум
• формат
Работа с переменными
Add  Config Element  CSV Data Set Config –
   чтение из файла
• путь к файлу
• имена переменных
• разделитель
• настройки
Работа с переменными
Add  Post Processors  Regular Expression
  Extractor – разбор HTTP ответа
• используем регулярные выражения
  (движок Apach Jakarta ORO)
Авторизация
• Add  Connfig Element  HTTP Cookie
  Manager – работа с Cookie
• Add  Logic Controller  Once Only
  Controller – авторизуемся только 1 раз
                     или
• Add  Connfig Element  HTTP Header
  Manager – передаем Cookie в заголовке
  запроса
Отладка
Add  Listener  View Results Tree –
  отображение данных о запросе:
• Sampler result – заголовки ответа
• Request – запрос
• Response data – тело ответа
Отладка
Add  Sampler  Debug Sampler –
  отображает:
• JMeter properties – настройки JMeter
• JMeter variables – переменные JMeter
• System properties – настройки системы

Используется совместно с View Results Tree
Моделирование нагрузки
• Плагины
• Управление группами пользователей
• Снятие метрик
Плагины
Дополняем стандартный функционал
 - (http://code.google.com/p/jmeter-plugins/)

• распаковываем JMeterPlugins.jar в libext
Управление группами
      пользователей
Test Plan  Threads (Users) 
   jp@gc - Stepping Thread Group
• пошаговое увеличение количества
  пользователей
Управление группами
      пользователей
Test Plan  Threads (Users) 
   jp@gc - Ultimate Thread Group
• гибкая настройка количества пользователей
Снятие метрик
Add  Listener 
   jp@gc - Active Threads Over Time
• графическое отображение активных
  пользователей
Снятие метрик
Add  Listener 
    jp@gc - Response Times Over Time
• графическое отображение времени отклика
Снятие метрик
Add  Listener 
    jp@gc - Transactions per Second
• графическое отображение количества
  запросов в секунду
Снятие метрик
Add  Listener 
    jp@gc - Response Times vs Threads
• графическое отображение времени отклика
  в зависимости от количества активных
  пользователей
Метрики
     производительности
PerfMonAgent – устанавливаем на сервер
   агента
WIN - /startAgent.bat
UNIX - ./startAgent.sh --udp-port 4443 --tcp-
  port 3450
Метрики
    производительности
Add  Listener 
   jp@gc - PerfMon Metrics Collector
• CPU
• Memory
• Disks
• Network
Запуск тестов
• Распределенное тестирование
• Запуск из командной строки
Распределенное
       тестирование
Master – машина, на
 которой запущен JMeter

Slaves – машины с
  запущенным jmeter-
  server, которые
  получают команды от
  master и отправляют
  запросы
Распределенное
        тестирование
1) jmeter-server.bat



2) jmeter.properties   3)
Запуск из командной
       строки
Запуск из командной
           строки
• Ключи
  -n отключаем интерфейс
  -t путь к файлу сценария
  -l путь к файлу лога
  -J указываем настройки сценария
JMeter. Что дальше?
•   Непрерывная интеграция
•   Функциональное тестирование
•   Тестирование безопасности
•   …
Докладчик

Кожухов Илья

• k.i.a88@mail.ru
• Skype ra_007
СПАСИБО ЗА ВНИМАНИЕ

Нагрузочное тестирование JMeter Кожухов