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 середовищем пов’язані:

Змінні вносяться у віконечках таким чином взагальному:

Якщо чогось не розумієте, чи не виходить запустити успішно тестове середовище, то ці дрібні налаштування можете звірити за наступними посиланнями дописів, мені особисто вони допомогли свого часу:

Для перевірки успішності Ваших маніпуляцій 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.

Підсумок:

Якщо Вам вдалося відтворити скрипт покроково, і все успішно — у Вас значить тоді чудовий апетит до тестування.

Виникають труднощі або запитання, задавайте їх тут у коментарях. Раді будемо відповісти на них і допомогти Вам.

Related posts

Leave a Comment

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.