База знань

Стрес тестування (Stress Testing)

Стрес-тестування – це вид тестування, який характеризує систему з точки зору стійкості її роботи за умов, що перевищують нормальні.

Стрес-тестування (Stress Testing) дозволяє перевірити наскільки додаток, і система в цілому працездатні в умовах стресу і також оцінити здатність системи до регенерації, тобто повернення до нормального стану після припинення впливу стресу. Стресом в даному контексті може бути підвищення інтенсивності виконання операцій до дуже високих значень або аварійна зміна конфігурації сервера. Також одним із завдань при стресовому тестуванні може бути оцінка деградації продуктивності, таким чином цілі стресового тестування можуть перетинатися з цілями тестування продуктивності, на основі чого іноді виникають суперечки про приналежність одного виду до іншого.

Стрес-тестування – включає в себе тестування за межами нормального робочого потенціалу, часто до моменту збою, для того, щоб спостерігати за результатами. Причини можуть включати в себе:

  • щоб визначити, моменти збою або безпечні межі використання;
  • щоб підтвердити математичну модель досить точну в прогнозі;
  • щоб визначити момент збою або безпечних меж використання;
  • щоб підтвердити, що передбачувані специфікації задовольняються;
  • для визначення режимів відмови (як саме відбувається відмова системи);
  • щоб перевірити стабільну роботу частини або системи за межами стандартного використання;

Стрес-тестування «заліза» (Hardware)

Стрес-тестування в цілому повинно поставити компоненти ПК або сервера в умови стресового навантаження для того, щоб забезпечити стабільність при використанні в нормальних умовах. Такі тести можуть включати в себе: екстремальні навантаження, використання пам’яті, теплового навантаження, тактової частоти або напруги. Пам’ять і ЦП це два компоненти, які зазвичай тестуються вищепереліченими способами.

Стрес-тестування програм (Software)

У тестуванні програмного забезпечення, стрес тест системи відноситься до тестів, які ставлять більший акцент на міцності, надійності та обробці помилок при високому навантаженні, а не на тому, що буде вважатися правильним поведінкою при нормальних обставинах. Зокрема, метою таких випробувань може бути забезпечення того, що програмне забезпечення не відмовить в умовах недостатньої кількості обчислювальних ресурсів (наприклад, пам’яті або дискового простору), незвично високою кількістю паралельних запитів.

Приклад:

Web-сервер може бути протестований стрес тестом з використанням скриптів, ботів що б подивитися за продуктивністю під час пікових навантажень. Такі атаки зазвичай проводяться протягом години або до межі в обсязі даних, які web-сервер може обробити. Перевіряти працездатність в екстремальних умовах використання в першу чергу необхідно для програмного забезпечення, збої в роботі якого можуть привести до великих і серйозних наслідків, як фінансових, так і більш серйозних, аж до людських життів.

Найчастіше, вручну створити необхідні умови навантаження не  можливо, тому вдаються до:

  • фокусування на транзакціях певних типів, що більш сильно впливають на виникнення граничних ситуацій, ніж при навантажувальному тестуванні;
  • використання скриптів, віртуальних користувачів і інших автоматизованих симуляторів інтенсивного робочого процесу, що дозволяє досліджувати поведінку програмного забезпечення при піковому навантаженні;
  • дослідження «вузьких місць» системи;
  • дослідження процесів обробки помилок і виняткових ситуацій.

Ще одним випадком стрес тестування є тестування ємності додатку, метою якого є визначення «запасу міцності» системи при її повній відповідності вимогам до продуктивності. При даному виді тестування необхідно враховувати, як поточне навантаження запитів і транзакцій, так і їх очікувану кількість в майбутньому. В результаті тестування ємності ми отримуємо безліч допустимих характеристик ПЗ при його відповідності вимогам, закладеним в процесі розробки.

 

Набагато більше інформації на курсі базовий модуль тестування