Навантажувальне тестування (Load testing)
Last updated
Last updated
Навантажувальне тестування (load testing): Вид тестування продуктивності, що проводиться з метою оцінити поведінку компонента або системи під збільшенням навантаження (число одночасно працюючих користувачів та/або число транзакцій) для визначення максимально допустимого рівня навантаження для досліджуваного компонента або системи. (ISTQB)
Навантажувальне тестування (load testing): Тип тестування рівня продуктивності, що проводиться для оцінки поведінки елемента тестування при очікуваних умовах змінного навантаження, зазвичай для очікуваних умов низького, типового та пікового використання. (ГОСТ 56920)
Навантажувальне тестування - це тестування, що імітує роботу певної кількості бізнес-користувачів на якомусь загальному (розділюваному ними) ресурсі. Цей підвид тестування продуктивності виконується для діагностики поведінки системи зі збільшенням робочого навантаження.
приклад. Припустимо, що вимога нашого клієнта для сторінки входу становить 2-5 секунд, і ці 2-5 секунд повинні бути завжди, поки навантаження не досягне 5000 користувачів, а також якщо кількість користувачів поступово збільшується, то скільки ЦП пам'яті буде споживатися, який стан мережі, час відгуку, пропускну здатність тощо.
Підхід до навантажувального тестування :
Визначте критерії приймання тесту навантаження . Наприклад:
Час відгуку сторінки входу не повинен перевищувати 5 секунд навіть за умов максимального навантаження;
Завантаження ЦП має перевищувати 80%;
Пропускна здатність системи має становити 100 транзакцій на секунду;
Визначте бізнес-сценарії, які потрібно протестувати . Не тестуйте всі потоки, постарайтеся зрозуміти основні business flows, які, як очікується, відбуватимуться у виробничому середовищі. Якщо це вже існуюча програма, ми можемо отримати інформацію з логів. Якщо це новий додаток, нам потрібно працювати з бізнес-групами, щоб зрозуміти закономірності потоку, використання програми і т. д. Іноді команда проекту проводить семінари, щоб дати огляд або подробиці про кожний компонент програми;
Моделювання робочого навантаження . Отримавши докладну інформацію про бізнес-потоки, шаблони доступу користувачів та кількість користувачів, нам потрібно спроектувати робоче навантаження таким чином, щоб воно імітувало фактичну навігацію користувача у виробничому середовищі або як воно очікується у майбутньому, коли програма буде у виробництві. Ключові моменти, які слід пам'ятати при розробці моделі робочого навантаження, це побачити, скільки часу знадобиться для завершення конкретного бізнес-потоку. Тут нам потрібно призначити час обдумування (think time) таким чином, щоб користувач міг більш реалістично переміщатися за програмою. Схема робочого навантаження зазвичай буде з наростанням, спадом та стійким станом (Ramp up, Ramp down and a steady state).
Стійкий стан зазвичай є одногодинним випробуванням під навантаженням з наростанням 15 хвилин і уповільненням 15 хвилин.
Приклад моделі робочого навантаження : Припустимо, що це інтернет-магазин, де користувачі увійдуть у додаток та отримають широкий вибір суконь для покупок та можуть переміщатися по кожному продукту. Щоб переглянути детальну інформацію про кожний продукт, потрібно клацнути продукт. Якщо їм подобається ціна та якість продукту, вони можуть додати його в кошик і купити продукт, виконавши перевірку та здійснивши оплату. Список сценаріїв:
Огляд - тут користувач запускає програму, входить до програми, переглядає різні категорії та виходить із програми;
Огляд, Перегляд продукту, Додати до кошика - тут користувач входить до програми, переглядає різні категорії, переглядає відомості про продукт, додає продукт до кошика та виходить із системи;
Огляд, перегляд продукту, додавання до кошика та оформлення замовлення - у цьому сценарії користувач входить у додаток, переглядає різні категорії, переглядає відомості про продукт, додає продукт у кошик, оформляє замовлення та виходить із системи;
Огляд, Перегляд продукту, Додати до кошика, Оформити замовлення та здійснити оплату - тут користувач входить до додатка, переглядає різні категорії, переглядає відомості про продукт, додає продукт до кошика, оформляє замовлення, робить оплату і виходить із системи.
Business Flow
Кількість транзакцій
Віртуальне навантаження користувача
Час відгуку (сек)
% Допустима частота відмов
Транзакцій на годину
1
17
1600
3
Менш 2%
96000
2
17
200
3
Менш 2%
12000
3
18
120
3
Менш 2%
7200
4
20
80
3
Менш 2%
4800
Наведені вище значення були отримані на основі наступних розрахунків: Транзакцій за годину = Кількість користувачів * Транзакції, здійснені одним користувачем за годину. Кількість користувачів = 1600. Загальна кількість транзакцій у сценарії перегляду = 17. Час відгуку для кожної транзакції = 3. Загальний час, за який один користувач здійснив 17 транзакцій = 17 * 3 = 51, заокруглений до 60 секунд (1 хв). Транзакцій за годину = 1600 * 60 = 96000 Транзакцій.
Дизайн / розробка навантажувальних тестів - Навантажувальний тест повинен бути розроблений з використанням даних, які ми вже зібрали, тобто бізнес-потоків, кількості користувачів, шаблонів користувача, показників, які необхідно зібрати і проаналізувати. Більше того, тести мають бути максимально реалістичними.
Виконання тесту навантаження - перед тим, як ми виконаємо тест навантаження, переконайтеся, що програма запущена і працює. Середовище тестування навантаження готове. Програма функціонально протестована і працює стабільно. Перевірте параметри конфігурації середовища тестування навантаження. Вона має бути такою самою, як і у виробничому середовищі. Переконайтеся, що всі тестові дані доступні. Не забудьте додати потрібні метрики для відстеження продуктивності системи під час виконання тесту. Завжди починайте з невеликого навантаження та поступово збільшуйте її. Ніколи не починайте роботу з повним навантаженням.
Аналіз результатів тесту навантаження - майте baseline test, щоб завжди порівнювати його з іншими тестами. Зберіть метрики та журнали сервера після запуску тесту, щоб знайти вузькі місця. Деякі проекти використовують інструменти моніторингу продуктивності програм для моніторингу системи під час тестового запуску, ці інструменти APM (Application Performance Monitoring) допомагають легше визначити основну причину та заощадити багато часу.
Звітність - після завершення тестового прогону зберіть усі показники та надішліть зведений звіт тесту відповідній групі зі своїми спостереженнями та рекомендаціями.
Джерела:
Дод. матеріал: