Hacking Saturday: JMeter Workshop

Вітаю, шановні читачі. Хочу трішки розповісти вам про декілька подій, які відбулися нещодавно. Все почалося з того, що до мене звернулися колеги із відділу QA. Перед ними постала задача провести тести продуктивності однієї із систем, над розробкою якої наша компанія працює (чи працювала). Надто не розпитував, бо це все лірика і головне, що людям потрібна допомога і я можу стати в пригоді, оскільки років 2-3 тому активно працював саме із одним із програмних продуктів для тестування продуктивності – JMeter. На той час цей продукт використовували:

для генерації даних, які потім використовували для масштабних тестів продуктивності з допомогою іншого enterprise продукту – HP Load Runner;

– для перевірки певного функціоналу системи (експорт даних у формат xls);

– для невеликих performance тестів.

Із поставленими задачами JMeter чудово справився.

Що ж таке JMeter та що він може? Це Open Source Java application, що:

– доступний для основних платформ – Windows, Linux, MacOS;

– може записувати сценарії тестів, базуючись на діях користувача, використовуючи вбудований proxy-server та звичайний браузер;

– містить безліч компонентів для підключення до різноманітних баз даних та виконання запитів для отримання або зміни даних, тестування продуктивності баз даних, тощо;

– може відслідковувати, за який час була одержана відповідь на запит та записувати цю інформацію у файл;

– може обробляти отримані від сервера дані, використовувати їх як вхідні параметри для інших запитів;

– може використовувати сторонні Java-бібліотеки.

Як бачите, JMeter доволі приваблива річ. Також великим плюсом JMeter є те, що сценарії тестів можна сформувати окремо, не знаючи внутрішньої архітектури системи, а потім запустити як автоматизовані тести на етапі зборки проекту (maven plugin) або як частину Jenkins build. Таким чином, подібні тестові сценарії може підготувати QA інженер. Це допоможе йому автоматизувати значну частину роботи, полегшить передачу знань до іншого члена команди, забезпечить збереження сценаріїв та їх версійність тощо.

Звичайно, у JMeter є й недоліки. Зокрема, він не може тестувати JavaScript. Він просто фіксує, за який час отримується відповідь на http-запит від сервера.

Досить про софт. Давайте перейдемо безпосередньо до нашого суботнього workshop-у :). Принцип роботи був наступний: я роблю певні дії для того, щоб підготувати сценарії для тестів, аудиторія повторює ці дії та відразу ж задає питання по мірі їх виникнення.

Зізнаюсь, такий формат роботи для мене був новинкою. Як тестову платформу ми вибрали один із внутрішніх проектів. Я навмисно не проходив весь шлях підготовки сценарію, оскільки хотілося, щоб аудиторія не просто отримувала відповіді, але й бачила принципи вирішення/обходу проблем, алгоритм пошуку відповідей тощо.

Також для мене стали сюрпризом зміни, які розробники JMeter внесли в систему за той час, відколи я з ним не працював. Уявіть собі: вівторок, я думаю зараз сяду, швиденько все пригадаю і приготуюсь до суботнього воркшопу. Ага :). Відкриваю JMeter, а це нова програма :). Довелося прискорено вивчати нові можливості продукту. Доречі, вони таки сподобались. Також швидкість роботи виявилась значно нижчою від запланованої: хотілося охопити якомога більше важливих деталей, розповісти про “філософію” цього продукту, щоб аудиторія не просто могла повторити певні дії, а й могла шукати та знаходити необхідну інформацію без сторонньої допомоги тощо.
Тепер про результати. Більша частина воркшопу була записана у вигляді скрінкасту для внутрішнього використання. Також було створено git-репозиторій, де планується зберегти для прикладу сценарій для тестування продуктивності однієї із внутрішніх систем. Особисто мені було цікаво ще раз попрацювати із цією системою та просто в міру своїх сил допомогти колегам. Сподіваюсь, колеги також отримали від наших зустрічей користь.

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

Додаткові джерела інформації: 

http://jmeter.apache.org/ – офіційний сайт проекту JMeter

https://www.blazemeter.com/ – сайт проекту, який служить для запуску тестових сценаріїв JMeter та деяких інших продуктів у “хмарі”. Містить багато прикладів використання JMeter.

З найкращими побажаннями. Ваш колега Микола Кудин :).

Post A Reply