Приручаємо jmeter

Приручаємо JMeter +24

  • 01.07.15 12:21 •
  • GlukKazan •
  • # 261483 •
  • Хабрахабр •
  • 3 •
  • 13468

- такий же як Forbes, тільки краще.

  • Web - HTTP, HTTPS
  • SOAP / REST
  • FTP
  • Database via JDBC
  • LDAP
  • Message-oriented middleware (MOM) via JMS
  • Mail - SMTP (S), POP3 (S) and IMAP (S)
  • MongoDB (NoSQL)
  • Native commands or shell scripts
  • TCP







Таким чином, якщо перед вами стоїть якась завдання автоматизації і все, що вам потрібно, перераховано в цьому списку, безперечно варто подумати про використання JMeter, перед тим як з головою зануритися в програмування на улюбленому Perl, Python або Java. Можливо, такий підхід дозволить заощадити дуже багато часу.


З цим все просто:

  1. Встановлюємо Java (якщо вона ще не встановлена)
  2. Викачуємо і розпаковуємо свіжу збірку JMeter
  3. Встановлюємо змінну середовища JMETER_BIN на каталог з виконуваними файлами JMeter (тільки для Windows)
  4. Запускаємо jmeter.bat або jmeter.sh (в залежності від операційної системи) з каталогу bin

Єдина проблема, з якою я зіткнувся на Windows, пов'язана з тим, що значення змінної JMETER_BIN має завершуватися символом прямого або зворотного слеша. Подробиці можна подивитися в запускається скрипт. Читання інструкції також не буде зайвим.

запис скрипта


Це, мабуть, сама ефектна можливість JMeter. Вона вже описувалася раніше. але я повторюся, оскільки в тій статті йшлося про вже трохи застарілої версії. JMeter можна запустити в режимі proxy, таким чином, щоб весь HTTP-трафік проходив через нього. Всі подробиці взаємодії будуть автоматично записуватися в обрану Thread Group або Recording Controller. Для додавання нових вузлів в дерево, просто натискаємо на праву кнопку миші і вибираємо необхідний тип з меню, що випадає:

Приручаємо jmeter

Приручаємо jmeter


Я виділив на малюнку настройки, на які слід звернути увагу. Порт можливо доведеться змінити, якщо на 8080 вже щось піднято. У складних випадках, в Test Plan доведеться додати HTTP Cookie Manager і HTTP Authorization Manager. Після натискання кнопки Start, йдемо в настройки улюбленого браузера:

Приручаємо jmeter


Взаємодія з Яндекс, раптово, виявляється дуже непростим:

Приручаємо jmeter

змінні


Для чогось більш-менш серйозного, нам буде потрібно можливість параметризації. Для прикладу, припустимо, що нам потрібно задати таймаут, протягом яких JMeter чекатиме відповіді сервера. Забивати їх заново в кожен HTTP Request. при будь-якій зміні, було б занадто утомливо. Заодно визначимо настройки HTTP Proxy (якщо він використовується):

Приручаємо jmeter






Приручаємо jmeter


Порожні значення змінних проблемою не є. У відповідні налаштування будуть підставлені порожні рядки, як того і потрібна, в разі якщо HTTP Proxy не використовується. Можна піти ще далі і справді розмістити всі HTTP-налаштування в одному місці:

Приручаємо jmeter

Приручаємо jmeter

Приручаємо jmeter


Всі змінні як на долоні. Зручно.

JDBC Request


Цей Sampler відкриває нам доступ в будь-яку базу даних, яка підтримує протокол JDBC. Для початку, додамо в Test Plan конфігураційний елемент з настройками підключення до сервера БД (JDBC Connection Configuration):

Приручаємо jmeter


Крім власне установки для з'єднання із БД, тут важливо заповнити поле Variable Name. Це ім'я буде використовуватися в JDBC Request (Sampler) для доступу до пулу сесій:

Приручаємо jmeter


Якщо вам цікаві результати select-а, доведеться заповнити Variable Names. Сам JMeter парсити SQL-запити на предмет імен стовпців не вміє. Можна перераховувати імена стовпців через кому і пропускати стовпці, не даючи їм імені. Вставляємо Debug Sampler і дивимося, що вийшло:

Приручаємо jmeter

Приручаємо jmeter

Приручаємо jmeter

Регулярні вирази


Тепер, результати звернень до Web-серверів хотілося б проаналізувати. Для цього, нам надана вся міць регулярних виразів. Regular Expression Extractor можна знайти в Post Processors. Додамо його в HTTP Request і сконфігуріруем:

Приручаємо jmeter


Тут, нас цікавить тільки код відповіді по HTTP (але, по ілюстрації видно, що можна обробляти і вміст відповіді). Будемо витягати ланцюжок цифр (Regular Expression) і поміщати результат застосування шаблону (Template) в змінну http_result (Reference Name):

Приручаємо jmeter


Як і очікувалося, отримуємо 200. Заодно, можна бачити, яким чином здійснюється захоплення в змінні регулярним виразом.

Щось там всередині


Тепер, припустимо, що нас цікавить час, протягом якого виконувався HTTP-запит. І цікавить воно нас не просто для статистики, а ми його хочемо якось використовувати в сценарії (наприклад скласти в БД). З цим завданням допоможе впоратися BeanShell. Конкретно, ми використовуємо його Pre - і PostProcessor -и.

Приручаємо jmeter


У першому будемо отримувати timestamp:


А в другому, отримувати з його допомогою тимчасову затримку:


Загалом, це теж працює:

Приручаємо jmeter


Але тут слід зробити важливе зауваження. Оскільки, зараз, я займаюся не навантажувальним тестуванням, продуктивність цієї конструкції для мене не дуже важлива. Якщо у вашому випадку це не так, варто ознайомитися з наступною статтею.


Якби не було цієї можливості, не варто було б і вся ця розмова заводити. У разі навантажувального тестування, сценарій можна запускати з GUI, немає проблем. Але якщо нас цікавить автоматизація, необхідно вміти запускати його мовчки (наприклад по cron -у). Зрозуміло така можливість теж є:


Зберігаємо сценарій в файл з розширенням jmx (всередині це XML) і запускаємо цю команду. Сценарій відпрацьовує без запуску GUI і заодно пише результати своєї роботи в лог. Все просто і зручно.







Схожі статті