Co to jest testowanie SOA? Samouczek z przykładem

Co to jest testowanie SOA?

SOA (zorientowany na usługi ArchiTestowanie (ang. tecture) to testowanie stylu architektonicznego SOA, w którym komponenty aplikacji są projektowane w celu komunikowania się za pomocą protokołów komunikacyjnych, zwykle w sieci.

Co to jest SOA?

SOA to metoda integrowania aplikacji i procesów biznesowych w celu zaspokojenia potrzeb biznesowych.

W inżynierii oprogramowania SOA zapewnia zwinność i elastyczność procesów biznesowych. Zmiany w procesie lub aplikacji można skierować na konkretny komponent bez wpływu na cały system.

Twórcy oprogramowania w architekturze SOA albo opracowują, albo kupują fragmenty programów tzw USŁUGI.

Co to jest usługa?

Usługa SOA

  • Usługi mogą być funkcjonalną jednostką aplikacji lub procesu biznesowego, którą można ponownie wykorzystać lub powtórzyć w dowolnej innej aplikacji lub procesie. (Przykładowo na powyższym obrazku Payment Gateway to usługa, która może być ponownie wykorzystana w dowolnej witrynie handlu elektronicznego. Za każdym razem, gdy zachodzi potrzeba dokonania płatności, witryna e-commerce wywołuje/wymaga usługi Payment Gateway. Po dokonaniu płatności na bramce odpowiedź jest wysyłana do witryny e-commerce)
  • Usługi są łatwe w montażu i łatwe w rekonfiguracji komponentów.
  • Usługi można porównać do elementów konstrukcyjnych. Potrafią zbudować dowolną potrzebną aplikację. Dodawanie i usuwanie ich z aplikacji lub procesu biznesowego jest łatwe.
  • Usługi są definiowane bardziej na podstawie funkcji biznesowej, jaką pełnią, a nie fragmentów kodu.

Web Services

Usługi sieciowe to niezależne komponenty aplikacji dostępne w sieci WWW.

Można je publikować, znajdować i wykorzystywać w Internecie. Mogą komunikować się za pośrednictwem Internetu.

Usługi sieciowe SOA

Usługi sieciowe SOA

  1. Usługodawca udostępnia usługę w Internecie.
  2. Klient wyszukuje konkretną usługę internetową w Rejestrze usług internetowych
  3. Zwracany jest adres URL i kod WSDL wymaganej usługi internetowej. Używając języka WSDL i adresu URL, komunikacja pomiędzy dostawcą usług a osobą żądającą odbywa się za pośrednictwem komunikatów SOAP.
  4. Kiedy konsument wywołuje usługę internetową, zostanie nawiązane połączenie HTTP z dostawcą.
    Tworzony jest komunikat SOAP instruujący dostawcę o wywołaniu wymaganej logiki usługi internetowej.
  5. Odpowiedź otrzymana od dostawcy to komunikat SOAP, który zostanie osadzony w odpowiedzi HTTP. Ta odpowiedź HTTP to format danych zrozumiały dla aplikacji konsumenckiej.

Przykład

Strona główna Serwisu i Wyszukiwarki wyświetla codzienny raport o pogodzie. Zamiast kodować całą sekcję prognozy pogody, usługę prognozy pogody można kupić od dostawcy i zintegrować ze stronami.

Przykładowe usługi sieciowe SOAg

Testowanie SOA

SOA składa się z różnych technologii. Aplikacje zbudowane przy użyciu SOA mają różne usługi, które są luźno powiązane.

Testowanie SOA

Testowanie SOA powinno skupiać się na 3 warstwach systemu

Warstwa usług

Warstwa ta składa się z usług, usług udostępnianych przez system wywodzących się z funkcji biznesowych.

Na przykład -

Rozważ witrynę Wellness, która składa się z

  1. Śledzenie wagi
  2. Śledzenie poziomu cukru we krwi
  3. Monitor ciśnienia krwi

Moduły śledzące wyświetlają odpowiednie dane i datę ich wprowadzenia. Warstwa usług składa się z usług, które pobierają odpowiednie dane z Bazy Danych –

  • Usługa śledzenia wagi
  • Usługa śledzenia poziomu cukru we krwi
  • Usługa śledzenia ciśnienia krwi
  • Usługa logowania

Warstwa procesu

Warstwa procesów składa się z procesów, zbioru usług wchodzących w skład pojedynczej funkcjonalności.

Procesy mogą być częścią interfejsu użytkownika (np. wyszukiwarki), częścią narzędzia ETL (do pobierania danych z bazy danych).

W tej warstwie nacisk zostanie położony głównie na interfejsy użytkownika i procesy.

Interfejs użytkownika trackera wagi i jego integracja z bazą danych jest głównym celem.

Poniższe funkcje będą brane pod uwagę

  1. Dodawanie nowych danych
  2. Edycja istniejących danych
  3. Tworzenie nowego trackera
  4. Usuwanie danych

Warstwa konsumencka

Warstwa ta składa się głównie z interfejsów użytkownika.

Warstwa konsumencka

W zależności od warstwy testowanie aplikacji SOA jest podzielone na trzy poziomy.

  1. Poziom usług
  2. Poziom interfejsu
  3. Poziom od końca do końca
  • Podejście odgórne jest stosowane w projektowaniu testów.
  • Do wykonania testu stosuje się podejście oddolne.

Strategia testowania SOA

Podejście do planowania testów,

  • Testerzy SOA powinni znać całą architekturę aplikacji.
  • Aplikację należy podzielić na niezależne usługi (Usługa, która ma własną strukturę żądań i odpowiedzi i nie jest zależna od żadnej innej usługi w celu utworzenia odpowiedzi).
  • Strukturę aplikacji należy zreorganizować i podzielić na trzy komponenty – dane, usługi i aplikacje front-end.
  • Należy dokładnie przeanalizować wszystkie elementy i opracować scenariusze biznesowe.
  • Scenariusze biznesowe należy sklasyfikować jako scenariusze typowe i scenariusze specyficzne dla aplikacji.
  • A Macierz śledzenia należy przygotować, a wszystkie przypadki testowe należy powiązać ze scenariuszami biznesowymi.

Podejście do wykonania testu

  • Każdy komponent usługi powinien zostać przetestowany.
  • Testy integracyjne elementów usług należy przeprowadzić w celu sprawdzenia przepływu danych przez usługi i integralności danych.
  • Testowanie systemu pełnego modelu należy wykonać w celu sprawdzenia przepływu danych pomiędzy aplikacją front-end a bazą danych.
  • Test wydajności należy wykonać w celu dokładnego dostrojenia i optymalnej wydajności.

Metody testowania SOA

1) Testowanie oparte na scenariuszach biznesowych,

  • Należy przeanalizować różne aspekty biznesowe związane z systemem.
  • Scenariusze należy opracowywać w oparciu o integrację
  • Różne Usługi sieci Web aplikacji
  • Usługi sieciowe i aplikacje.
  • Konfigurację danych należy przeprowadzić w oparciu o powyższe scenariusze.
  • Dane należy skonfigurować tak, aby obejmowały również kompleksowe scenariusze.

2) Odgałęzienia

  • W celu testowania usług zostaną utworzone fikcyjne interfejsy.
  • Za pośrednictwem tych interfejsów można dostarczać różne dane wejściowe, a wyniki można weryfikować.
  • Gdy aplikacja korzysta z interfejsu do usługi zewnętrznej, która nie jest testowana (usługa strony trzeciej), podczas testowania integracji można utworzyć kod pośredniczący.

3) Testowanie regresyjne

  • Testy regresji w przypadku aplikacji należy przeprowadzić w przypadku wielu wydań, aby zapewnić stabilność i dostępność systemów.
  • Stworzony zostanie kompleksowy zestaw testów regresyjnych obejmujący usługi stanowiące ważną część aplikacji.
  • Ten zestaw testów można ponownie wykorzystać w wielu wersjach projektu.

4) Testowanie poziomu usług

Testowanie na poziomie usługi obejmuje testowanie komponentu pod kątem funkcjonalności, bezpieczeństwa, wydajności i interoperacyjności.

Każda usługa musi zostać najpierw przetestowana niezależnie.

5) Testy funkcjonalne

Testy funkcjonalne należy przeprowadzić dla każdej usługi

  • Upewnij się, że usługa zapewnia właściwą odpowiedź na każde żądanie.
  • W przypadku żądań z nieprawidłowymi danymi, złymi danymi itp. otrzymywane są właściwe błędy.
  • Sprawdź każde żądanie i odpowiedź dla każdej operacji, jaką usługa musi wykonać w czasie wykonywania.
  • Sprawdź komunikaty o błędach, gdy wystąpi błąd na poziomie serwera, klienta lub sieci.
  • Sprawdź, czy otrzymane odpowiedzi mają właściwy format.
  • Sprawdź, czy dane otrzymane w odpowiedzi odpowiadają żądanym danym.

6) Testowanie bezpieczeństwa

Testowanie bezpieczeństwa usługi internetowej jest ważnym aspektem podczas testowania poziomu usług aplikacji SOA; zapewnia to bezpieczeństwo aplikacji.

Podczas testowania należy uwzględnić następujące czynniki:

  • Usługa internetowa powinna przestrzegać standardów branżowych określonych w testach WS-Security.
  • Środki bezpieczeństwa powinny działać bez zarzutu.
  • Szyfrowanie danych i Digipodpisy na dokumentach
  • Uwierzytelnianie i autoryzacja
  • SQL Injection, Malware, XSS, CSRF i inne podatności mają zostać przetestowane na XML.
  • Ataki typu „odmowa usługi”

7) Testowanie wydajności

Należy przeprowadzić testowanie wydajności usługi, ponieważ usługi można ponownie wykorzystać, a z tej samej usługi może korzystać wiele aplikacji.

Podczas testowania brane są pod uwagę następujące czynniki:

  • Wydajność i funkcjonalność usługi należy przetestować pod dużym obciążeniem.
  • Wydajność usługi należy porównać podczas pracy indywidualnej i w ramach aplikacji, z którą jest ona połączona.
  • Należy przeprowadzić testy obciążeniowe usługi
  • aby zweryfikować czas reakcji
  • aby sprawdzić wąskie gardła
  • aby sprawdzić wykorzystanie procesora i pamięci
  • przewidywać skalowalność

8) Testowanie poziomu integracji

  • Testowanie poziomu usług zapewnia prawidłowe działanie tylko poszczególnych usług, nie gwarantuje działania połączonych komponentów.
  • Testy integracyjne skupiają się głównie na interfejsach.
  • Faza ta obejmuje wszystkie możliwe scenariusze biznesowe.
  • Testy niefunkcjonalne aplikacji należy przeprowadzić jeszcze raz w tej fazie. Testy bezpieczeństwa, zgodności i wydajności zapewniają dostępność i stabilność systemu we wszystkich aspektach.
  • Należy przetestować protokoły komunikacyjne i sieciowe, aby sprawdzić spójność transmisji danych między usługami.

9) Testowanie od końca do końca

Na tym etapie aplikacja spełnia wymagania biznesowe zarówno pod względem funkcjonalnym, jak i niefunkcjonalnym.

Poniższe elementy zostaną przetestowane podczas kompleksowych testów

  • Po integracji wszystkie usługi działają zgodnie z oczekiwaniami
  • Obsługa wyjątków
  • Interfejs użytkownika aplikacji
  • Prawidłowy przepływ danych przez wszystkie komponenty
  • Proces biznesowy

Wyzwania w testowaniu SOA

  • Brak interfejsów dla Usług
  • Proces testowania obejmuje wiele systemów, co powoduje konieczność stosowania złożonych danych
  • Aplikacja jest zbiorem różnych komponentów, które mają tendencję do zmian. Coraz częstsza jest potrzeba przeprowadzania testów regresyjnych.
  • Ze względu na architekturę wielowarstwową trudno jest wyizolować defekty.
  • Ponieważ usługa będzie używana w różnych interfejsach, trudno jest przewidzieć obciążenie, co utrudnia planowanie testów wydajnościowych.
  • SOA to zbiór heterogenicznych technologii. Testowanie aplikacji SOA wymaga ludzi o różnych zestawach umiejętności, co z kolei zwiększa koszty planowania i realizacji.
  • Ponieważ aplikacja stanowi integrację wielu usług, testowanie bezpieczeństwa wiąże się z pewnymi problemami. Weryfikacja uwierzytelnienia i autoryzacji jest dość trudna.

Narzędzia do testowania SOA

Na rynku dostępnych jest wiele narzędzi do testowania SOA, które pomagają testerom w testowaniu aplikacji SOA. Oto niektóre z najpopularniejszych Narzędzia do testowania SOA:

1) Interfejs użytkownika SOAP

„SOAP UI” to narzędzie do testowania funkcjonalności typu open source dla Usług i Testowanie API.

  • Aplikacja pulpitu
  • Obsługuje wiele protokołów – SOAP, REST, HTTP, JMS, AMF, JDBC
  • Usługi sieciowe można opracowywać, przeglądać i wywoływać.
  • Można go również używać do testowania obciążenia, Testowanie automatyzacjii testy bezpieczeństwa
  • Stuby mogą być tworzone przez MockServices
  • Żądania i testy usług internetowych mogą być generowane automatycznie za pośrednictwem klienta usług internetowych.
  • Mają wbudowane narzędzia do raportowania
  • Opracowany przez SmartBear

2) iTKO LISA

„LISA” to pakiet produktów zapewniający rozwiązanie do testowania funkcjonalnego systemów rozproszonych, takich jak SOA.

  • Można go również używać do regresji, integracji, testów obciążenia i wydajności.
  • Opracowany przez iTKO (CA Technologies)
  • Można go używać do projektowania i wykonywania testów.

3) Test serwisowy HP

„Test usług” to narzędzie do testowania funkcjonalnego, które obsługuje zarówno testowanie interfejsu użytkownika, jak i usług współdzielonych

  • Zarówno test funkcjonalny, jak i wydajnościowy usług można wykonać za pomocą jednego skryptu.
  • Zintegrowany z HP QC.
  • Można zarządzać ogromną ilością usług i danych.
  • Obsługuje testowanie interoperacyjności poprzez symulację środowisk klientów JEE, AXIS i DotNet.
  • Opracowany przez firmę HP.

4) Test SOA Parasoftu

SOA Test to zestaw narzędzi do testowania i analizy opracowany do testowania API i aplikacji API.

  • Obsługuje technologie sieciowe, REST, JSON, MQ, JMS, TIBCO, HTTP, XML.
  • Możliwe są testy funkcjonalne, jednostkowe, integracyjne, regresyjne, bezpieczeństwa, interoperacyjności, zgodności i wydajności.
  • Stuby można tworzyć za pomocą Parasoft Virtualize, które jest inteligentne niż interfejs SOAP.
  • Opracowany przez ParaSoft

Przypadki użycia testów SOA

Rozważmy witrynę e-commerce, która zawiera poniższe funkcje i funkcje podrzędne:

przetwarzanie zamówienia

przetwarzanie zamówienia

FAZA 1

W pierwszej fazie testów SOA, tj. fazie strategii testów, aplikacja jest podzielona na usługi i funkcje biznesowe.

Rozważmy poniżej usługi w aplikacji.

  • Utwórz zamówienie
  • Sprawdź status klienta
  • Zmień status zamówienia
  • Sprawdź status zamówienia
  • Sprawdź inwentarz

Funkcje biznesowe są tożsame z funkcjami Serwisu.

Uwaga: Dokument strategii testów zawierałby listę usług i funkcji, które należy przetestować.

FAZA 2

Faza planowania testów. Przypadki testowe są pisane dla każdego poziomu.

  1. Poziom od końca do końca. Przypadki testowe są pisane dla każdego biznesowego przypadku użycia i przepływu. Poniżej znajdują się przykładowe przypadki testowe

    • Utwórz zamówienie z aktywnym użytkownikiem.
    • Utwórz zamówienie z nieaktywnym użytkownikiem.
    • Utwórz zamówienie z dostępnym produktem o ilości zamówienia < dostępnej ilości.
    • Utwórz zamówienie z dostępnym produktem z ilością zamówienia > dostępną ilością.
    • Utwórz zamówienie składające się z wielu pozycji
    • Anuluj całkowicie zamówienie.
    • Anuluj zamówienie częściowo.
  2. Poziom integracji. Przypadki testowe są pisane w celu integracji bazy danych i interfejsu użytkownika. Poniżej znajdują się przykładowe przypadki testowe.

    • Utwórz nowe zamówienie z pojedynczym przedmiotem. Sprawdź, czy zamówienie zostało utworzone w bazie danych.
    • Utwórz nowe zamówienie z pojedynczym przedmiotem. Sprawdź, czy cena obliczona dla zamówienia jest prawidłowa.
    • Utwórz nowe zamówienie z pojedynczym przedmiotem. Sprawdź, czy ilość dostępnego produktu jest mniejsza o kwotę zamówienia.
    • Sprawdź, czy status zamówienia wyświetlany w interfejsie użytkownika jest taki sam, jak w bazie danych.
    • Anuluj zamówienie i sprawdź, czy status zamówienia został zmieniony w bazie danych.
    • Dokonując pierwszej płatności, sprawdź, czy szczegóły płatności wprowadzone w interfejsie użytkownika zostały zapisane w bazie danych.
    • Aby dokonać zwrotu płatności, sprawdź, czy szczegóły płatności w bazie danych są wyświetlane w interfejsie użytkownika.
  3. Poziom usług. Każda usługa jest testowana pod kątem wszystkich warunków danych.

Poniżej znajduje się kilka przykładów.

Nie. Szczegóły zamówienia Stan zamówienia
1 Utwórz zamówienie. Liczba elementów = 1 Ilość na zamówienie < Ilość w bazie danych
2 Utwórz zamówienie. Liczba elementów > 1 Ilość w zamówieniu < Ilość w bazie danych.
3 Utwórz zamówienie nr pozycji = 1 Ilość w zamówieniu > Ilość w bazie danych
4 Sprawdź status zamówienia Status w bazie danych = Aktywny
5 Sprawdź status zamówienia Status w bazie danych = Wysłano
6 Sprawdź status zamówienia Status w bazie danych = Anulowany
7 Sprawdź status zamówienia Identyfikator zamówienia = Nieprawidłowy
8 Sprawdź dostępność produktu Ilość produktu >0
9 Sprawdź dostępność produktu Ilość produktu =0
10 Sprawdź dostępność produktu Identyfikator produktu = nieprawidłowy

FAZA 3 – Wykonanie testu

Wykonanie testów wykorzystuje podejście oddolne, tzn. najpierw przeprowadzane jest testowanie poziomu usług, następnie poziomu integracji i na końcu Testowanie od końca do końca.

1) Poziom usług

Rozważmy to Soapui narzędzie jest brane pod uwagę do testowania aplikacji.

wsdl i URL są przeglądane w oknie testowym SOAP.

Zapytanie o każdą usługę zostanie wyświetlone w oknie zapytania.

Modyfikując dane zgodnie z przypadkami testowymi poziomu usług, tworzone są żądania dla każdego przypadku testowego.

Przypadek testowy PROŚBA Oczekiwana odpowiedź
Utwórz zamówienie. Liczba sztuk = 1Ilość na zamówienie < Ilość w opakowaniu x2 2 o3251 Udany
Utwórz nr zamówienia pozycji > 1Ilość w zamówieniu < Ilość w bazie y1 1 y2 3 o3251 Udany
Utwórz nr zamówienia pozycji = 1Ilość w zamówieniu > Ilość w bazie x23 200 zero Nieudany
Sprawdź status zamówieniaStatus w bazie danych = Aktywny o9876 Aktywny Udany
Sprawdź status zamówieniaStatus w bazie danych = Wysłano o9656 Wysłany Udany
Sprawdź status zamówienia Identyfikator zamówienia = Nieprawidłowy y5686 zero Nieudany
Sprawdź dostępność produktuIlość produktu >0 d34 34 Tak Udany
Sprawdź dostępność produktuIlość produktu =0 y34 0 NIE Udany
Sprawdź dostępność produktu Identyfikator produktu = nieprawidłowy sder Nieudany
2) Poziom integracji

Przypadki testowe na poziomie integracji są wykonywane w interfejsie użytkownika i bazie danych.

  • Utwórz zamówienie z pojedynczym przedmiotem –
  • Użytkownik otwiera witrynę.
  • Idzie złożyć zamówienie.
  • Wybiera prawidłowy produkt i ilość oraz zapisuje zamówienie.
  • Powinien zostać wyświetlony komunikat informujący o pomyślnym złożeniu zamówienia.
  • Użytkownik otwiera bazę danych i sprawdza czy szczegóły zamówienia są takie same, jak te podane na stronie internetowej.
3) Poziom od końca do końca

Przepływy biznesowe i przypadki użycia są realizowane w interfejsie użytkownika.

  • Utwórz zamówienie składające się z wielu pozycji –
  • Użytkownik otwiera stronę internetową.
  • Idzie złożyć zamówienie.
  • Zapytanie o ważny produkt i ilość dodaje go do koszyka.
  • Dodawane są inne ważne produkty z obowiązującymi ilościami, a zamówienie zostaje zapisane. Płatność następuje poprzez nową metodę płatności i złożenie zamówienia.
  • Powinien zostać wyświetlony komunikat „Zamówienie złożone pomyślnie”.
  • Tester powinien sprawdzić, czy cały przepływ odbywa się bez zniekształcania danych.

Podsumowanie

Szkicując odpowiednią strategię testowania, zasobów, narzędzi i zgodności w celu zapewnienia dobrej obsługi, testowanie SOA może dostarczyć całkowicie i doskonale przetestowaną aplikację.