gatling tutorial getting started with gatling load testing
Цей посібник із відео Gatling містить вичерпний огляд Gatling, включаючи особливості, кроки встановлення та приклади використання реєстратора моделювання Gatling:
Gatling - це тестова система з відкритим кодом, заснована на Scala. У наш час він набуває великої популярності завдяки більш ніж 3 мільйонам завантажень за останні 3 роки.
Він доступний як з відкритим кодом, так і як корпоративний варіант Gatling Frontline завдяки більшій інтеграції та підтримці команди Gatling. Але над усіма практичними справами можна працювати, використовуючи безкоштовну версію спільноти Gatling із відкритим кодом.
Що ви дізнаєтесь:
Відео-підручник Gatling
Давайте подивимось кроки, необхідні для початку роботи з Gatling. Ми також розглянемо деякі важливі особливості Gatling як частину цього посібника.
Ось відеоурок про вступ до Gatling:
Встановлення
Гатлінг можна встановити двома різними способами. Це можна пояснити наступним чином:
# 1) Використовуючи Gatling як самостійний інструмент, ви можете просто встановити інсталятор / додаток, використовуючи офіційний Gatling веб-сайт та дотримуйтесь інструкцій із встановлення.
Зверніть увагу, що встановлена папка zip містить як оболонку, так і пакетні файли, що робить Gatling придатним для використання в різних операційних системах, таких як Windows, MacOS, Linux / Unix тощо.
Інсталятор - це не що інше, як реєстратор сценаріїв Gatling на основі Java, який реєструє дії користувача через браузер в інструменті і який потім може бути перетворений у сценарій або сценарій, який потрібно завантажити та протестувати. Це ми детально побачимо у наступних розділах.
# два) Інший спосіб встановити / використовувати Gatling - це використовувати його як пакет через Maven / Gradle або через інструменти побудови Scala.
Важливим моментом тут є те, що всі сценарії Gatling базуються на Scala, отже, створення проекту на основі Scala може використовувати бібліотеку Gatling, яку можна імпортувати будь-якими інструментами збірки, такими як Maven / Gradle або SBT.
Особливості Гатлінга
Вони такі:
# 1) Асинхронна архітектура та легкі нитки
Gatling має вдосконалену архітектуру, що базується на наборі інструментів Akka, і є повністю асинхронною. Це дає йому перевагу в порівнянні з іншими інструментами тестування продуктивності, такими як JMeter, де кожен потік відповідає одному користувачеві.
Тут один потік може імітувати декількох користувачів, оскільки він має архітектуру обміну повідомленнями за допомогою моделі Actor.
У двох словах, тест Gatling може обробляти кількість одночасних користувачів на машині порівняно з іншими інструментами, такими як Jmeter, і, отже, призводить до значної економії процесора та оперативної пам'яті.
Рекомендована література => Акторна модель та асинхронна архітектура Гатлінга
# 2) Доменна мова робить тести читабельними
Сценарії Gatling написані на Scala та мають дружній DSL, що робить сценарії дуже читабельними та менш схильними до помилок. Докладніше про Gatling DSL див тут .
# 3) Підтримка агностичної підтримки протоколу
Gatling підтримує широкий спектр протоколів, включаючи HTTP, HTTPS та веб-сокети. Він також має розширення для тестування навантаження SQL запитів / сценаріїв.
# 4) Звітність та твердження
Gatling надає підтримку для створення детальних HTML-звітів для сценаріїв, які виконуються, а також має можливості застосовувати твердження до окремих запитів у сценаріях - Наприклад, Час відповіді, перевірка вмісту JSON тощо.
# 5) Дружній реєстратор тестів на основі графічного інтерфейсу
Gatling поставляється з простим у використанні графічним тестовим рекордером, який може генерувати сценарій моделювання, записуючи активність користувача або дії користувача у веб-браузері. Створені сценарії - це сценарії на основі Scala, які можуть бути виконані в майбутньому і можуть бути змінені відповідно до вимог.
Заявка, що перевіряється, та запис зразків сценарію
Для створення зразкового моделювання ми будемо використовувати Офіційно наданий розміщений додаток Gatling
Ми використовуватимемо симулятор запису Gatling, щоб розпочати створення навантаження та тестування продуктивності. Перш ніж йти далі, давайте обговоримо сценарій, коли ми хочемо завантажити тест.
Сценарій - це варіант використання, який ми намагаємось завантажити. Що це, це по суті означає, що ми хочемо імітувати дії користувача у сценарії або наборі кроків, які потрібно перевірити.
Наприклад, припустимо, користувач отримує доступ до будь-якого веб-сайту електронної комерції, такого як Amazon.com, і шукає товар, додає його в кошик і, нарешті, оплачує з інформацією про платіж.
Вся ця дія користувача - це один сценарій, який містить окремі кроки, наприклад
- Перехід на веб-сайт Amazon.com.
- Чекаємо завантаження сторінки.
- Пошук товару за допомогою панелі пошуку товару.
- Додавання товару в кошик.
- Перехід до кошика та замовлення товару.
- Здійснення платежу.
Для того, щоб завантажити тест цього повного сценарію, з точки зору системи чи сервера, ми повинні розуміти, що це не що інше, як колекція або серія викликів API, які виконуються на серверний сервер, і саме цього ми хочемо в тесті продуктивності.
Для цього прикладу ми використаємо наведений нижче сценарій для розміщеного додатка Gatling:
# 1) Перейдіть до Програма, розміщена в Gatling .
# два) Клацніть на “Додати новий комп’ютер”.
# 3) Виберіть ім'я комп'ютера як Apple, а назву компанії - 'Apple Inc' зі спадного меню, як показано на зображенні нижче.
# 4) Натисніть «Створити цей комп’ютер» після введення деталей.
Налаштуйте Gatling Recorder та запишіть перший сценарій
У цьому розділі ми обговоримо, як налаштувати реєстратор тесту Гатлінга для створення імітації сценарію, який ми обговорювали в попередньому розділі.
Ми будемо використовувати симулятор запису Gatling, який має дуже просту форму, HTTP-проксі - ви повинні бути знайомі з іншими інструментами запису HTTP, такими як Fiddler або chrome Http-проксі тощо. Отже, реєстратор Gatling схожий на додаткові функції перетворення запис у сценарій тестового моделювання.
Тож давайте спочатку подивимося, як налаштувати рекордер Gatling:
# 1) Після встановлення ZIP-папки Gatling просто розпакуйте папку до місця, де потрібно встановити Gatling.
питання для співбесіди з відповідями у форматі pdf
# два) Після цього кроку нам потрібно встановити 2 змінні середовища з іменем - GATLING_HOME (для домашнього каталогу Gatling) та GATLING_CONF (для розташування папки конфігурації Gatling).
Залежно від типу ОС (наприклад, Windows, Mac або Linux), встановіть ці змінні середовища зі значеннями нижче:
GATLING_HOME = {gatling-install-directory}
Приклад:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {gatling-install-directory} / conf
Приклад:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
Як тільки змінні встановлені для перевірки, ви можете просто натиснути на терміналі команду - експорт | ручка “GATLING” і на виході повинні відображатися 2 змінні середовища, які ми щойно встановили.
# 3) Як тільки ці змінні середовища встановлені, нам потрібно запустити наш реєстратор сценаріїв Gatling. Для ОС на базі Windows існує пакетний файл, що надається з установкою Gatling, а для ОС на базі Linux / MacOS - файл оболонки.
Нижче наведена файлова структура папки bin:
# 4) Отже, залежно від типу ОС, ми можемо вибрати тип файлу для запуску для запущеного записуючого пристрою. Зверніть увагу, що тут ми будемо використовувати 2 файли:
- Файл Gatling.sh / Gatling.bat - для запуску сценарію моделювання.
- Файл Recorder.sh / recorder.bat - запустити / відкрити реєстратор моделювання Gatling.
# 5) Давайте запустимо сценарій рекордера, щоб відкрити рекордер Gatling. Використовуйте термінал Mac / Linux для запуску сценарію оболонки (або безпосередньо запустіть пакетний файл Windows).
. /$GATLING_HOME/bin/recorder.sh
# 6) Якщо змінні середовища встановлені належним чином, то вищевказана команда повинна відкрити реєстратор сценаріїв Gatling.
# 7) Зверніть увагу на порт Http / https у диктофоні (за замовчуванням вибрано 8000 або 8080) - це порт, де налаштовано проксі-прослуховувач трафіку Http Gatling. Ми можемо змінити цей номер порту відповідно до нашої зручності (або ми можемо продовжити зі значеннями за замовчуванням).
безкоштовне програмне забезпечення для копіювання DVD для
# 8) Тепер давайте налаштуємо chrome-проксі для прослуховування цього порту - тобто, по суті, ми хочемо направляти наш Http-трафік з браузера через цей проксі-прослуховувач або диктофон.
Слідуйте за цим посилання налаштувати проксі-сервер на chrome для різних ОС.
# 9) Після налаштування порту ми виконаємо наш сценарій на Програма, розміщена в Gatling.
# 10) Перед початком виконання сценарію нам спочатку потрібно налаштувати ім'я пакета та ім'я класу для результуючого тестового сценарію, а потім запустити проксі-прослуховувач, просто натиснувши кнопку «Пуск» у програмі запису сценаріїв.
# одинадцять) Як тільки проксі-рекордер запускається, з'являється нове вікно, і по суті воно фіксує всі запити, що запускаються, коли сценарій виконується у браузері.
# 12) Перейдіть до Програма, розміщена в Gatling у браузері.
Якщо ви бачите, як запит записано у вікні диктофона, це означає, що налаштування проксі-сервера для браузера правильні, і Gatling Recorder тепер може записувати запити відповідно до тестового сценарію, який виконується (якщо не повернутися до кроку # 7, щоб виправити конфігурацію проксі-сервера для браузера / системи).
# 13) Тепер, як тільки ми переконаємось, що налаштування працює нормально, натисніть на «Очистити», щоб видалити все з диктофона і розпочати виконання сценарію, як зазначено нижче:
- Перейдіть до Програма, розміщена в Gatling
- Клацніть на кнопку «Додати новий комп’ютер». Переконайтеся, що ви перейшли на нову комп’ютерну форму з URL-адресою браузера як http://computer-database.gatling.io/computers/new
- Тепер заповніть значення у формі з - Назва комп'ютера, як Apple, і компанія як 'Apple inc', а також зі спадного меню.
- Клацніть на 'Створити цей комп'ютер', і ви отримаєте перенаправлення на домашню сторінку
- Це весь сценарій, який ми хочемо виконати та створити сценарій автоматизації за допомогою реєстратора сценаріїв Gatling. Після виконання вищевказаних кроків диктофон повинен зафіксувати всі зроблені HTTP-дзвінки і виглядати, як показано нижче.
- Зверніть увагу, що в записаному сценарії є також кілька команд “PAUSE”. Це не що інше, як 'час обдумування', який записувач записує, щоб імітувати дії користувача - тобто час, що пройшов між запитами. Ці значення можна налаштувати / змінити після виконання скрипта, залежно від реальних недоліків.
# 14) Для того, щоб завершити створення сценарію, натисніть «Зупинити та зберегти» у вікні диктофона.
# п'ятнадцять) Сценарій моделювання повинен бути створений у каталозі або папці моделювання, який відображається на екрані конфігурації рекордера Gatling.
Розуміння сценарію моделювання
Після створення сценарію для виконаного сценарію перейдіть до папки моделювання та відкрийте сценарій.
Зверніть увагу, що сценарій буде створений як той самий структурований пакет, який був вказаний перед запуском диктофона - у нашому випадку це буде com.learn.gatling і назва класу буде “AddProduct”.
Давайте відкриємо файл AddProduct.scala і спробуємо переглянути різні розділи сценарію.
Це можна пояснити наступним чином:
# 1) Налаштування конфігурації :тобто httpProtocol та заголовки - У цьому розділі виконано загальну конфігурацію даних для сценарію, таких як:
- Тип протоколу - Http або https,
- Інші речі, такі як baseUrl, які будуть використовуватися в наступних запитах.
- Інформація про заголовки - загальна інформація про заголовки, а також заголовки, що надсилаються з окремими запитами. Зверніться до header_0 та headers_2 у фрагменті коду нижче:
val httpProtocol = http .baseUrl('http://computer-database.gatling.io') .inferHtmlResources(BlackList('''.*.js''', '''.*.css''', '''.*.gif''', '''.*.jpeg''', '''.*.jpg''', '''.*.ico''', '''.*.woff''', '''.*.woff2''', '''.*.(t|o)tf''', '''.*.png''', '''.*detectportal.firefox.com.*'''), WhiteList()) .acceptHeader ('text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, application/signed-exchange;v=b3') .acceptEncodingHeader('gzip, deflate') .acceptLanguageHeader('en-GB,en-US;q=0.9,en;q=0.8') .upgradeInsecureRequestsHeader('1') .userAgentHeader('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36') val headers_0 = Map('Proxy-Connection' -> 'keep-alive') val headers_2 = Map( 'Origin' -> 'http://computer-database.gatling.io', 'Proxy-Connection' -> 'keep-alive')
# 2) Визначення сценарію: Він містить фактичний сценарій та порядок запитів, які потрібно виконати, щоб повторно створити сценарій, який працював у вікні браузера.
Також важливим моментом тут є те, що ми щойно згадали відносну URL-адресу для запитів, а не повну URL-адресу. Це тому, що ми будемо використовувати Налаштування httpProtocol ми обговорювали в пункті №1, де визначаються дані конфігурації сценарію.
val scn = scenario('AddProduct') .exec(http('request_0') .get('/computers') .headers(headers_0) .resources(http('request_1') .get('/computers/new') .headers(headers_0))) .pause(4) .exec(http('request_2') .post('/computers') .headers(headers_2) .formParam('name', 'apple') .formParam('introduced', '') .formParam('discontinued', '') .formParam('company', '1'))
# 3) Виконання сценарію: Цей розділ є найважливішим розділом, який містить кроки налаштування сценарію.
Конфігурація ін’єкції тут - це кількість користувачів / потоків або іншими словами, навантаження, з якою ми хочемо перевірити цей сценарій.
Значення за замовчуванням для кількості користувачів завжди 1, і це можна змінити до виконання сценарію.
Крім того, зауважте, що ми також використовуємо визначення httpProtocol, яке ми обговорювали в пункті №1, яке містить усі основні конфігурації для сценарію, який потрібно виконати.
setUp (scn.inject (atOnceUsers (1))). протоколи (httpProtocol)
У наступному підручнику ми розглянемо докладнішу інформацію про конфігурацію введення та завантаження.
Виконання тесту за допомогою сценарію моделювання
Тепер ми побачимо, як виконати сценарій за допомогою цього сценарію моделювання, створеного за допомогою реєстратора. Отриманий скрипт, який створюється, насправді є класом на основі Scala, який містить деталі щодо сценарію, який було виконано через браузер.
Ось відеоурок для виконання сценарію Gatling:
Інсталяція Gatling постачається зі сценарієм оболонки (для користувачів Windows це пакетний сценарій), який може бути використаний для виконання цього моделювання.
Будь ласка, виконайте наведені нижче дії, щоб виконати створену імітацію:
# 1) Перейдіть до папки bin інсталяції Gatling або просто перейдіть до - $ GATLING_HOME / bin
# два) Виконайте файл Gatling.sh для ОС Linux / Mac (або файл Gatling.bat для користувачів Windows).
# 3) У випадку, якщо в папці симуляції є кілька файлів скриптів, скрипт запропонує користувачеві вибрати симуляцію, яку користувач хоче запустити (щоб імітувати це, створіть один і той же сценарій у різних пакетах, і коли запущений сценарій Gatling, ви можете переконайтеся, що він відображає 2 різні сценарії).
# 4) Вибрано моделювання (або встановлено за замовчуванням для моделювання, яке присутнє в папці, якщо доступний лише один сценарій моделювання).
# 5) Тепер сценарій пропонує додати необов’язковий опис запуску. Ви можете просто проігнорувати це і натиснути клавішу Enter, щоб розпочати виконання моделювання.
# 6) Поки моделювання виконується, ви можете побачити звіти про виконання, що друкуються на терміналі, а параметри, такі як час відповіді, загальний обсяг запитів, успіх / помилка тощо, відображатимуть підсумований вигляд після завершення виконання сценарію.
# 7) Gatling також генерує докладний звіт на основі HTML в кінці завершення виконання сценарію, який містить безліч різних точок даних щодо виконаного сценарію.
Ми розглянемо деталі сформованого звіту в наступному навчальному посібнику.
Переваги використання Гатлінга
Gatling надає безліч функціональних можливостей, щоб створити хороший набір тестів автоматизації продуктивності, використовуючи широкий DSL Gatling, а також зростаючу підтримку спільноти для допомоги та отримання відповідей на запити.
Тут важливо зауважити, що на відміну від інших інструментів, таких як JMeter, Gatling дійсно має круту криву навчання, але замість цього він надає багато можливостей програмування для створення надійного та повноцінного набору сценаріїв симуляції тестування продуктивності та навантаження.
Деякі з цих переваг такі:
- Він легкий і дозволяє використовувати один потік для кількох запитів, на відміну від більшості інших інструментів, де потік прирівнюється до користувача.
- Використання одного потоку для декількох запитів дозволяє Gatling масштабувати більше і генерувати більше навантаження навіть на одній машині.
- Gatling надає можливість працювати в розподіленому режимі, коли існує величезне навантаження, яке потрібно імітувати.
- Забезпечує підтримку багатьох інших протоколів, окрім HTTP,наприклад, Веб-розетки, MQTT, JDBC тощо можна перевірити продуктивність за допомогою Gatling.
- Gatling надає багатофункціональний DSL - Мова, специфічна для домену, який має простий синтаксис і надає потужні можливості в поєднанні для створення сценарію моделювання.
- Він також надає безліч складних можливостей управління імітацією, таких як циклічні конструкції, імітація часу обдумування, регулювання запитів за межі бажаного RPS тощо.
- Він має широкі можливості звітування нестандартно, і їх також можна налаштувати залежно від вимог.
Висновок
У цьому підручнику ми торкнулися основ використання Gatling як інструменту для випробування навантаження. Завдяки виразному DSL та чудовій підтримці протоколу HTTP, Gatling швидко набирає популярність і використовується як інструмент вибору для багатьох.
Ми також дізналися про реєстратор Gatling та сценарій запуску Gatling із зразком сценарію моделювання, який допоміг зрозуміти основну концепцію запису сценарію моделювання, який потім можна було виконати в майбутньому за допомогою виконавця Gatling Script.
У наступному навчальному посібнику ми розглянемо написання сценаріїв Gatling як проекти Scala - тобто без використання реєстратора та розуміння шаблонів звітів, які генеруються, коли Gatling завершує виконання моделювання.
Рекомендована література
- Тестування навантаження за допомогою підручників HP LoadRunner
- Кореляція - Тестування навантаження за допомогою LoadRunner
- Підручник із тестування на замочування - Що таке тестування на замочування
- Тестування навантаження за допомогою LoadUI - безкоштовний інструмент тестування навантаження з відкритим кодом
- Огляд WebLOAD - Початок роботи з інструментом тестування навантаження WebLOAD
- Підручник з деструктивного контролю та неруйнівного контролю
- Підручник з тестування зручності використання: Повний посібник із початку роботи
- Тестування продуктивності проти тестування навантаження проти стрес-тестування (різниця)