Що таке СТРЕСС-тестування в програмному тестуванні?
⚡ Розумний підсумок
Стрес-тестування виводить програму за межі її нормальної роботи, щоб знайти точку переривання, підтвердити коректну обробку збоїв та довести, що система повністю відновлюється після зняття екстремального навантаження.

Що таке стрес-тестування?
Стрес-тестування – це тип тестування програмного забезпечення, який перевіряє стабільність та надійність програмного застосунку. Метою стрес-тестування є оцінка стійкості та можливостей обробки помилок програмного забезпечення в умовах надзвичайно високого навантаження, а також забезпечення відсутності збоїв у критичних ситуаціях. Воно навмисно тестує роботу програмного забезпечення поза межами нормальних робочих точок та оцінює, як поводиться програмне забезпечення в екстремальних умовах.
Під час стрес-тестування тестований додаток (AUT) піддається короткочасному навантаженню, щоб з'ясувати його стійкість. Найпоширенішим використанням стрес-тестування є визначення межі, за якої система, програмне забезпечення або апаратне забезпечення виходять з ладу. Воно також перевіряє, чи демонструє система ефективне управління помилками після перетину цієї межі.
In Розробка програмного забезпеченняСтрес-тестування часто вказується поруч із Випробування на витривалість, але ці два методи відрізняються: стрес-тестування застосовує аномально високе навантаження коротким імпульсом, щоб знайти точку розриву, тоді як тестування на витривалість (замочування) витримує помірне навантаження протягом кількох годин, щоб виявити поступову деградацію.
На скріншоті нижче показано великий блок даних, що копіюється з веб-сторінки.
Тестований застосунок перевантажується, коли 5 ГБ даних копіюється з веб-сайту та вставляється в Блокнот. Тепер Блокнот перебуває під навантаженням і повертає повідомлення про помилку «Не відповідає», точно так само, як показано на наступному знімку екрана.
Той самий принцип масштабується безпосередньо на серверні системи.
Необхідність стрес-тестування
Розглянемо наступні реальні приклади, де використання стрес-тестування стає очевидним:
- Під час фестивалю працює інтернет-магазинping на сайті може спостерігатися різке збільшення трафіку або оголошення про розпродаж.
- Коли блог згадується у провідній газеті, він відчуває раптовий сплеск трафіку.
Вкрай важливо проводити стрес-тестування, щоб врахувати такі аномальні сплески трафіку. Нездатність врахувати цей раптовий трафік може призвести до втрати доходу та репутації.
Стрес-тестування також надзвичайно цінне з наступних причин:
- Він перевіряє, чи працює система в аномальних умовах.
- Це підтверджує, що відповідне повідомлення про помилку відображається, коли система перебуває під навантаженням.
- Збій системи за екстремальних умов може призвести до величезних втрат доходу.
- Краще бути готовим до екстремальних умов, провівши стрес-тестування заздалегідь.
У наступному розділі викладено, що має довести успішний стрес-тест.
Цілі стрес-тестування
Метою стрес-тестування є аналіз поведінки системи після збою. Для успішного стрес-тестування система повинна відображати відповідне повідомлення про помилку, коли вона перебуває в екстремальних умовах.
Для проведення стрес-тестування іноді використовуються величезні набори даних, і ці дані можуть бути втрачені під час збою системи. Тестери повинні переконатися, що ці дані, пов'язані з безпекою, не втрачаються під час стрес-тестування.
Головна мета стрес-тестування — переконатися, що система відновлюється після збою, ця властивість називається відновлюваністю. Тестування відновлення потім детально перевіряє цю процедуру відновлення.
Тестування навантаження проти стрес-тестування
Обидві техніки належать до Тестування продуктивності сімейство, тому їх легко сплутати. На діаграмі нижче порівнюються два профілі навантаження.
| Тестування навантаження | Стрес-тестування |
|---|---|
| Тестування навантаження тестує поведінку системи за нормальних умов робочого навантаження; моделює фактичне очікуване робоче навантаження. | Стрес-тестування перевіряє поведінку системи в екстремальних умовах і проводиться доти, доки система не вийде з ладу. |
| Тестування навантаження не порушує роботу системи. | Стрес-тестування навмисно намагається зламати систему, перевантажуючи її даними або позбавляючи її ресурсів. |
Пов’язані профілі включають Спайк тестування (раптовий короткий спалах), Тестування обсягу (великі обсяги даних, а не багато користувачів) та Тестування масштабованості (простор для зростання).
Види стрес-тестування
Нижче наведено типи стрес-тестування, пояснені по одному.
Розподілене стрес-тестування
У розподілених клієнт-серверних системах тестування проводиться на всіх клієнтах сервера. Роль стрес-сервера полягає в розповсюдженні набору стрес-тестів серед усіх стрес-клієнтів та track стан кожного клієнта. Після того, як клієнт зв’язується із сервером, сервер додає ім’я клієнта та починає надсилати дані для тестування. На рисунку нижче показано, як стрес-сервер досягає деяких клієнтів, але не інших.
Тим часом клієнтські машини надсилають сигнал, або серцебиття, підтверджуючи, що вони все ще підключені до сервера. Якщо сервер не отримує жодного сигналу від клієнтської машини, цю машину потрібно додатково дослідити для налагодження. На рисунку сервер може підключитися до 2 клієнтів (Клієнт1 та Клієнт2), але він не може надсилати або отримувати сигнал від Клієнта 3 та Клієнта 4.
Нічний запуск – найкращий варіант для цих сценаріїв стрес-тестування. Великим серверним фермам потрібен ефективніший метод визначення того, які комп’ютери зазнали стресових збоїв, що потребують розслідування.
Стрес-тестування додатків
Це тестування зосереджено на пошуку дефектів, пов'язаних із блокуванням даних, проблемами мережі та вузькими місцями продуктивності в одному застосунку.
Транзакційне стрес-тестування
Він виконує стрес-тестування однієї або кількох транзакцій між двома або більше програмами. Використовується для точного налаштування та оптимізації системи.
Системне стрес-тестування
Це інтегроване стрес-тестування, яке можна проводити на кількох системах, що використовують один і той самий сервер. Воно використовується для пошуку дефектів, коли одна програма блокує дані іншої програми.
Дослідницьке стрес-тестування
Це тип стрес-тестування, який використовується для перевірки системи з незвичайними параметрами або умовами, які навряд чи виникнуть у реальному сценарії. Він використовується для пошуку дефектів у неочікуваних ситуаціях, таких як:
- Велика кількість користувачів увійшла в систему одночасно.
- Сканер вірусів запускається на всіх машинах одночасно.
- База даних переходить у режим автономного доступу під час доступу до неї з веб-сайту.
- Великий обсяг даних, що одночасно вставляється в базу даних.
Незалежно від того, який варіант застосовується, послідовність виконання залишається незмінною.
Як провести стрес-тестування?
Процес стрес-тестування можна виконати у 5 основних кроків:
- Крок 1) Планування стрес-тесту: Тут ви збираєте системні дані, аналізуєте систему та визначаєте цілі стрес-тестування.
- Крок 2) Створіть сценарії автоматизації: На цьому етапі ви створюєте сценарії автоматизації стрес-тестування та генеруєте тестові дані для стресових сценаріїв.
- Крок 3) Виконання сценарію: На цьому етапі ви запускаєте сценарії автоматизації стрес-тестування та зберігаєте результати стрес-тестування.
- Крок 4) Аналіз результатів: На цьому етапі ви аналізуєте результати стрес-тесту та визначаєте вузькі місця.
- Крок 5) Налаштування та оптимізація: На цьому етапі ви налаштовуєте систему, змінюєте конфігурації та оптимізуєте код з метою досягнення бажаного орієнтира.
Зрештою, ви знову запускаєте весь цикл, щоб визначити, чи налаштування дали бажані результати. Наприклад, нерідко потрібно 3-4 цикли процесу стрес-тестування, перш ніж будуть досягнуті цільові показники продуктивності, тому скрипти зазвичай підтримуються разом із регресія на.
Інструменти, рекомендовані для стрес-тестування
Чотири інструменти, наведені нижче, задовольнять більшість потреб, від корпоративних пакетів до безкоштовного варіанту з відкритим кодом.
LoadRunner
LoadRunner – це широко використовуваний інструмент для тестування навантаження, який зараз продається OpenText у версіях Professional, Enterprise та Cloud після переходу з HP на Micro Focus OpenTextРезультати навантажувальних тестів, отримані LoadRunner, розглядаються як еталонні.
JMeter
Apache JMeter це інструмент тестування з відкритим кодом. Це чистий Java застосунок для стрес-тестування та тестування продуктивності, призначений для охоплення таких типів тестів, як навантажувальне, функціональне та стрес-тестування. Поточні версії 5.6.x Apache JMeter вимагати Java 8 або пізніше, з Java 17 рекомендовано.
Стрес-тестер
Цей інструмент забезпечує розширений аналіз продуктивності веб-застосунків, представляє результати в графічному форматі та є простим у використанні. Не потребує написання високорівневих сценаріїв, що забезпечує низьку рентабельність інвестицій.tracтивний для менших команд.
NeoНавантаження
NeoНавантаження, тепер частина Tricentis портфоліо – це популярний інструмент для тестування веб-сайтів та мобільні додаткиВін може симулювати тисячі користувачів, щоб оцінити продуктивність програм під навантаженням та проаналізувати час відгуку. Він також підтримує хмарно-інтегроване тестування продуктивності, навантаження та стрес-тестування, а також добре масштабується.
Більше опцій перелічено в посібнику засоби тестування продуктивності; залежно від обраного варіанту, його результат має значення лише відносно наведених нижче показників.
Метрики для стрес-тестування
Метрики допомагають оцінити продуктивність системи та зазвичай вивчаються в кінці стрес-тесту. Зазвичай використовувані метрики групуються у три родини.
Вимірювання масштабованості та продуктивності
- Сторінок за секунду: Вимірює, скільки сторінок запитується за секунду.
- Пропускна здатність: Базова метрика — розмір даних відповіді за секунду.
- Раунди: Кількість разів, коли було заплановано тестові сценарії, порівняно з кількістю разів, коли клієнт їх виконав.
Відповідь на заявку
- Час влучання: Середній час отримання зображення або сторінки.
- Час до першого байта: Час, необхідний для повернення першого байта даних або інформації.
- Час сторінки: Час, витрачений на отримання всієї інформації на сторінці.
Невдачі
- Невдалі з’єднання: Кількість невдалих з’єднань, відхилених клієнтом (слабкий сигнал).
- Невдалі раунди: Кількість невдалих раундів.
- Невдалі влучання: Кількість невдалих спроб системи (непрацюючі посилання або невидимі зображення).
У заключному розділі перераховано ситуації, які найчастіше виправдовують проведення стрес-тесту.
Приклади стрес-тестування
Стрес-тестування заслуговує на своє місце щоразу, коли очікується, що подія призведе до значного перевищення денного базового рівня трафіку:
- Вебсайт електронної комерції, що оголошує про фестивальний розпродаж.
- Новинний вебсайт під час важливої події.
- Рада з питань освіти публікує результати іспитів.
- Сайти соціальних мереж, блоги та мобільні додатки під час вірусного моменту.
У кожному випадку тест контролює такі ресурси, як пам'ять, процесор і мережа, перевіряє, чи з'являються відповідні повідомлення про помилки під навантаженням, і підтверджує повернення системи до нормального стану після цього. Це відповідає життєвий цикл тестування ПЗ як нефункціональна перевірка поряд Тестування системи та ширший набір види тестування програмного забезпечення.

.png)
.png)

