Co to jest testowanie SOA? Samouczek z przykładem

Spisie treści:

Anonim

Co to jest testowanie SOA?

SOA (Service Oriented Architecture) Testowanie to testowanie stylu architektury SOA, w którym komponenty aplikacji są zaprojektowane do komunikacji za pośrednictwem protokołów komunikacyjnych, zwykle w sieci.

W tym samouczku nauczysz się:

  • Co to jest SOA?
  • Co to jest usługa?
  • Testowanie SOA
  • Strategia testowania SOA
  • Metody testowania SOA
  • Wyzwania w testowaniu SOA
  • Narzędzia do testowania SOA
  • Przypadki użycia testowania architektury SOA

Co to jest SOA?

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

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

Twórcy oprogramowania w SOA opracowują lub kupują fragmenty programów o nazwie SERVICES.

Co to jest usługa?

  • Usługi mogą być funkcjonalną jednostką aplikacji lub procesu biznesowego, która może być ponownie wykorzystana lub powtórzona w dowolnej innej aplikacji lub procesie.

    (Na przykład na powyższym obrazku bramka płatności to usługa, z której można ponownie skorzystać w dowolnej witrynie handlu elektronicznego. Zawsze, gdy konieczne jest dokonanie płatności, witryna handlu elektronicznego wywołuje / żąda usługi Payment Gateway. Po dokonaniu płatności w bramka, odpowiedź jest wysyłana do serwisu e-commerce)

  • Usługi są łatwe w montażu i rekonfiguracji komponentów.
  • Usługi można porównać do bloków konstrukcyjnych. Potrafią skonstruować dowolną potrzebną aplikację. Dodawanie i usuwanie ich z aplikacji lub procesu biznesowego jest łatwe.
  • Usługi są definiowane bardziej przez funkcję biznesową, którą pełnią, a nie jako fragmenty kodu.

Usługi internetowe

Usługi internetowe to niezależne składniki aplikacji, które są dostępne w Internecie.

Można je publikować, wyszukiwać i wykorzystywać w sieci. Mogą komunikować się przez internet.

  1. Usługodawca publikuje usługę w Internecie.
  2. Klient wyszukuje określoną usługę sieciową w rejestrze usług sieci Web
  3. Zwracany jest adres URL i kod WSDL dla wymaganej usługi WWW.

    >> Używając WSDL i adresu URL, komunikacja między dostawcą usług a żądającym odbywa się za pośrednictwem komunikatów SOAP. <<

  4. Gdy konsument dzwoni do usługi internetowej, zostanie nawiązane połączenie HTTP z dostawcą.

    Tworzony jest komunikat SOAP, aby poinstruować dostawcę o wywołaniu wymaganej logiki usługi WWW.

  5. Odpowiedź otrzymana od dostawcy to komunikat SOAP, który zostanie osadzony w odpowiedzi HTTP. Ta odpowiedź HTTP jest formatem danych zrozumiałym dla aplikacji konsumenckiej.

Przykład

Strona główna witryny internetowej i wyszukiwarki wyświetla codzienne prognozy pogody. Zamiast kodować całą sekcję prognozy pogody, można kupić usługę raportu pogodowego od dostawcy i zintegrować ją 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 koncentrować się na 3 warstwach systemu

Warstwa usług

Ta warstwa składa się z usług, usług udostępnianych przez system wywodzący się z funkcji biznesowych.

Na przykład -

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

  1. Tracker wagi
  2. Tracker cukru we krwi
  3. Monitor ciśnienia krwi

Trackery 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 Weight Tracker
  • Usługa śledzenia poziomu cukru we krwi
  • Usługa monitorowania ciśnienia krwi
  • Usługa logowania

Warstwa procesowa

Warstwa procesów składa się z procesów, zbioru usług, które są częścią pojedynczej funkcjonalności.

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

Główny nacisk w tej warstwie będzie położony na interfejsy użytkownika i procesy.

