Тестування сервіс-орієнтованої архітектури (SOA - Service Oriented Architecture)

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

  • Сервіси можуть бути функціональними одиницями програми або бізнес-процесу, які можуть повторно використовувати або повторювати будь-який інший додаток або процес. Наприклад, платіжний шлюз – це сервіс, який може повторно використовувати будь-який сайт електронної комерції. Щоразу, коли необхідно зробити платіж, сайт електронної комерції викликає/запитує сервіс платіжного шлюзу. Після оплати на шлюзі відповідь надсилається на сайт електронної комерції.

  • Сервіси легко зібрати та легко переконфігурувати їх компоненти.

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

  • Сервіси визначаються переважно бізнес-функцією, яку вони виконують, а не фрагментами коду.

Веб-сервіси

Веб-сервіси – це незалежні компоненти програм, доступні через Інтернет. Їх можна опублікувати, знайти та використовувати в Інтернеті. Вони можуть спілкуватися через Інтернет.

https://www.guru99.com/images/jsp/030116_0725_LearnSOATes3.png

  • Постачальник послуг публікує послугу в Інтернеті;

  • Клієнт шукає конкретну веб-службу у реєстрі веб-служб;

  • Повертається URL-адреса та WSDL для потрібної веб-служби (при використанні WSDL та URL-адреси зв'язок між постачальником послуг і стороною, що запитує, здійснюється за допомогою повідомлень SOAP);

  • Коли споживач викликає веб-службу, з провайдером встановлюється з'єднання HTTP. Повідомлення SOAP створюється, щоб вказати постачальнику виклику необхідної логіки веб-служби;

  • Відповідь, отримана від постачальника, є повідомлення SOAP, яке буде вбудоване у відповідь HTTP. Ця HTTP-відповідь є форматом даних, зрозумілим споживчому додатку.

Тестування SOA

https://www.guru99.com/images/jsp/030116_0725_LearnSOATes5.png

Тестування SOA має бути зосереджено на трьох рівнях:

https://www.guru99.com/images/jsp/030116_0725_LearnSOATes6.png

Методи тестування 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 потрібні люди з різним набором навичок, що, у свою чергу, збільшує витрати на планування та виконання;

  • Оскільки додаток є інтеграцією декількох сервісів, тестування безпеки має свою частку проблем. Перевірка автентифікації та авторизації є досить складною.

Джерела:

Дод. матеріал:

Last updated