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.
- Usługodawca publikuje usługę w Internecie.
- Klient wyszukuje określoną usługę sieciową w rejestrze usług sieci Web
- 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. <<
- 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.
- 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
- Tracker wagi
- Tracker cukru we krwi
- 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ę
- Dodawanie nowych danych
- Edycja istniejących danych
- Tworzenie nowego trackera
- 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.
- Poziom usług
- Poziom interfejsu
- 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.
- 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.
- 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.
- 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 |
|
|
Utwórz zamówienie. sztuk> 1 Ilość na zamówieniu |
|
|
Utwórz zamówienie z pozycji = 1 ilość w zamówieniu> ilość na db |
|
|
Sprawdź Status zamówienia Status w bazie danych = Aktywny |
|
|
Sprawdź status zamówienia Status w bazie danych = wysłane |
|
|
Sprawdź status zamówienia Identyfikator zamówienia = Nieprawidłowe |
|
|
Sprawdź dostępność produktuIlość produktu> 0 |
|
|
Sprawdź dostępność produktu Ilość produktu = 0 |
|
|
Sprawdź dostępność produktu Identyfikator produktu = nieprawidłowy |
|
|
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ę.