Głównym celem jest interfejs użytkownika urządzenia do śledzenia wagi 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 trackera
  4. Usuwanie danych

Warstwa konsumenta

Ta warstwa składa się głównie z interfejsów użytkownika.

W oparciu o warstwę testowanie aplikacji SOA jest podzielone na trzy poziomy.

  1. Poziom usług
  2. Poziom interfejsu
  3. Poziom od końca do końca
  • Do projektowania testów stosuje się podejście odgórne.
  • Podejście oddolne jest używane do wykonywania testów.

Strategia testowania SOA

Podejście do planowania testów,

  • Pełną architekturę aplikacji powinni zrozumieć Testerzy SOA.
  • Aplikacja musi zostać podzielona 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 przeorganizować na trzy komponenty - dane, usługi i aplikacje front-end.
  • Wszystkie komponenty należy dokładnie przeanalizować, a scenariusze biznesowe powinny zostać wykreślone.
  • Scenariusze biznesowe należy klasyfikować jako scenariusze typowe i scenariusze specyficzne dla aplikacji.
  • Należy przygotować macierz śledzenia, a wszystkie przypadki testowe należy prześledzić do scenariuszy biznesowych.

Podejście do wykonania testów

  • Każdy komponent usługi powinien zostać przetestowany.
  • Należy przeprowadzić testy integracyjne komponentów usług, aby zweryfikować przepływ danych przez usługi i integralność danych.
  • Należy przeprowadzić testy systemowe całego modelu, aby zweryfikować przepływ danych między aplikacją frontendową a bazą danych.
  • Testy wydajności należy przeprowadzić w celu dostrojenia i optymalnej wydajności.

Metody testowania SOA

1) Testowanie oparte na danych opartych na scenariuszach biznesowych,

  • Należy przeanalizować różne aspekty biznesowe związane z systemem.
  • Scenariusze należy opracować w oparciu o integrację
    • Różne usługi internetowe aplikacji
    • Usługi internetowe i aplikacje.
  • Dane należy skonfigurować w oparciu o powyższe scenariusze.
  • Dane należy skonfigurować tak, aby obejmowały również scenariusze od końca do końca.

2) Stubs

  • Zostaną utworzone atrapy interfejsów do testowania usług.
  • Poprzez te interfejsy mogą być dostarczane różne dane wejściowe, a wyjścia mogą być sprawdzane.
  • 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 regresji

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

4) Testowanie poziomu usług

Testowanie poziomu usług obejmuje testowanie komponentu pod kątem funkcjonalności, bezpieczeństwa, wydajności i współdziałania.

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

5) Testowanie funkcjonalne

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

  • 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ą prawidłowe błędy.
  • Sprawdź każde żądanie i odpowiedź dla każdej operacji, którą usługa musi wykonać w czasie wykonywania.
  • Sprawdź poprawność komunikatów o błędach, gdy wystąpi błąd na poziomie serwera, klienta lub sieci.
  • Sprawdź, czy otrzymane odpowiedzi są we właściwym formacie.
  • Sprawdź, czy dane otrzymane w odpowiedzi odpowiadają żądanym danym.

6) Testowanie bezpieczeństwa

Testowanie bezpieczeństwa usługi sieciowej 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 sieci Web powinna przestrzegać standardów branżowych określonych przez testy WS-Security.
  • Środki bezpieczeństwa powinny działać bez zarzutu.
  • Szyfrowanie danych i podpisów cyfrowych na dokumentach
  • Uwierzytelnianie i autoryzacja
  • SQL Injection, Malware, XSS, CSRF, inne luki należy przetestować na XML.
  • Ataki typu „odmowa usługi”

7) Testowanie wydajności

Należy przeprowadzić testy wydajności usługi, ponieważ usługi te są wielokrotnego użytku i wiele aplikacji może korzystać z tej samej usługi.

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

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

9) Testowanie na poziomie integracji

  • Testowanie poziomu usług zapewnia poprawne działanie tylko usług indywidualnie, nie gwarantuje działania połączonych elementów.
  • Testy integracyjne koncentrują się głównie na interfejsach.
  • Ta faza obejmuje wszystkie możliwe scenariusze biznesowe.
  • Testowanie niefunkcjonalne aplikacji powinno zostać przeprowadzone jeszcze raz w tej fazie. Testy bezpieczeństwa, zgodności i wydajności zapewniają dostępność i stabilność systemu we wszystkich aspektach.
  • Protokoły komunikacyjne i sieciowe powinny zostać przetestowane w celu sprawdzenia spójności komunikacji danych między usługami.

10) Testowanie od końca do końca

Ta faza zapewnia, że ​​aplikacja spełnia wymagania biznesowe zarówno funkcjonalnie, jak i niefunkcjonalnie.

Zapewniamy, że poniższe elementy zostaną przetestowane podczas testów od końca do końca

  • Wszystkie usługi działają zgodnie z oczekiwaniami po integracji
  • Obsługa wyjątków
  • Interfejs użytkownika aplikacji
  • Właściwy przepływ danych przez wszystkie komponenty
  • Proces biznesowy

Wyzwania w testowaniu SOA

  • Brak interfejsów do usług
  • Proces testowania obejmuje wiele systemów, tworząc tym samym złożone potrzeby w zakresie danych
  • Aplikacja jest zbiorem różnych komponentów, które mają tendencję do zmian. Potrzeba testów regresyjnych jest częstsza.
  • Ze względu na architekturę wielowarstwową trudno jest wyodrębnić defekty.
  • Ponieważ usługa będzie używana w różnych interfejsach, trudno jest przewidzieć obciążenie, co utrudnia planowanie testów wydajności.
  • SOA to zbiór heterogenicznych technologii. Testowanie aplikacji SOA wymaga osób o różnych umiejętnościach, co z kolei zwiększa koszty planowania i wykonania.
  • Ponieważ aplikacja jest integracją wielu usług, testowanie bezpieczeństwa ma swój własny udział w nieszczęściach. Weryfikacja uwierzytelniania 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 popularnych narzędzi do testowania SOA :

1) SOAP UI

„SOAP UI” to narzędzie open source do testowania funkcjonalnego usług i testowania interfejsów API.

  • Aplikacja pulpitu
  • Obsługuje wiele protokołów - SOAP, REST, HTTP, JMS, AMF, JDBC
  • Usługi internetowe można opracowywać, sprawdzać i wywoływać.
  • Może również służyć do testowania obciążenia, testowania automatyzacji i testowania zabezpieczeń
  • Stuby mogą być tworzone przez MockServices
  • Żądania i testy usługi sieci Web mogą być generowane automatycznie za pośrednictwem klienta usługi sieciowej.
  • Mają wbudowane narzędzia do raportowania
  • Opracowany przez SmartBear

2) iTKO LISA

„LISA” to pakiet produktów, który zapewnia funkcjonalne rozwiązanie testowe dla systemów rozproszonych, takich jak SOA.

  • Może również służyć do testowania regresji, integracji, testowania obciążenia i wydajności.
  • Opracowany przez iTKO (CA Technologies)
  • Może być używany 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ólnych

  • Za pomocą jednego skryptu można przeprowadzić zarówno test funkcjonalny, jak i wydajnościowy usług.
  • Zintegrowany z HP QC.
  • Można zarządzać ogromną ilością usług i danych.
  • Obsługuje testowanie współdziałania poprzez symulowanie środowisk klienckich JEE, AXIS i DotNet.
  • Opracowany przez HP.

4) Test Parasoft SOA

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

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

Przypadki użycia testowania architektury SOA

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

przetwarzanie zamówienia

FAZA 1

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

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

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

Funkcje biznesowe są takie same, jak funkcje Witryny.

Uwaga: Dokument dotyczący strategii testów zawierałby listę usług i funkcji, które mają zostać przetestowane.

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 znajduje się przykład przypadków testowych

    • Utwórz zamówienie z aktywnym użytkownikiem.
    • Utwórz zamówienie z nieaktywnym użytkownikiem.
    • Utwórz zamówienie z dostępnym produktem z zamówieniem
    • Utwórz zamówienie z dostępnym produktem z zamówieniem> dostępna ilość.
    • Utwórz zamówienie z wieloma przedmiotami
    • Całkowicie anuluj 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 za zamówienie jest poprawna.
    • Utwórz nowe zamówienie z pojedynczym przedmiotem. Sprawdź, czy ilość dostępnego produktu jest mniejsza o kwotę zamówienia.
    • Sprawdź, czy stan zamówienia wyświetlanego w interfejsie użytkownika jest taki sam, jak w bazie danych.
    • Anuluj zamówienie i sprawdź, czy status zamówienia został zmodyfikowany w bazie danych.
    • W przypadku pierwszej płatności sprawdź, czy szczegóły płatności wprowadzone w interfejsie użytkownika są zapisane w bazie danych.
    • W przypadku 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 pozycji = 1 Ilość na zamówienie
2 Utwórz zamówienie. Liczba pozycji> 1 Ilość na zamówieniu
3 Utwórz numer zamówienia pozycji = 1 Ilość na zamówieniu> Ilość w bazie danych
4 Sprawdź status zamówienia Stan w bazie danych = aktywny
5 Sprawdź status zamówienia Stan w bazie danych = wysłano
6 Sprawdź status zamówienia Stan w bazie danych = Anulowano
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

Wykonywanie testów wykorzystuje podejście oddolne, tj. Najpierw przeprowadza się testy na poziomie usług, potem na poziomie integracji, a na końcu na testach od końca do końca.

1) Poziom usług

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

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

Żądanie każdej usługi zostanie wyświetlone w oknie zapytania.

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

Przypadek testowy

Żądanie

Oczekiwana odpowiedź

Utwórz zamówienie. Liczba pozycji = 1 Ilość na zamówienie

x2 2

o3251 Pomyślne

Utwórz zamówienie. sztuk> 1 Ilość na zamówieniu

y11 y2 3

o3251 Pomyślne

Utwórz zamówienie z pozycji = 1 ilość w zamówieniu> ilość na db

x23 200

null Niepowodzenie

Sprawdź Status zamówienia Status w bazie danych = Aktywny

o9876

Active Pomyślne

Sprawdź status zamówienia Status w bazie danych = wysłane

o9656

Wysłano Pomyślnie

Sprawdź status zamówienia Identyfikator zamówienia = Nieprawidłowe

y5686

null Niepowodzenie

Sprawdź dostępność produktuIlość produktu> 0

d34

34 tak powodzenie

Sprawdź dostępność produktu Ilość produktu = 0

y34

0nie Sukces

Sprawdź dostępność produktu Identyfikator produktu = nieprawidłowy

sder

Niepowodzenie

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 o pomyślnym złożeniu zamówienia.
  • Użytkownik otwiera bazę danych i sprawdza, czy szczegóły zamówienia są takie same, jak podane na stronie internetowej.
3) Poziom od końca do końca

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

  • Utwórz zamówienie z wieloma przedmiotami -
  • Użytkownik otwiera witrynę internetową.
  • Idzie złożyć zamówienie.
  • Zapytanie o prawidłowy produkt i ilość dodaje je do koszyka.
  • Dodawane są inne ważne produkty z prawidłowymi ilościami, a zamówienie jest zapisywane. Płatność odbywa się za pomocą nowej metody płatności i składane jest zamówienie.
  • Powinien zostać wyświetlony komunikat „Zamówienie złożone pomyślnie”.
  • Tester powinien sprawdzić, czy cały przepływ jest wykonywany bez wypaczania danych.

Wniosek:

Dzięki naszkicowaniu właściwej strategii testowania, zasobów, narzędzi i zgodności w celu zapewnienia dobrej obsługi, testy SOA mogą dostarczyć całkowicie i doskonale przetestowaną aplikację.