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ł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ługodawca udostępnia usługę w Internecie.
- Klient wyszukuje konkretną usługę internetową w Rejestrze usług internetowych
- 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.
- 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. - 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.
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 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
- Śledzenie wagi
- Śledzenie poziomu cukru we krwi
- 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ę
- Dodawanie nowych danych
- Edycja istniejących danych
- Tworzenie nowego trackera
- Usuwanie danych
Warstwa konsumencka
Warstwa ta składa się głównie z interfejsów użytkownika.
W zależności od warstwy testowanie aplikacji SOA jest podzielone na trzy poziomy.
- Poziom usług
- Poziom interfejsu
- 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
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.
- 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.
- 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.
- 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ę.