load testing complete guide
Повне керівництво з тестування навантаження для початківців:
У цьому підручнику ми дізнаємося, чому ми проводимо тестування навантаження, що з цього досягнуто, архітектуру, який підхід слід застосовувати для успішного виконання тесту навантаження, як налаштувати середовище тестування навантаження, найкращі практики, а також найкращі засоби тестування навантаження, доступні на ринку.
Ми чули як про функціональне, так і про нефункціональне тестування. Під час функціонального тестування ми маємо різні типи тестування, такі як тестування продуктивності, тестування безпеки, тестування інтерфейсу користувача тощо.
Отже, тестування на навантаженні - це нефункціональний тип тестування, який є підмножиною тестування продуктивності.
Отже, коли ми говоримо, що тестуємо додаток на ефективність, що все ми тестуємо тут? Ми тестуємо заявку на навантаження, об’єм, місткість, напруження тощо.
Що ви дізнаєтесь:
- Що таке тестування навантаження?
- Архітектура навантажувальних тестів
- Навіщо тестування навантаження?
- Навколишнє середовище
- Підхід
- Кращі практики
- Висновок
- Рекомендована література
Що таке тестування навантаження?
Тестування навантаження - це підмножина Тестування продуктивності, де ми перевіряємо реакцію системи в різних умовах навантаження, моделюючи одночасний доступ кількох користувачів до програми. Це тестування зазвичай вимірює швидкість та потужність програми.
Таким чином, коли ми змінюємо навантаження, ми контролюємо поведінку системи за різних умов.
Приклад :Припустимо, що вимоги нашого клієнта щодо сторінки входу становлять 2-5 с, і ці 2-5 с повинні бути узгодженими протягом усього часу, поки завантаження не становитиме 5000 користувачів. То що ми повинні спостерігати, щоб почути? Це просто здатність системи обробляти навантаження або це просто вимога часу відгуку?
Відповідь - обидва. Ми хочемо, щоб система могла обробляти 5000 користувачів із часом відгуку 2-5 секунд для всіх одночасних користувачів.
Отже, що мається на увазі під одночасним користувачем та віртуальним користувачем?
Одночасні користувачі - це ті, хто входить в додаток і одночасно виконує набір дій разом і виходить із програми одночасно. З іншого боку, віртуальні користувачі просто заскакують і вискакують із системи незалежно від діяльності інших користувачів.
Архітектура навантажувальних тестів
На діаграмі нижче ми бачимо, як різні користувачі отримують доступ до програми. Тут кожен користувач робить запит через Інтернет, який згодом передається через брандмауер.
Після брандмауера ми маємо балансування навантаження, яке розподіляє навантаження на будь-який з веб-серверів, а потім передає на сервер додатків, а пізніше на сервер баз даних, де отримує необхідну інформацію на основі запиту користувача.
Тестування навантаження можна проводити як вручну, так і за допомогою інструменту. Але тестувати навантаження вручну не рекомендується, оскільки ми не тестуємо заявку на менші навантаження.
Приклад: Припустимо, що ми хочемо протестувати додаток для покупок в Інтернеті, щоб побачити час відгуку програми для кожного кліка користувача, тобто Крок1 - URL-адреса запуску, час відгуку, Увійти до програми та зазначити час відгуку тощо, як вибір товар, додавання в кошик, здійснення оплати та вихід із системи. Все це потрібно зробити для 10 користувачів.
Отже, тепер, коли нам потрібно протестувати навантаження програми для 10 користувачів, ми можемо досягти цього, вручну накладаючи навантаження 10 фізичних користувачів з різних машин, замість використання інструменту. У цьому випадку доцільно переходити до ручного випробування на навантаження, а не інвестувати в інструмент та створювати середовище для інструменту.
Тоді як уявіть, якщо нам потрібно завантажити тест для 1500 користувачів, тоді нам потрібно автоматизувати тест завантаження, використовуючи будь-який з доступних інструментів, заснований на технологіях, в яких побудований додаток, а також виходячи з бюджету, який ми маємо на проект.
Якщо у нас є бюджет, ми можемо скористатися комерційними інструментами, такими як Load runner, але якщо у нас небагато бюджету, ми можемо вибрати інструменти з відкритим кодом, такі як JMeter тощо.
запитання та відповіді на співбесіду для тестування pdf
Незалежно від того, це комерційний інструмент чи інструмент з відкритим кодом, деталі повинні бути передані клієнту, перш ніж ми допрацюємо інструмент. Зазвичай готується доказ концепції, де ми генеруємо зразок сценарію за допомогою інструменту і показуємо зразки звітів клієнту для затвердження інструменту перед його доопрацюванням.
В автоматизованому тестуванні навантаження ми замінюємо користувачів за допомогою інструменту автоматизації, який імітує дії користувача в режимі реального часу. Автоматизуючи навантаження, ми можемо заощадити ресурси, а також час.
Нижче наведена схема, яка зображує, як користувачі замінюються за допомогою інструменту.
Навіщо тестування навантаження?
Припустимо, що існує веб-сайт з Інтернет-магазинами, який працює досить добре протягом звичайних робочих днів, тобто користувачі можуть увійти в програму, переглянути різні категорії товарів, вибрати продукти, додати товари в кошик, зареєструватися та вийти з системи протягом прийнятний діапазон і немає помилок на сторінці чи величезного часу відгуку.
Тим часом настає піковий день, тобто, скажімо, День подяки, і є тисячі користувачів, які увійшли в систему, система раптово виходить з ладу, і користувачі відчувають дуже повільну реакцію, деякі навіть не можуть увійти на сайт, кілька не вдалося додати в кошик, а деяких не вдалося зареєструвати.
Отже, у цей великий день компанії довелося зіткнутися з величезними збитками, оскільки вона втратила багато клієнтів та багато бізнесу. Все це сталося лише тому, що вони не передбачали завантаження користувача на пікові дні, навіть якби вони передбачили, що на веб-сайті компанії не було проведено перевірки завантаження, отже, вони не знають, з яким завантаженням зможе обробити додаток у пікові дні.
Таким чином, для вирішення таких ситуацій та для подолання величезного доходу доцільно провести тест навантаження для таких типів програм.
- Тестування навантаження допомагає будувати міцні та надійні системи.
- Вузьке місце в системі визначається заздалегідь до того, як заявка почне діяти.
- Це допомагає визначити ємність програми.
Що досягається під час навантажувального тесту?
За допомогою належного тесту навантаження ми можемо точно зрозуміти наступне:
- Кількість користувачів, яких система може обробити або масштабувати.
- Час відповіді кожної транзакції.
- Як поводиться кожен компонент усієї системи в розділі Навантаження, тобто компоненти сервера додатків, компоненти веб-сервера, компоненти бази даних тощо.
- Яка конфігурація сервера найкраще обробляє навантаження?
- Чи достатньо наявного обладнання, чи є потреба в додатковому обладнанні.
- Виявлено вузькі місця, такі як використання центрального процесора, використання пам'яті, затримки мережі тощо.
Навколишнє середовище
Для проведення наших тестів нам потрібне спеціальне середовище для тестування навантаження. Оскільки більшу частину середовища тестування навантаження буде таким самим, як виробниче середовище, а також дані, доступні в середовищі тестування навантаження, будуть такими ж, як виробничі, хоча це не однакові дані.
Буде кілька тестових середовищ, таких як середовище SIT, середовище контролю якості тощо, ці середовища не є однаковим виробництвом, оскільки на відміну від тестування навантаження їм не потрібно так багато серверів або стільки даних тестування для проведення функціонального тестування або тестування інтеграції.
Приклад:
У виробничому середовищі ми маємо 3 сервери програм, 2 веб-сервери та 2 сервери баз даних. У QA ми маємо лише 1 сервер додатків, 1 веб-сервер та 1 сервер баз даних. Отже, якщо ми проводимо тест навантаження на середовище контролю якості, яке не дорівнює виробництву, тоді наші тести не є дійсними і теж є неправильними, і, отже, ми не можемо пройти ці результати.
Тому завжди намагайтеся мати спеціальне середовище для тестування навантаження, подібне до середовища виробництва.
Крім того, іноді у нас є сторонні програми, які наша система буде викликати, отже, у таких випадках ми можемо використовувати заглушки, оскільки ми не завжди можемо співпрацювати зі сторонніми постачальниками для оновлення даних або будь-яких інших проблем чи підтримки.
Спробуйте зробити знімок навколишнього середовища, коли воно буде готове, щоб кожен раз, коли ви хочете перебудувати середовище, ви могли використовувати цей знімок, що допомогло б в управлінні часом. На ринку доступні деякі інструменти для налаштування середовища, такі як Puppet, Docker тощо.
Підхід
Перш ніж ми почнемо тест навантаження, ми повинні зрозуміти, чи проводиться якийсь тест на навантаження в системі чи ні. Якщо раніше було проведено будь-яке тестування навантаження, тоді нам потрібно знати, який був час відгуку, зібрані показники клієнта та сервера, скільки була завантаженість користувача тощо.
Крім того, нам потрібна інформація про те, якою є поточна можливість обробки додатків. Якщо це новий додаток, нам потрібно зрозуміти вимоги, яке цільове навантаження, який очікуваний час відгуку і чи справді це можна досягти чи ні.
Якщо це вже існуюча програма, ви можете отримати вимоги до завантаження та шаблони доступу користувачів із журналів сервера. Але якщо це нова програма, то вам потрібно звернутися до команди бізнесу, щоб отримати всю інформацію.
Коли у нас є вимоги, нам потрібно визначити, як ми збираємось виконати тест навантаження. Це робиться вручну чи за допомогою інструментів? Виконання навантажувального тесту вручну потребує великих ресурсів і теж дуже дорого. Також повторювати тест, знову і знову, буде також важко.
Отже, для подолання цього ми можемо використовувати інструменти з відкритим кодом або комерційні інструменти. Інструменти з відкритим кодом доступні безкоштовно, ці інструменти можуть мати не всі функції, як інші комерційні інструменти, але якщо проект має обмеження бюджету, ми можемо скористатися інструментами з відкритим кодом.
Хоча комерційні інструменти мають багато функцій, вони підтримують безліч протоколів і дуже зручні для користування.
Наш підхід до тесту навантаження буде таким:
# 1) Визначте критерії прийнятності тесту на навантаження
Наприклад:
- Час відповіді сторінки входу не повинен перевищувати 5 секунд навіть під час максимальних навантажень.
- Використання центрального процесора не повинно перевищувати 80%.
- Пропускна здатність системи повинна становити 100 транзакцій на секунду.
# 2) Визначте бізнес-сценарії, які потрібно перевірити.
Не перевіряйте всі потоки, спробуйте зрозуміти основні бізнес-потоки, які очікуються на виробництві. Якщо це вже існуюча програма, ми можемо отримати його інформацію з серверних журналів виробничого середовища.
Якщо це нещодавно побудований додаток, то нам потрібно співпрацювати з бізнес-командами, щоб зрозуміти схеми потоків, використання додатків тощо. Іноді команда проекту проводить семінари, щоб дати огляд або деталі щодо кожного компонента програми.
Нам потрібно відвідати майстерню з подання заявок та зазначити всю необхідну інформацію для проведення нашого тесту на навантаження.
# 3) Моделювання робочого навантаження
Отримавши детальну інформацію про бізнес-потоки, схеми доступу користувачів та кількість користувачів, нам потрібно розробити навантаження таким чином, щоб воно імітувало фактичну навігацію користувачів у виробництві або, як очікується, буде в майбутньому після того, як додаток буде у виробництві.
Ключові моменти, про які слід пам’ятати при розробці моделі робочого навантаження, - це побачити, скільки часу займе певний бізнес-потік. Тут нам потрібно призначити час обдумування таким чином, щоб користувач переміщався по додатку більш реалістично.
Шаблон робочого навантаження зазвичай має рамп вгору, рамп вниз і стійкий стан. Ми повинні повільно завантажувати систему, і, таким чином, використовуються нарощування та зниження. Стабільним станом, як правило, є одногодинний тест на навантаження з рампами до 15 хв і рамами до 15 хв.
Візьмемо приклад моделі робочого навантаження:
Огляд програми. Припустимо, що він робить покупки в Інтернеті, де користувачі увійдуть у програму та матимуть широкий вибір суконь для покупок, і вони зможуть здійснювати навігацію по кожному товару.
Щоб переглянути деталі щодо кожного товару, їм потрібно натиснути на продукт. Якщо їм подобається вартість та вартість товару, вони можуть додати в кошик та придбати товар, перевіривши та здійснивши оплату.
Нижче наведено список сценаріїв:
- Перегляньте - Тут користувач запускає програму, входить у програму, переглядає різні категорії та виходить із програми.
- Огляд, Перегляд товару, Додати в кошик - Тут користувач входить до програми, переглядає різні категорії, переглядає деталі товару, додає товар у кошик та виходить із системи.
- Перегляньте, перегляньте продукт, додайте в кошик і випишіть - У цьому випадку користувач входить у програму, переглядає різні категорії, переглядає деталі товару, додає товар у кошик, здійснює реєстрацію та вихід.
- Огляд, Перегляд товару, Додати в кошик Оформити і здійснити оплату - Тут користувач входить до програми, переглядає різні категорії, переглядає деталі товару, додає товар у кошик, здійснює оплату, здійснює оплату та виходить із системи.
С.Ні | Потік бізнесу | Кількість транзакцій | Навантаження віртуального користувача | Час відгуку (сек) | % Дозволеного рівня відмов | Операції за годину |
---|---|---|---|---|---|---|
один | Перегляньте | 17 | 1600 | 3 | Менше 2% | 96000 |
два | Огляд, Перегляд товару, Додати в кошик | 17 | 200 | 3 | Менше 2% | 12000 |
3 | Перегляньте, перегляньте продукт, додайте в кошик і випишіть | 18 | 120 | 3 | Менше 2% | 7200 |
4 | Огляд, Перегляд товару, Додати в кошик Оформити і здійснити оплату | двадцять | 80 | 3 | Менше 2% | 4800 |
Вищезазначені значення були отримані на основі наступних розрахунків:
- Операції за годину = Кількість користувачів * Операції, здійснені одним користувачем за одну годину.
- Кількість користувачів = 1600.
- Загальна кількість транзакцій у сценарії огляду = 17.
- Час відповіді на кожну транзакцію = 3.
- Загальний час для одного користувача, щоб виконати 17 транзакцій = 17 * 3 = 51, округлено до 60 секунд (1 хв).
- Операції за годину = 1600 * 60 = 96000 транзакцій.
# 4) Створіть тести навантаження- Тест навантаження повинен бути розроблений з урахуванням даних, які ми збирали дотепер, тобто бізнес-потоки, кількість користувачів, шаблони користувачів, показники, які слід збирати та аналізувати. Більше того, тести повинні бути розроблені набагато реалістичніше.
# 5) Виконайте тест навантаження - Перш ніж ми виконуємо тест навантаження, переконайтеся, що програма запущена і працює. Тестове середовище завантаження готове. Додаток перевірено функціонально і стабільно.
Перевірте налаштування конфігурації середовища тестування навантаження. Вона повинна бути такою ж, як виробниче середовище. Переконайтесь, що всі дані тесту доступні. Обов’язково додайте необхідні лічильники для моніторингу продуктивності системи під час виконання тесту.
Завжди починайте з низького навантаження і поступово збільшуйте навантаження. Ніколи не починайте з повним навантаженням і не ламайте систему.
# 6) Проаналізуйте результати тесту на навантаження - Проведіть базовий тест, щоб завжди порівнювати його з іншими тестовими пробігами. Зберіть метрики та журнали сервера після пробного запуску, щоб знайти вузькі місця.
Деякі проекти використовують інструменти контролю ефективності додатків для моніторингу системи під час пробного запуску, ці засоби APM допомагають легше виявити першопричину та заощадити багато часу. Ці інструменти дуже легко знайти першопричину вузького місця, оскільки вони мають широкий огляд, щоб визначити, де проблема.
Деякі інструменти APM на ринку включають DynaTrace, Wily Introscope, App Dynamics тощо.
# 7) Звітність - Після завершення тестового запуску, зберіть усі показники та надішліть звіт про підсумок тесту відповідній групі зі своїми спостереженнями та рекомендаціями.
Кращі практики
Нижче наведено кілька найкращих практик тестування навантаження:
# 1) Завжди перевіряйте стабільність програми перед початком тесту навантаження. Програма повинна бути підписана функціонально стабільною командою функціонального тестування, а всі основні дефекти повинні бути виправлені та перевірені до того, як збірка буде скопійована в середовище Load Test.
# два) Переконайтеся, що тестове середовище завантаження є реплікою або близьким до робочого середовища, включаючи кількість серверів, балансирів навантаження, конфігурації серверів та брандмауери.
# 3) Перш ніж проводити тест навантаження, перевірте, чи унікальні дані тесту, і ми скопіювали всі дані тесту в середовище навантаження.
# 4) Створюйте тестові сценарії таким чином, щоб вони імітували дії користувача в реальному часі, що відбуваються у виробництві.
# 5) Спроектуйте робоче навантаження на основі виробничих завантажень користувача та потоків бізнесу, а у випадку старої програми подивіться, чи це нова розмова з бізнес-командою щодо бізнес-потоків та завантаження користувачів.
# 6) Зберіть усі важливі показники, такі як час відгуку, відвідування за секунду, пропускна здатність, процесор, пам’ять, мережа та запущені користувачі.
Рекомендуємо прочитати => Перелік інструментів для перевірки продуктивності, доступних на ринку для проведення ексклюзивного випробування на навантаження.
Висновок
У цьому посібнику ми дізналися, як тестування навантаження відіграє важливу роль у тестуванні продуктивності програми, як це допомагає зрозуміти ефективність та можливості програми тощо.
Ми також дізналися, як це допомагає передбачити, чи потрібно додаткове обладнання, програмне забезпечення чи налаштування програми.
Щасливого читання !!
Рекомендована література
- Тестування навантаження за допомогою підручників HP LoadRunner
- Альфа-тестування та бета-тестування (повний посібник)
- Посібник із тестування безпеки веб-додатків
- Посібник зі стрес-тестування для початківців
- Посібник для початківців для тестування на проникнення веб-додатків
- Повний посібник з функціонального тестування для початківців
- Повне керівництво з тестування перевірки складання (тестування BVT)
- Тестування продуктивності проти тестування навантаження проти стрес-тестування (різниця)