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. A URL i zwracany jest kod WSDL dla wymaganej usługi sieciowej. Używając kodu WSDL i URL, komunikacja pomiędzy dostawcą usługi i wnioskodawcą odbywa się za pomocą 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. Waga Tracker
  2. Cukier we krwi Tracker
  3. Ciśnienie krwi Tracker

TracWarstwa usług wyświetla odpowiednie dane i datę ich wprowadzenia. Warstwa usług składa się z usług, które pobierają odpowiednie dane z bazy danych –

  • Waga Tracusługa ker
  • Cukier we krwi Tracusługa ker
  • Ciśnienie krwi Tracusługa ker
  • 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 wagi tracGłównym celem jest ker i jego integracja z bazą danych.

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

  1. Dodawanie nowych danych
  2. Edycja istniejących danych
  3. Tworzenie nowego tracker
  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 Tracmacierz możliwości należy przygotować i wszystkie przypadki testowe powinny być tracdostosowane do scenariuszy biznesowych.

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) SOAP UI

"SOAP UI„to narzędzie typu open source do testowania funkcjonalnego 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.
  • Można tworzyć szczątki za pomocą Parasoft Virtualize, które są inteligentniejsze niż SOAP UI.
  • Opracowany przez ParaSoft

Przypadki użycia testów SOA

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

Proces przetwarzania zamówienia

Proces przetwarzania 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 oraz 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.

Wniosek

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ę.

Podsumuj ten post następująco: