Тестування сервіс-орієнтованої архітектури (SOA - Service Oriented Architecture)
Last updated
Last updated
SOA - це метод інтеграції бізнес-додатків та процесів разом для задоволення потреб бізнесу. У програмній інженерії SOA забезпечує маневреність та гнучкість бізнес-процесів. Зміни в процесі або додатку можуть бути спрямовані на конкретний компонент, не торкаючись усієї системи. Розробники програмного забезпечення в SOA або розробляють або купують шматки програм під назвою сервіси.
Сервіси можуть бути функціональними одиницями програми або бізнес-процесу, які можуть повторно використовувати або повторювати будь-який інший додаток або процес. Наприклад, платіжний шлюз – це сервіс, який може повторно використовувати будь-який сайт електронної комерції. Щоразу, коли необхідно зробити платіж, сайт електронної комерції викликає/запитує сервіс платіжного шлюзу. Після оплати на шлюзі відповідь надсилається на сайт електронної комерції.
Сервіси легко зібрати та легко переконфігурувати їх компоненти.
Сервіси можна порівняти із будівельними блоками. Вони можуть створити будь-яку необхідну програму. Додавати та видаляти їх із програми чи бізнес-процесу дуже просто.
Сервіси визначаються переважно бізнес-функцією, яку вони виконують, а не фрагментами коду.
Веб-сервіси
Веб-сервіси – це незалежні компоненти програм, доступні через Інтернет. Їх можна опублікувати, знайти та використовувати в Інтернеті. Вони можуть спілкуватися через Інтернет.
Постачальник послуг публікує послугу в Інтернеті;
Клієнт шукає конкретну веб-службу у реєстрі веб-служб;
Повертається URL-адреса та WSDL для потрібної веб-служби (при використанні WSDL та URL-адреси зв'язок між постачальником послуг і стороною, що запитує, здійснюється за допомогою повідомлень SOAP);
Коли споживач викликає веб-службу, з провайдером встановлюється з'єднання HTTP. Повідомлення SOAP створюється, щоб вказати постачальнику виклику необхідної логіки веб-служби;
Відповідь, отримана від постачальника, є повідомлення SOAP, яке буде вбудоване у відповідь HTTP. Ця HTTP-відповідь є форматом даних, зрозумілим споживчому додатку.
Тестування SOA
Тестування SOA має бути зосереджено на трьох рівнях:
Методи тестування SOA
1. Тестування на основі бізнес-сценаріїв на основі даних (Business scenario driven data based testing)
Слід проаналізувати різні бізнес-аспекти, пов'язані із системою;
Сценарії слід розробляти на основі інтеграції:
Різні веб-сервіси програми;
Веб-сервіси та додатки;
Налаштування даних має виконуватися на основі описаних вище сценаріїв;
Налаштування даних має бути виконане так, щоб охопити наскрізні сценарії.
2. Заглушки (Stubs)
Буде створено фіктивні інтерфейси для тестування сервісів;
Через ці інтерфейси можуть бути надані різні вхідні дані, а вихідні дані можуть бути перевірені;
Коли програма використовує інтерфейс до зовнішньої служби, яка не тестується (стороння служба), під час інтеграційного тестування може бути створена заглушка.
3. Regression testing
Регресійне тестування програми слід проводити за наявності кількох випусків, щоб забезпечити стабільність та доступність систем;
Буде створено комплексний набір регресійних тестів, що охоплює служби, які становлять важливу частину програми;
Цей набір тестів можна повторно використовувати у кількох версіях проекту.
4. Service Level Testing
Тестування рівня обслуговування включає тестування компонента на функціональність, безпеку, продуктивність та сумісність. Кожна служба має бути спочатку протестована незалежно.
5. Functional Testing
Служба надає правильну відповідь на кожен запит;
Правильні помилки приймаються для запитів з невірними даними, невірними даними тощо;
Перевіряйте кожен запит та відповідь для кожної операції, яку служба повинна виконувати під час виконання;
Перевіряйте повідомлення про помилки при виникненні помилки на рівні сервера, клієнта чи мережі;
Переконайтеся, що відповіді мають правильний формат;
Переконайтеся, що дані, отримані у відповідь, відповідають даним.
6. Security Testing
Веб-служба повинна дотримуватися галузевого стандарту, визначеного WS-Security;
Заходи безпеки повинні працювати бездоганно;
Шифрування даних та цифрові підписи на документах;
Аутентифікація та авторизація;
Ін'єкції SQL, шкідливе програмне забезпечення, XSS, CSRF та інші вразливості повинні бути протестовані на XML;
Атаки відмови в обслуговуванні.
7. Performance Testing
Продуктивність та функціональність сервісу необхідно тестувати під великим навантаженням;
Продуктивність сервісу необхідно порівнювати при роботі окремо та у додатку, з яким він пов'язаний;
Необхідно провести навантажувальне тестування сервісу:
перевірити час відгуку;
перевірити наявність вузьких місць;
для перевірки використання процесора та пам'яті;
прогнозувати масштабованість.
8. Integration level testing
Service level testing забезпечує правильну роботу лише сервісів окремо, але з гарантує роботу пов'язаних компонентів;
Інтеграційне тестування проводиться із упором на інтерфейси;
Цей етап охоплює всі можливі бізнес-сценарії;
Нефункціональне тестування програми має бути виконане ще раз на цьому етапі. Безпека, відповідність вимогам та тестування продуктивності забезпечують доступність та стабільність системи у всіх аспектах;
Комунікаційні та мережеві протоколи мають бути протестовані для перевірки узгодженості передачі між службами.
9. End to End testing
Ця фаза гарантує, що програма відповідає бізнес-вимогам як функціонально, так і нефункціонально.
Всі послуги працюють як належить після інтеграції;
Обробка винятків;
Користувальницький інтерфейс програми;
Належний потік даних через усі компоненти;
Бізнес процес.
Проблеми тестування SOA
Відсутність інтерфейсів для сервісів;
Процес тестування охоплює кілька систем, що створює складні потреби у даних;
Додаток є набір різних компонентів, які мають властивість змінюватися. Потреба у регресійному тестуванні виникає частіше;
Через багатошарову архітектуру важко ізолювати дефекти;
Оскільки служба використовуватиметься у різних інтерфейсах, важко передбачити навантаження, що ускладнює планування тестування продуктивності;
SOA є набір різнорідних технологій. Для тестування програми SOA потрібні люди з різним набором навичок, що, у свою чергу, збільшує витрати на планування та виконання;
Оскільки додаток є інтеграцією декількох сервісів, тестування безпеки має свою частку проблем. Перевірка автентифікації та авторизації є досить складною.
Джерела:
Дод. матеріал: