Load Testing (Тестування Продуктивності й Навантаження веб-додатків) — на перший погляд QA початківцям, видається неймовірно складним завданням. Можливість вибору серед великої кількості інструментів, ще дужче загострює нерозуміння.
Отож-бо, який framework / інструмент / бібліотеку найкраще застосовувати? Обрати JMeter, Artillery, Gatling, Locust? Як завжди, відповідь така — залежить від контексту завдань проекту.
Для цього слід аналізувати чого хочемо досягти навантажувальним тестуванням?
- Виміряти за якої кількості одночасних користувачів здатна коректно працювати система.
- Виміряти характеристики відповідей (requests) цієї кількості користувачів.
- Спостереження за поведінкою користувачів і спроби передбачення її.
- Перевірка потенційних помилок в API.
Чому вартує обрати саме Gatling.io?
- У цього Performance Tools — хороші документація і підтримка.
- Окрім корпоративної у Gatling, є безкоштовна версія.
- З Gatling можна працювати самостійно, а можна в парі з іншими популярними інструментами скажімо Blazemeter, офіційно через плагіни підтримуються SBT, Maven, Jenkins, VTD XML, Bamboo, TeamCity, окрім того є ще third party plugins, на CI інтегрується із Docker.
- І останнє, але не мало важливе: архітектура Гатлінга асинхронна. Така архітектура дозволяє реалізовувати віртуальних користувачів у вигляді повідомлень, замість того, щоб виводити потоки, а значить робить їх дуже дешевими. Таким чином, система, що міститиме декілька одночасно працюючих віртуальних користувачів, не буде проблемою.
Якщо Вас зацікавив цей інструмент, запрошуємо на Воркшоп у травні: Попередня реєстрація обов’язкова тут: https://forms.gle/br8PbQKQH3kd4pjr6
Далі у цьому дописі ми працюватимемо з безкоштовною версією Gatling. Покажемо, що “не такий страшний чорт як його малюють”. Разом паралельно і покроково проведемо від А до Я, дехто свій перший, Performance Load Test.
LET’S START Gatling !!!
Перший крок: Традиційно розпочинається з інсталювання інструменту самого інструменту. Переходимо на офіційний сайт https://gatling.io у меню open-soure verion натискаємо чарівну кнопку Download.
Розархівовуємо отриману .zip -ку у потрібну папку.
Другий крок: Необхідно внести деякі системні налаштування для користувачів Windows:
Для цього почергово заходимо у наступні меню: My Computer => Properties => Advanced system settings=> Advanced tab => Environment Variables
І додаємо змінну у віконечка натискаючи кнопки New:
І таким чином у віконце знизу:
Зберігаємо, натискаючи Ок.
Третій крок: Інсталюємо й налаштовуємо середовище Java
Аналогічно, як із іншим популярним інструментом навантажувального тестуванн JMeter -ом. Gatling потребує інсталювання Java -и, і навіть варто висловитись якось по-особливому…. думається, тимасово поки що….. у майбутньому щось зміниться.
Gatling працює із 8 -мою версією Java -и, на 13 -тій, 11 LTS не запускається. Знаить на машині, яка виконує навантажувальні тести потрібен JDK (мінімальної версії 1.8). Переходимо за наступним лінком Java SE Downloads on Oracle
УВАГА: тут не “попадіться”, завантажуйте як на картинці, те що потрібне:
Далі, погоджуємося із ліцензією, обираємо потрібну Операційну Систему…..інсталюємо, у мене це Windows 10 -ка:
Обережно, потрібно обрати наступне меню перед тим, натиснути Далі:
І ось так:
Повинні отримати оголошення успішної інсталяції.
Знову заходимо по шляху меню: My Computer/This PC => Properties => Advanced system settings звіряємо, бо деякі налаштування прописуютьс автоматино і вносимо наступні налаштування вже з Java середовищем пов’язані:
Змінні вносяться у віконечках таким чином взагальному:
Якщо чогось не розумієте, чи не виходить запустити успішно тестове середовище, то ці дрібні налаштування можете звірити за наступними посиланнями дописів, мені особисто вони допомогли свого часу:
- How to Install Gatling on Windows
- GATLING Performance Testing — дуже прикольний детальний відео курс
Для перевірки успішності Ваших маніпуляцій Java+ Gatling набираємо у Терміналі або cmd команду перевірки версії Java. Якщо Ви ще з ними не дуже дружите, як працювати з командною стрічкою пропонумо ознайомитися у дописі: Що Таке Командна Стрічка, Кілька Прикладів Як Із Нею Працювати
Має бути ось так.
А ось так у мене за не тієї версії Java що треба, виникали помилки.
Четвертий крок: Перевіряємо сам Gatling і пробуємо його запустити.
Для цього заходимо у папочку bin (для прикладу по шляху C:\gatling-charts-highcharts-bundle-2.3.1\bin ) і двічі натискаємо на файлі recorder.bat і у нас з’являється дефолтний record scenarios
П’ятий крок: Щоб проранити власний скрипт заходимо у папку gatling.sh там обираємо папку user-files , а далі по шляху cd /user-files/simulations/computerdatabase у папці, де є 5 фефолтних тестів створюємо файл із нашим кастомним тестом. До прикладу ми його називаємо medium-test.scala як тут за допомогою звичайних редакторів vim, Блокнота або редакторів коду.
Для проби пера давайте поки скопіпастимо туди ось цей код:
package computerdatabase import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.duration._ import scala.util.Random class mediumtest extends Simulation { val httpProtocol = http .baseUrl("http://medium.com") .acceptHeader("application/json") .acceptLanguageHeader("en;q=1.0,de-AT;q=0.9") .acceptEncodingHeader("gzip;q=1.0,compress;q=0.5") .userAgentHeader("Safari") val scn = scenario("Simple Get Request") .exec(http("Get HTTP") .get("/")) setUp(scn.inject(atOnceUsers(100)).protocols(httpProtocol)) }
Для виконання тесту двічі натискаємо на Gatling.bat файл або з командної стрічки обираємо просто цифрою наш тест. Тест раниться і звіт у консолі виглядає наступним чином:
А якщо зайдемо у папку
то тут будуть лежати звіти інтерпретовані у гарненькому HTML -форматі.
Ось такі як на малюнку коли ми їх запустимо у браузері.
Також наші створені Gatling scala скрипти ми можемо ранити на зручній SaaS платформі Blazemeter.
Підсумок:
Якщо Вам вдалося відтворити скрипт покроково, і все успішно — у Вас значить тоді чудовий апетит до тестування.
Виникають труднощі або запитання, задавайте їх тут у коментарях. Раді будемо відповісти на них і допомогти Вам.