База знань

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

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

Тестування продуктивності – це практика комп’ютерної науки, яка прагне до створення стандартів ефективності в реалізації, дизайну та архітектури системи.

Тестування продуктивності (Performance testing)– це комплекс типів тестування, метою яких є визначення працездатності, стабільності, споживання ресурсів та інших атрибутів якості додатку в умовах різних сценаріїв використання і навантажень. Тестування продуктивності дозволяє знаходити можливі уразливості і недоліки в системі з метою запобігти їх згубному впливу на роботу програми в умовах використання.

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

  • визначення робочої кількості користувачів програми;
  • вимірювання часу виконання різних операцій системи;
  • визначення продуктивності додатка при різних ступенях навантаження;
  • визначення допустимих меж продуктивності програми при різних рівнях навантаження.

Perfor_Test

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

  • Навантажувальне тестування (Load testing) є найпростішою формою тестування продуктивності. Випробування навантаження зазвичай проводиться, щоб зрозуміти поведінку системи при певному очікуваному навантаженні. Це навантаження може бути, як очікувана одночасна кількість користувачів додатків, що виконують певну кількість операцій протягом заданого часу. Такий тест буде видавати час відгуку всіх важливих бізнес-критичних операцій. База даних, сервер додатків і т.д. також контролюються під час випробування, це допомагає виявити вузькі місця в прикладному програмному забезпеченні та обладнанні, на якому встановлено програмне забезпечення. Так само тестування навантаження – тестування часу відгуку програми на запити різних типів, з метою упевнитися, що додаток працює відповідно до вимог при звичайному користувацькому навантаженні.
  • Стрес-тестування (Stress testing) – тестування працездатності додатки при навантаженнях, що перевищують призначені для користувача в кілька разів. При стрес-тестуванні (найчастіше, тільки при ньому) ми можемо отримати реальні дані кордонів продуктивності додатка, досліджувати здатність програми обробляти виключення, її стабільність і стійкість. Саме в значно збільшеній навантаженні на додаток і полягає різниця між тестуванням продуктивності і стрес тестуванням.
  • Тестування стабільності або напрацювання на відмову (Stability / Reliability testing) як правило, робиться, щоб визначити, чи може система витримати безперервну очікуване навантаження. Під час тестів, використання пам’яті контролюється для виявлення потенційних витоків. Також важливим, але часто забуваємо є погіршення робочих характеристик, тобто, щоб гарантувати, що пропускна здатність і / або час відгуку після деякого тривалого періоду стійкої діяльності є такими ж або краще, ніж на початку тесту. Воно по суті включає в себе застосування значного навантаження на систему протягом тривалого, значного періоду часу. Мета полягає в тому, щоб дізнатися, як система веде себе при безперервному використанні.
  • Об’ємне тестування (Volume Testing) – тестування проводиться зі збільшенням не навантаження і часу роботи, а кількості використовуваних даних, які зберігаються і використовуються в додатку.
  • Шип тестування (Spike Testing) – проводиться раптово, збільшуючи навантаження на невеликий час, створюване за допомогою дуже великого числа користувачів, і спостерігаючи за поведінкою системи. Мета полягає в тому, щоб визначити, чи постраждає продуктивність системи або вона відмовить, або вона зможе обробити різкі зміни навантаження.

Дуже часто при визначенні тестування продуктивності і його типах приходять до хибного розуміння і плутанини даних термінів. Щоб уникнути цього і закріпити отримані знання, підведемо підсумок. Отже, тестування продуктивності – це перевірка таких функціональних вимог, як продуктивність і працездатність програми при різних навантаженнях і умовах.

 

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