Як швидко створити навантажувальний тест за допомогою Azure Load Testing та Jmeter
Всім привіт, я Віктор Карабедянц, Sr. Cloud Ops manager у міжнародній ІТ-компанії SITECORE. У цій статті розповім про такий інструмент тестування навантаження як Azure load test, як його використовувати, які сценарії роботи він підтримує і як отримати від нього максимальну користь.
Більшість людей відкладає все на потім. І це «потім» наближається дуже швидку і часто несподівано)). Так черговий розпродаж вже на підході. А ви вже готові до нього? Впевнені, що ваш сайт не ляже в перші години і всі надії на великі продажі залишаться лише надіями.
Я підготував приклад, як в короткий строк протестувати ваш сайт під навантаженням, і у випадку поганих результатів встигнути вжити заходів з покращення продуктивності, додавання ресурсів і т. д.
Для таких цілей проводять навантажувальне тестування:
- виявити проблеми з продуктивністю;
- визначити максимальний поріг доступності при навантаженні;
- підготувати до події пов’язаних з великим навантаженням;
- виявити і усунути ризики простою;
Один з найпопулярніших і функціональних засобів для тестування навантаження — це додаток Apache JMeter. Програмне забезпечення з відкритим вихідним кодом, на 100% чистий Java-додаток, призначений для використання навантажувальних тестів поведінки та вимірювання продуктивності.
Спочатку jMeter розроблявся для тестування вебзастосунків, але з часом обріс і іншими функціями. Його можна використовувати для імітації великого навантаження на сервер, групу серверів, мережу або об’єкт для перевірки стійкості, або для аналізу загальної продуктивності різних типів навантаження.
Оскільки JMeter — це чисто додаток на основі Java, тому для роботи з них обов’язково має бути встановлена Java 8 або пізніша версія Java. Тобто, щоб почати використовувати цей інструмент, нам необхідно придбати віртуальний або фізичний сервер, на нього встановити Java, а потім встановити і налаштувати Jmeter. І в залежності від масштабів тестування, інфраструктуру потрібно готувати ретельніше та залучити багато ресурсів.
Тут одразу розумієш, що швидко протестувати не вийде. Поки все встановиш і налаштуєш — втратиш багато часу.
Але на щастя ми живемо у світ хмар, і маємо можливість скористатися перевагами SaaS-сервісу як послуги, у нашому випадку — «навантажувальне тестування як послуга». Використовуючи Azure Load Testing, ми можемо відразу ж перейти до тестування навантаження, пропустивши етап установки ПЗ для тестування.
Тож познайоммося з Azure Load Testing
Ця стаття-посібник призначена для інженерів, які хочуть швидко створити навантажувальний тест за допомогою Azure Load Testing та Jmeter і не хочуть встановлювати сервери, морочитися з Java, JMeter і так далі.
Azure Load Testing — це керована служба від Microsoft, призначена для навантажувального тестування. Ця служба імітує трафік від користувача на програму, незалежно від розташування. Можна швидко створювати прості тести для url-адрес, без особливих навичок використання служби та розуміння організації побудови архітектури для масштабних тестів навантаження.
Службу можна використовувати для автоматизації тестування в рамках процесу безперервної доставки та інтеграції CI/CD.
Також служба дозволяє створювати складніші тести завдяки вбудованому механізму Apache Jmeter і використовувати повторно або раніше підготовлені сценарії тестування.
Azure Load Testing може працювати одразу і без сценаріїв. Але якщо все ж таки необхідна кастомізація, то розгляньмо приклад з використанням підготовки сценарію на Jmeter.
Приклад тесту
Для кожного тесту налаштування індивідуальні. Створюється тест навантаження, який генерує навантаження на кінцеві точки. Перелік точок та умови може надаватись інженером, розробником або спеціалістом з QA (поділіться в коментарях, хто це у вас робить?).
В результаті очікуємо отримати такі дані для індивідуального тесту:
- тривалість — скільки буде працювати навантажувальний тест у хвилинах (замовник вказує у хвилинах, але в Jmeter ми вказуємо в секундах);
- кінцеві точки (наприклад, atlassian.net, atlassian.net/wiki/HUB, https://atlassian.net/wiki) — URL-посилання, за якими генеруватиметься навантаження;
- кількість користувачів — кілька потоків використовуються для імітації одночасних підключень до URL-адрес клієнтів;
- дата/час — коли ми можемо виконати тест.
На основі отриманих даних ми готуємо тест. У прикладі кінцеві точки:
webapp1.azurewebsites.net
webapp1.azurewebsites.net/Wildcat
webapp1.azurewebsites.net/Three
Кількість користувачів: 1000
Дата, час — 11/21/2022 між 10 AM — 14 PM in UTC
Перед проведенням будь-якого тестового сценарію попереджаємо всіх про потенційну дію на систему.
Отже, вхідні дані є, підготуємо сценарій для тестування, підготуємо тест в Apache Jmeter.
Завантажте Apache Jmeter і виконайте наступне:
Відкрийте Jmeter. Натисніть на групу Thread і додайте/ змінити семплери HTTP-запитів, заповніть кожен з них кінцевими точками URL з вихідних даних, 1 sampler HTTP = 1 кінцева точка URL.
Наш тестовий скрипт містить 3 HTTP сторінки:
Примітка: вводити URL потрібно без https://, оскільки протокол вказується в окремому полі.
Приклад конфігурації однієї з кінцевих точок:
Далі натискаємо Thread Group і налаштовуємо індивідуальними значеннями, заданими для тесту.
Отже, використовуємо для тесту 1000 користувачів, для перевірки 3 кінцеві точки, 200 користувачів почнуть роботу відразу після запуску тесту, і кожну хвилину ми поступово збільшуватимемо кількість користувачів на 200 при тривалості тесту 15 хвилин.
Azure рекомендує використовувати кількість потоків не більше 250 користувачів для одного ядра, оскільки наша мета 1000 користувачів одночасно, то нам потрібно розділити 1000 користувачів на максимальну кількість користувачів 1000/250 = 4 engines.
Запуск Azure Load test
Виберіть потрібну ресурсну групу:
На порталі Azure виберіть Azure Load Testing. Перейдіть на ресурс у розділі «Тести» => Створити => Завантажити скрипт JMeter, який ми створили на попередньому кроці.
Тест можна створити один раз і надалі завантажувати для тестування в потрібний час.
Після завантаження скрипта Jmeter перейдіть до розділу Load, вкажіть кількість необхідних engines, як ми порахували в попередньому розділі, вкажемо 4.
Зверніть увагу, ми встановлюємо галочку Run test після створення.
Перед виконанням скрипту навантаження перейдіть на відповідні вебсторінки і «розігрійте»: переходьте на тестовані сторінки протягом
Оцінка результатів тесту
Після навантаження необхідно проаналізувати тестову інформацію.
Для нашого прикладу ми отримали наступний графік:
Статистика:
Load — всього запитів протягом 15 хв.
Response time — середній час відгуку
Throughput — пропускна спроможність запити за секунду.
Крім URL-адрес, які ми додаємо, ви можете побачити BeanShell.
Sampler:
Він також включений до статистичної інформації вище. Цей семплер робить кожен запит унікальним, генеруючи унікальний файл cookie.
Ви можете побачити середню кількість запитів/сек для кожної сторінки, що включена до тесту, а також сукупне значення всіх сторінок, включаючи BeanShell Sampler.
Те саме стосується часу відгуку:
Далі оцінюємо результати випробувань:
Усього виконано 181724 запитів протягом 15 хвилин. Помилок за цей час не спостерігалося (якщо помилки були помічені, можна зібрати їх через App Insight і надати замовнику). Середній час відгуку
Зведення по URL
Головна сторінка:
запитів/сек (середнє): 47:38;
середовище. Час відгуку, сек: 9,54.
Максимальний базовий рівень запитів за хвилину становить близько: 2,49 тис.
Максимальний час відгуку: 48,15 сек.
Процесор під час тестування навантаження. Як ви бачите на графіку, процесор повністю завантажений на 100%:
Таким чином в дуже короткий час і мінімальними зусиллями можна отримати дані про тестування навантаження вашого сайту.
Висновок
Звичайно головний висновок, який можна зробити — не відкладайте все на потім :). Але якщо ж у вас вийшла така ситуація, використовуйте готові рішення, які надає вам хмара.
1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів