You are on page 1of 3

Тестування продуктивності (Performance testing)

У розробці програмного забезпечення, тестування продуктивності – це практики тестування, які проводяться для
визначення того, як система працює з точки зору оперативності та стабільності при певному робочому навантаженні. Воно
може також служити для дослідження, вимірювання, валідації або верифікації інших атрибутів системи, таких як
масштабованість, надійність і використання ресурсів.

Необхідні параметри роботи системи в певному середовищі можна тестувати за допомогою:

 визначення робочої кількості користувачів програми;

 вимірювання часу виконання різних операцій системи;

 визначення продуктивності додатка при різних ступенях навантаження;

 визначення допустимих меж продуктивності програми при різних рівнях навантаження.

Залежно від характеристик, які нам потрібно протестувати, тестування продуктивності ділиться на типи:

 Навантажувальне тестування (Load testing) 

 Стрес-тестування (Stress testing) 

 Тестування стабільності або напрацювання на відмову (Stability / Reliability testing) 

 Об’ємне тестування (Volume Testing) 

 Шип тестування (Spike Testing) 

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

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

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

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

 щоб визначити, моменти збою або безпечні межі використання;

 щоб підтвердити математичну модель досить точну в прогнозі;

 щоб визначити момент збою або безпечних меж використання;

 щоб підтвердити, що передбачувані специфікації задовольняються;

 для визначення режимів відмови (як саме відбувається відмова системи);

 щоб перевірити стабільну роботу частини або системи за межами стандартного використання;

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

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

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

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

Приклад:

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

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

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

 використання скриптів, віртуальних користувачів і інших автоматизованих симуляторів інтенсивного робочого


процесу, що дозволяє досліджувати поведінку програмного забезпечення при піковому навантаженні;

 дослідження «вузьких місць» системи;

 дослідження процесів обробки помилок і виняткових ситуацій.

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

What is Load Testing?


 є найпростішою формою тестування продуктивності. Випробування навантаження зазвичай проводиться, щоб зрозуміти
поведінку системи при певному очікуваному навантаженні. Це навантаження може бути, як очікувана одночасна кількість
користувачів додатків, що виконують певну кількість операцій протягом заданого часу. Такий тест буде видавати час відгуку
всіх важливих бізнес-критичних операцій. База даних, сервер додатків і т.д. також контролюються під час випробування, це
допомагає виявити вузькі місця в прикладному програмному забезпеченні та обладнанні, на якому встановлено програмне
забезпечення. Так само тестування навантаження – тестування часу відгуку програми на запити різних типів, з метою
упевнитися, що додаток працює відповідно до вимог при звичайному користувацькому навантаженні.

Load testing is testing that checks how systems function under a heavy number of concurrent virtual
users performing transactions over a certain period of time. Or in other words, how systems handle
heavy load volumes. There are a few types of open-source load testing tools, with JMeter being the
most popular one.
 
When should you use Load Testing?
 
When you want to determine how many users your system can handle. You can determine different
user scenarios that let you focus on different parts of your system, like the checkout webpage on
your website or app for web load testing. You can also determine how the load behaves, like the
geo-location users come from or how the load builds and sustains in the system. Basically, load
testing is something you should do all the time, to ensure your system is always on point. That’s
why it should be integrated into your Continuous Integration cycles, with tools
like Jenkins and Taurus.
 
This is what a load test would look like in JMeter. This test analyzes adding 100 users every 30
seconds until reaching 1,000 users. Each step takes 30 seconds to complete and JMeter waits 30
seconds before starting the next step.  After reaching 1,000 threads all of them will continue running
and hitting the server together for 5 minutes.
 

You might also like