Современные информационные технологии/2.
Вычислительная техника и программирование
К.т.н. Білас О.Є.
Національний університет “Львівська політехніка”,
Україна
К.т.н. Томашевський О.М.
Львівська філія Європейського університету, Україна
Технологія навантажувального
тестування клієнт-серверних систем
Тестування
навантаження системи необхідне у випадках, коли потрібно отримати відповіді на
наступні питання:
·
Що відбудеться з системою при збільшенні числа
користувачів;
·
Де межа масштабованості системи;
·
Яке серверне програмне забезпечення (ПЗ) краще
відповідає потребам системи в плані продуктивності;
·
Яке устаткування необхідне для комфортної роботи
системи;
·
Що є потенційним вузьким місцем системи з погляду
продуктивності.
На перший погляд здається, що на перераховані вище питання
можна відповісти і без проведення комплексних досліджень продуктивності
системи. Але це справедливо тільки для порівняно простих систем і навіть для
них справедливо далеко не завжди [2].
В ході ідеального тестування навантаження тими або іншими
способами емулюється навантаження від всіх джерел запитів до системи
(користувачі, зовнішні системи звітів, зовнішні джерела даних і так далі), а не
лише звернення користувачів до певних модулів функціональності системи.
Фази процесу тестування навантаження. У будь-якому
проекті навантажувального тестування можна виділити наступні стадії [3]:
·
Дослідження системи;
·
Підготовка проектної документації;
·
Створення інструментарію тестування;
·
Проведення тестування;
·
Обробка результатів і підготовка звіту.
·
Рівень кінцевого користувача;
·
Рівень персоналу, що обслуговує систему;
·
Прикладний рівень;
·
Системний рівень;
·
Апаратний (фізичний рівень);
Рівень кінцевого користувача системи дає уявлення про
бізнес-функції і комфортні часові рамки відгуку операцій. На цьому етапі
відбувається визначення варіантів використання системи, спектр навантаження на
систему.
Рівень персоналу, що обслуговує систему, необхідний для виділення
функціональних частин комплексу. Визначаються зв’язки між частинами системи і
проводиться їх оцінка на потенційні вузькі місця.
Прикладний рівень дає уявлення про внутрішнє влаштування
комплексу з погляду розробників ПЗ. Рівень може бути корисний для оцінки
архітектурних рішень, які застосовуються при створенні тестованого комплексу.
Оцінюється кількісний і якісний склад моніторів продуктивності і ресурсів.
Системний рівень необхідний для оцінки якості розгортання
системи і визначення точок установки моніторів системних ресурсів.
Аналіз апаратного рівня дозволяє визначити потенційні вузькі
місця системи на рівні апаратного забезпечення.
Без ретельного системного аналізу досліджуваного ПЗ неможливе
проведення тестування навантаження. Цей етап дає відповідь на питання: як
проводитиметься тестування, які інструменти буде потрібно, які зовнішні системи
мають емулювати, як здійснюватиметься моніторинг продуктивності досліджуваного
ПЗ.
На даному етапі, як правило, застосовується реверсивне
проектування (reverse engineering) [1]. Наприклад,
записується SQL трафік від додатку клієнта до сервера баз даних. В
найпростішому випадку потрібно визначити які запити – це просто завантаження
даних з довідників, а які є реакцією аплікації на дії користувача і вимагають
параметризації (внесення змінних значень, наприклад, залежних від введених
користувачем даних). Коректна параметризація – умова створення навантаження,
адекватного реальному. Те ж саме справедливо і для HTTP трафіку у разі
навантаження web-аплікацій.
Навантажувальне тестування інформаційних систем. Для
інформаційних систем, що працюють з великими об’ємами даних, завдання
проведення випробувань навантажень набувають особливого значення. Часто система
показує хорошу продуктивність на даних невеликого об’єму, але із зростанням навантаження
виникають різноманітні проблеми, які можуть бути пов’язані з неоптимальною
побудовою запитів, технологічними конфліктами різних елементів системи,
обмеженнями системних ресурсів, тощо [5].
Навантажувальне тестування систем з
клієнт-серверною архітектурою призначене для визначення максимальної кількості
запитів від клієнта (пропускної здатності) та оптимальної конфігурації сервера
при наступних станах системи [1]:
·
Нормальному (base);
·
Навантаженому (load);
·
Критичному (stress).
У всіх випадках при тестуванні
відбувається визначення часу стабільного перебування у фіксованому стані і межа
переходу у наступний (рис.1).
Рис.1.
Залежність часу відгуку сервера від кількості запитів від клієнта
Зазначимо, що після перевищення межі
критичного навантаження відбувається збій системи різного ступеня складності.
Етапність, методика і інструментарій.
У
проектах по тестуванню навантаження можна виділити наступні етапи [4]:
·
Аналіз і проектування моделі навантаження;
·
налаштування випробувального стенду
(рис.2);
·
розробка типових сценаріїв;
·
реалізація моделі навантаження;
·
проведення навантажувального
тестування;
Необхідною основою для проведення навантажувального тестування є
інструментальні засоби, що дозволяють в лабораторних умовах емулювати складне
оточення реального світу телекомунікаційних, клієнт-серверних і
Internet-взаємодій і виконати усестороннє тестування інформаційної системи.
Завдання таких інструментальних засобів – організація лабораторного
випробувального стенду, який емулюватиме від десятків до тисяч користувачів, що
надсилають і одержують інформацію, відтворюючи тим самим складну взаємодію між
клієнтським і серверним ПЗ, базами даних, Internet-серверами і іншими
системами.
Рис.2.
Cтруктура
випробувального стенду
Більшість розвинених інструментальних засобів тестування навантаження. наприклад
WAPT, Apache, JMeter, Mercury LoadRunner [4], дозволяють організувати
випробувальний стенд з розподіленим виконанням тестів і централізованим
управлінням.
Як правило, структура такого стенду включає:
·
Об’єкт випробувань;
·
Центральну станцію управління, де розташовуються сервіси,
репозиторій результатів тестування і графічна консоль користувача;
·
Декілька робочих станцій моделювання навантаження, на яких
розташовані компоненти для імітації діяльності користувачів (до декількох
сотень кожна);
·
Додаткові станції моніторингу і генерації тестових даних для
забезпечення безперебійного постачання тестовими даними робочих станцій. Також
на окремих станціях запускаються вимірювальні монітори, що здійснюють
спостереження за процесами обробки і передають виміряну статистику на
центральну станцію.
Моделювання навантаження здійснюється шляхом виконання тестових
транзакцій, кожна з яких включає певний набір тестів, що виконуються в
послідовному або довільному порядку (рис.3):
Рис.3.
Залежність середнього часу (в мс.) завантаження всіх сторінок (Pages) зі сценарію для кожного
віртуального користувача (Virtual Users)
Важливим є
також визначення максимального часу відгуку серверу, при якому відбувається
робота системи у заданому стані (рис.4):
Рис.4. Максимальний час (в мс.) завантаження всіх сторінок зі
сценарію для кожного віртуального користувача
Висновки. Основними
результатами проведення навантажувального тестування є обчислення показників
продуктивності системи – такі, як час відгуку сервера на запит клієнта і завантаженість
системних ресурсів сервера в залежності від кількості користувачів. У
відповідності до результатів може проводитись модифікація апаратно-програмної
конфігурації системи.
Література:
1. Липаев
В.В. Обеспечение качества программных средств. Методы и стандарты. - М.:
Синтег, 2001.- 246 с.
2. Макгрегор Дж., Сайкс Д.
Тестирование объектно-ориентированного программного обеспечения.- К: Диасофт,
2002.- 432с.
3.
Тамре Л. Введение в тестирование программного
обеспечения.- М.: Издательский дом “Вильямс”,
2003.- 368с.