Тестування продуктивності
Тестування продуктивності - це процес тестування програмного забезпечення, що використовується для тестування швидкості, часу відгуку, стабільності, надійності, масштабованості та використання ресурсів програмного додатку за певного навантаження. Основною метою тестування продуктивності є виявлення та усунення вузьких місць продуктивності програмного додатку. Це підгрупа інженерних технологій, яка також відома як "Тестування досконалості".
Основним завданням Тестування продуктивності є перевірка програмного забезпечення
- Швидкість - визначає, чи програма швидко реагує
- Масштабованість - визначає максимальне завантаження користувача, яке може обробляти програма.
- Стабільність - визначає, чи стабільна програма при різних навантаженнях
У цьому підручнику ви дізнаєтесь-
- Що таке тестування продуктивності?
- Чому тестування продуктивності?
- Види тестування продуктивності
- Поширені проблеми продуктивності
- Процес тестування продуктивності
- Метрики тестування продуктивності: Моніторинг параметрів
- Приклади випадків перевірки ефективності
- Засоби перевірки продуктивності
- FAQ
Чому тестування продуктивності?
Особливості та функціональність, що підтримуються програмною системою, є не єдиною проблемою. Продуктивність програмного додатку, як-от час відгуку, надійність, використання ресурсів та масштабованість, мають значення. Метою тестування продуктивності є не пошук помилок, а усунення вузьких місць у роботі.
Тестування продуктивності проводиться, щоб надати зацікавленим сторонам інформацію про їх застосування щодо швидкості, стабільності та масштабованості. Що ще важливіше, тестування продуктивності розкриває, що потрібно вдосконалити, перш ніж продукт вийде на ринок. Без тестування продуктивності програмне забезпечення, ймовірно, страждає від таких проблем, як: повільна робота, коли кілька користувачів користуються ним одночасно, невідповідність різних операційних систем та погана зручність використання.
Тестування продуктивності визначить, чи відповідає їх програмне забезпечення вимогам до швидкості, масштабованості та стабільності при очікуваних робочих навантаженнях. Програми, надіслані на ринок із низькими показниками продуктивності через неіснуючі або погані тести продуктивності, швидше за все, отримають погану репутацію та не зможуть досягти очікуваних цілей продажів.
Крім того, критично важливі програми, такі як програми космічного запуску або рятувальне медичне обладнання, повинні бути перевірені на ефективність, щоб забезпечити їх роботу протягом тривалого періоду без відхилень.
За даними Dunn & Bradstreet, 59% компаній Fortune 500 щотижня переживають 1,6 години простою. Враховуючи, що середня компанія Fortune 500, що має мінімум 10 000 співробітників, платить 56 доларів на годину, частина витрат робочої сили на простій для такої організації становила б 896 000 доларів на тиждень, що перевищувало б 46 мільйонів доларів на рік.
За оцінками, лише 5-хвилинний простой Google.com (19 серпня 13) обійдеться пошуковому гіганту в цілих 545 000 доларів.
За підрахунками, компанії втратили продажі на суму 1100 доларів за секунду через недавній збій в роботі веб-служби Amazon.
Отже, тестування продуктивності є важливим.
Види тестування продуктивності
- Тестування навантаження - перевіряє здатність програми виконувати роботу за очікуваних завантажень користувача. Завдання полягає у визначенні вузьких місць продуктивності до запуску програмного забезпечення.
- Стрес-тестування - передбачає тестування програми під екстремальними робочими навантаженнями, щоб побачити, як вона обробляє великий трафік або обробку даних. Мета полягає в тому, щоб визначити точку порушення програми.
- Тестування на витривалість - робиться для того, щоб переконатися, що програмне забезпечення може тривалий час витримувати очікуване навантаження.
- Тестування спайків - перевіряє реакцію програмного забезпечення на раптові великі стрибки навантаження, що генерується користувачами.
- Об'ємне випробування - під об'ємним випробуванням велике з. Дані заповнюються в базі даних і відстежується загальна поведінка програмного забезпечення. Мета полягає в тому, щоб перевірити ефективність програмного додатку в різних обсягах баз даних.
- Тестування на масштабованість - Завдання тестування на масштабованість полягає у визначенні ефективності програмного додатку в "масштабуванні" для підтримки збільшення навантаження користувачів. Це допомагає планувати додавання потужності до вашої програмної системи.
Поширені проблеми продуктивності
Більшість проблем з продуктивністю пов'язані зі швидкістю, часом відгуку, часом навантаження та поганою масштабованістю. Швидкість часто є одним з найважливіших атрибутів програми. Повільно запущений додаток втратить потенційних користувачів. Тестування продуктивності проводиться для того, щоб переконатися, що програма працює досить швидко, щоб зберегти увагу та інтерес користувача. Погляньте на наступний перелік найпоширеніших проблем із продуктивністю та зауважте, як швидкість є загальним фактором у багатьох з них:
- Тривалий час завантаження - Час завантаження, як правило, є початковим часом, який потрібен для запуску програми. Це, як правило, має бути мінімальним. Незважаючи на те, що деякі програми неможливо завантажити менше ніж за хвилину, час завантаження слід тримати за кілька секунд, якщо це можливо.
- Низький час відгуку - Час відгуку - це час, з якого користувач вводить дані у програму, поки програма не видасть відповідь на цей вхід. Як правило, це повинно бути дуже швидко. Знову ж таки, якщо користувачеві доведеться чекати занадто довго, він втрачає інтерес.
- Погана масштабованість - програмний продукт страждає від поганої масштабованості, коли не може обробити очікувану кількість користувачів або коли він не вміщує достатньо широкого кола користувачів. Перевірку навантаження слід проводити, щоб програма могла обробляти очікувану кількість користувачів.
- Вузькі місця - Вузькі місця - це перешкоди в системі, що погіршують загальну продуктивність системи. Вузьке місце - це коли помилки кодування або апаратні проблеми спричиняють зменшення пропускної здатності під певними навантаженнями. Вузькі місця часто спричинені одним несправним розділом коду. Ключ до виправлення проблеми з вузьким місцем полягає у пошуку розділу коду, що спричиняє уповільнення, та спроби виправити його там. Вузькі місця, як правило, виправляються шляхом виправлення незадовільних запущених процесів або додавання додаткового обладнання. Деякі загальні вузькі місця в роботі
- Використання процесора
- Використання пам'яті
- Використання мережі
- Обмеження операційної системи
- Використання диска
Процес тестування продуктивності
Методологія, прийнята для тестування продуктивності, може сильно відрізнятися, але мета тестів ефективності залишається незмінною. Це може допомогти продемонструвати, що ваша програмна система відповідає певним заздалегідь визначеним критеріям продуктивності. Або це може допомогти порівняти продуктивність двох програмних систем. Це також може допомогти визначити частини вашої програмної системи, які погіршують її продуктивність.
Нижче наведено загальний процес про тестування продуктивності
- Визначте своє середовище тестування - знайте своє фізичне середовище тестування, виробниче середовище та які інструменти тестування доступні. З’ясуйте деталі апаратного, програмного забезпечення та мережевих конфігурацій, що використовуються під час тестування, перед тим, як розпочати процес тестування. Це допоможе тестувальникам створити більш ефективні тести. Це також допоможе визначити можливі проблеми, з якими можуть зіткнутися тестери під час процедур тестування продуктивності.
- Визначте критерії прийнятності продуктивності - Це включає цілі та обмеження щодо пропускної здатності, часу відгуку та розподілу ресурсів. Також необхідно визначити критерії успішності проекту поза цими цілями та обмеженнями. Тестери повинні мати повноваження встановлювати критерії ефективності та цілі, оскільки часто специфікації проекту не включатимуть досить широкого розмаїття показників ефективності. Іноді їх взагалі може не бути. По можливості пошук подібного додатка для порівняння - хороший спосіб встановити цілі продуктивності.
- Тестування продуктивності планування та проектування - Визначте, як може відрізнятися використання серед кінцевих користувачів, та визначте ключові сценарії для перевірки на всі можливі випадки використання. Необхідно моделювати різноманітних кінцевих користувачів, планувати дані тестів продуктивності та окреслювати, які показники будуть зібрані.
- Налаштування тестового середовища - Підготуйте тестове середовище перед виконанням. Також упорядкуйте інструменти та інші ресурси.
- Впровадити дизайн тесту - Створіть тести продуктивності відповідно до вашого тесту.
- Запустіть тести - виконуйте та контролюйте тести.
- Аналіз, настройка та повторне тестування - Об’єднайте, проаналізуйте та поділіться результатами тестування. Потім тонко налаштуйте і ще раз перевірте, чи є покращення чи зниження продуктивності. Оскільки вдосконалення, як правило, стають меншими з кожним повторним тестуванням, зупиняйтеся, коли вузькі місця викликані процесором. Тоді ви можете розглянути варіант збільшення потужності процесора.
Метрики тестування продуктивності: Моніторинг параметрів
Основні параметри, що контролюються під час тестування продуктивності, включають:
- Використання процесора - кількість часу, який процесор витрачає на виконання непрацюючих потоків.
- Використання пам’яті - обсяг фізичної пам’яті, доступний процесам на комп’ютері.
- Час диска - кількість часу, на який диск зайнятий виконанням запиту на читання або запис.
- Пропускна здатність - показує біти в секунду, використовувані мережевим інтерфейсом.
- Приватні байти - кількість байтів, виділених процесом, які не можуть бути спільними для інших процесів. Вони використовуються для вимірювання витоків пам'яті та використання.
- Виділена пам'ять - обсяг використаної віртуальної пам'яті.
- Сторінки пам’яті / секунда - кількість сторінок, записаних на диск або прочитаних з диска для усунення несправностей жорстких сторінок. Несправності на жорсткій сторінці - це коли код, що не входить до поточного робочого набору, викликається з іншого місця і отримується з диска.
- Несправності сторінки / секунда - загальна швидкість обробки сторінок несправностей процесором. Це знову трапляється, коли для процесу потрібен код поза межами його робочого набору.
- Переривання процесора в секунду - це середнє значення кількість апаратних переривань, які процесор приймає та обробляє кожну секунду.
- Довжина черги диска - це середня ні. запитів на читання та запис у черзі для вибраного диска протягом інтервалу вибірки.
- Довжина черги вихідної мережі - довжина черги вихідних пакетів у пакетах. Що завгодно більше двох означає затримку та вузькі місця, які слід припинити.
- Загальна кількість байтів мережі за секунду - швидкість передачі та прийому байтів на інтерфейсі, включаючи символи кадрування.
- Час відповіді - час з моменту введення користувачем запиту до отримання першого символу відповіді.
- Пропускна здатність - оцініть, що комп’ютер або мережа отримує запити в секунду.
- Обсяг пулу з'єднань - кількість запитів користувачів, яким відповідають об'єднані з'єднання. Чим більше запитів задовольнять з'єднання в пулі, тим кращою буде продуктивність.
- Максимальна кількість активних сеансів - максимальна кількість сеансів, які можуть бути активними одночасно.
- Коефіцієнти звернень - Це пов’язано з кількістю операторів SQL, які обробляються кешованими даними замість дорогих операцій вводу-виводу. Це гарне місце для початку вирішення проблем з вузькими місцями.
- Хітів у секунду - ні. звернень на веб-сервері під час кожної секунди тесту навантаження.
- Сегмент відкоту - обсяг даних, який можна відкотити в будь-який момент часу.
- Блокування баз даних - блокування таблиць та баз даних потрібно контролювати та ретельно налаштовувати.
- Найвищі очікування - відстежуються, щоб визначити, який час очікування можна скоротити, коли йдеться про швидкість отримання даних з пам'яті
- Кількість ниток - стан додатків можна виміряти значенням no. потоків, які запущені та активні в даний час.
- Вивіз сміття - це пов’язано з поверненням невикористаної пам’яті назад до системи. Вивіз сміття потрібно контролювати за ефективністю.
Приклади випадків перевірки ефективності
- Переконайтеся, що час відповіді становить не більше 4 секунд, коли 1000 користувачів одночасно відвідують веб-сайт.
- Переконайтеся, що час відгуку програми під навантаженням знаходиться в межах допустимого діапазону, коли підключення до мережі є повільним
- Перевірте максимальну кількість користувачів, з якими програма може обробляти її перед збоями.
- Перевірте час виконання бази даних, коли одночасно читається / записується 500 записів.
- Перевірте використання центрального процесора та пам'яті програми та сервера баз даних в умовах пікового навантаження
- Перевірте час відгуку програми в умовах низького, нормального, помірного та великого навантаження.
Під час фактичного виконання тесту продуктивності невизначені терміни, такі як допустимий діапазон, велике навантаження тощо, замінюються конкретними цифрами. Інженери з підвищення продуктивності встановлюють ці цифри відповідно до бізнес-вимог та технічного середовища програми.
Засоби перевірки продуктивності
На ринку доступно широкий спектр інструментів тестування продуктивності. Інструмент, який ви оберете для тестування, залежатиме від багатьох факторів, таких як типи підтримуваного протоколу, вартість ліцензії, вимоги до обладнання, підтримка платформи тощо. Нижче наведено перелік популярних засобів тестування.
- LoadNinja - революціонізує спосіб завантаження тесту. Цей хмарний засіб тестування навантаження дозволяє командам записувати та миттєво відтворювати комплексні тести навантаження без складної динамічної кореляції та запускати ці тести навантаження в реальних браузерах у масштабі. Команди можуть збільшити охоплення тестами. & скоротити час випробування навантаження більш ніж на 60%.
- NeoLoad - це платформа для тестування продуктивності, розроблена для DevOps, яка легко інтегрується у ваш існуючий конвеєр безперервної доставки. За допомогою NeoLoad команди тестують в 10 разів швидше, ніж за допомогою традиційних інструментів, щоб задовольнити новий рівень вимог протягом повного життєвого циклу розробки програмного забезпечення Agile - від компонентів до повних загальносистемних тестів навантаження.
- HP LoadRunner - це найпопулярніший інструмент тестування продуктивності на сьогоднішній день на ринку. Цей інструмент здатний моделювати сотні тисяч користувачів, перекладаючи програми під реальні навантаження, щоб визначити їх поведінку під очікуваними навантаженнями. Loadrunner має віртуальний генератор користувачів, який імітує дії живих користувачів.
- Jmeter - один з провідних інструментів, що використовується для тестування навантаження веб-серверів та серверів додатків.
FAQ
Які програми слід перевірити?
Тестування продуктивності завжди проводиться лише для систем на базі клієнт-сервер. Це означає, що будь-яка програма, яка не є архітектурою клієнт-сервер, не повинна вимагати перевірки продуктивності.
Наприклад, Microsoft Calculator не базується ні на клієнт-сервері, ні в ньому працює декілька користувачів; отже, він не є кандидатом на тестування продуктивності.
Яка різниця між тестуванням продуктивності та інженерією продуктивності
Важливо розуміти різницю між тестуванням продуктивності та інженерними технологіями. Нижче наведено розуміння:
Тестування продуктивності - це дисципліна, що займається тестуванням та звітуванням про поточну ефективність програмного додатку за різних параметрів.
Проектування продуктивності - це процес, за допомогою якого програмне забезпечення тестується та налаштовується з метою досягнення необхідної продуктивності. Цей процес спрямований на оптимізацію найважливішої характеристики продуктивності програми, тобто взаємодії з користувачем.
Історично склалося так, що тестування та налаштування були чітко відокремленими та часто конкуруючими сферами. Однак протягом останніх кількох років декілька тестерів та розробників самостійно співпрацювали над створенням команд налаштування. Оскільки ці команди досягли значного успіху, концепція поєднання тестування продуктивності та налаштування продуктивності встигла закріпитися, і зараз ми називаємо це інженерною ефективністю.
Висновок
При розробці програмного забезпечення перевірка продуктивності необхідна перед продажем будь-якого програмного продукту. Це забезпечує задоволеність споживачів та захищає інвестиції інвестора від невдач у продукті. Витрати на тестування продуктивності, як правило, більше, ніж компенсуються покращенням задоволеності клієнтів, лояльності та збереження.