Навантажувальне тестування – це один з елементів комплексного тестування продуктивності, спрямований на аналіз швидкості реакції системи на зовнішній запит. Головна мета даної перевірки – з'ясувати, чи відповідає заявленим вимогам додаток (пристрій), що тестується. Цей метод широко використовується в професійних колах під час тестування продукту, коли необхідно зрозуміти, як буде реагувати програма на одночасну експлуатацію певною кількістю користувачів.
Навантажувальне тестування найчастіше застосовується для дослідження багатокористувацьких ресурсів і різноманітних загальних систем, але інші види програмних продуктів також можуть бути протестовані цим методом. Наприклад, можна перевірити, чи зможе графічний редактор впоратися з відкриттям зображення великого обсягу. Також можна з'ясувати, чи здатна система сформувати фінансовий звіт, проаналізувавши дані декількох місяців, або навіть років. Якісно створений навантажувальний тест забезпечить найбільш достовірними результатами.
Основною ідеєю навантажувального тестування є створення певного навантаження за допомогою однакових апаратних і програмних забезпечень, щоб відстежити індекс продуктивності продукту. Найефективнішим цей метод буде на ранніх етапах розробки, тому що такий підхід дозволить отримати оптимальні результати вимірювання показників продуктивності системи.
Основні принципи навантажувального тестування:
- Унікальність запитів. Під час складання сценарію слід враховувати реальні статистичні дані, вимоги, очікувану поведінку системи.
- Час відгуку системи. Керуючи певним собі числом вимірів, можна визначити до якого інтервалу часу потрапить той чи інший запит.
- Розподіл системи залежить від часу відгуку. Кількість вузлів впливає на розкид часу відгуку системи, кожен з яких збільшує величину затримки при скануванні запитів. Цей факт варто врахувати під час складання вимог до продуктивності продукту.
- Коректність відтворення навантажувальних профілів. Складність програмного забезпечення вимагає значних витрат часу і ресурсів на проєктування, програмування і подальшу підтримку. Розробка тестів і покриття функціоналу системи повинні бути збалансованими для отримання найбільш ефективних результатів тестування в максимально короткі терміни.
Засоби навантажувального тестування
Існує думка, що для навантажувального тестування застосовуються ті ж інструменти, що і для автоматизованого. Яка ж головна відмінність? Цей метод здійснюється за допомогою інструментів, які працюють виключно з протоколами системи, тоді як автоматизоване тестування використовується на рівні інтерфейсу користувача.
Розглянемо різницю цих технік на конкретному прикладі. Існує браузер, який виконує перехід по посиланню після натискання кнопки. Для застосування автоматизованого тестування потрібно написати сценарій, який відправляє браузеру кліки миші. Щоб запустити навантажувальний тест, необхідно передати гіперпосилання від браузера до певного числа користувачів з унікальним ім'ям або паролем.
Для тестування навантаження існує ряд безкоштовних та комерційних інструментів. Розглянемо більш детально найбільш використовувані серед них.
Apache JMeter. Один з найпопулярніших безкоштовних продуктів в тестуванні навантаження, функціональності і навіть в розробці програмного забезпечення. А підтримка доповнень інших розробників допомагає включати нові функції.
Основні переваги JMeter:
- програма абсолютно безкоштовна для всіх користувачів;
- запускається на різних платформах, так як є Java продуктом;
- проста інсталяція та запуск;
- інтуїтивно зрозумілий інтерфейс;
- наочне відображення результатів роботи;
- можливість писати власні кейси;
- підтримує протоколи: HTTP, SOAP, LDAP, JDBC, JMS, і FTP;
- інтеграція з Selenium і Bean Shell для виконання автоматизованого тестування;
- можливість запису всіх активностей в браузері.
Недоліки JMeter:
- відсутня функція для запису HTTPS-зв'язку;
- не перехоплюється трафік AJAX;
- не надаються розширені можливості під час формування звітів.
Приклад використання Jmeter. Створений Get запит на сайті Google.
Перед тим як запустити програму (click on Run =>Start), необхідно зберегти jmx-файл.
Щоб проаналізувати ефективність випробування, потрібно зосередитися на двох параметрах: Throughput (пропускна здатність) і Deviation (відхилення). Пропускна здатність є найважливішим параметром. Вона являє собою здатність сервера обробляти тяжке навантаження. Чим вище пропускна здатність, тим краще продуктивність веб-серверу.
The Grinder – це ще одна відома програма для навантажувального тестування, заснована на Java. Для написання скриптів використовується мова Jython (спеціальна реалізація Java в Python). Цей інструмент надає більш потужний двигун сценаріїв з функцією їх запису.
Переваги програми The Grinder:
- використання платформ не обмежено, підходять всі, де запускається віртуальна машина Java;
- підтримка більшості протоколів;
- легка і оперативна розробка тестових сценаріїв;
- можливість створювати власні плагіни для інтерфейсу;
- спрощене налаштування параметрів;
- гнучкість у виконанні сторонніх бібліотек;
- взаємозв'язок з Jira.
Недоліки:
- періодичні несправності під час завантаження файлів великого обсягу;
- консоль не здатна регулювати рівні навантаження;
- відсутня можливість розширеного аналізу;
- для роботи з інструментом потрібні знання Jython або Clojure.
Приклад запису скрипта у програмі The Grinder
Приклад лог-файлу в The Grinder
Galting. Потужний інструмент для виконання навантажувальних тестів, використовується мова Scalа. У цій програмі знаходяться два файли: один відповідає за запис тестових сценаріїв, а другий – за їх виконання.
Переваги використання програми Galting:
- гнучкість при взаємодії з різними операційними системами і браузерами;
- візуалізація звітів у вигляді графічних таблиць;
- проста взаємодія з Jenkins і тестування через Gradle і Maven (за допомогою відповідних плагінів);
- спрощене налагодження тест-кейсів;
- простота в пошуку недоліків ще на перших етапах розробки.
Недоліки:
- зміна API може призвести до проблем запуску тестових сценаріїв попередніх версій;
- немає можливості розподілити навантаження між пристроями;
- горизонтальне масштабування відсутнє.
Приклад використання. Найпростішим способом запуску перевірки є використання bundle. Необхідно помістити файл в gatling-charts-highcharts-bundle-2.3.0\user-files\simulations\ та запустити gatling-charts-highcharts-bundle-2.3.0\bin\gatling.bat.
У консолі з'явиться пропозиція обрати скрипт.
Вище представлені короткі описи найпопулярніших безкоштовних інструментів для навантажувального тестування. На цьому перелік не закінчується. Існує велика кількість програм, які є надійними помічниками для фахівців тестування і розробки. До них також відносяться: Locust, Apache Bench, Taurus і багато інших. Серед комерційних пропозицій слід зазначити: Webload, Loadrunner, Blazemeter. Вибір інструменту здійснюється з урахуванням всіх переваг і недоліків і залежить від особистих якостей і знань фахівця, а також складності і специфічності здійснюваних перевірок або процесу розробки.