Samouczek testowania usług sieciowych: jak testować? Ucz się na przykładzie
Co to jest usługa internetowa?
Usługi sieciowe to mechanizm lub medium komunikacji, za pomocą którego dwie aplikacje/maszyny będą wymieniać się danymi, niezależnie od ich podstawowej architektury i technologii.
Co to jest testowanie usług internetowych?
Testowanie usług internetowych to rodzaj testowania oprogramowania, który sprawdza poprawność usług internetowych. Celem testowania usług sieciowych jest sprawdzenie funkcjonalności, niezawodności, wydajności i bezpieczeństwa interfejsu API (interfejsu programu aplikacji). Testowanie usług sieciowych jest w niektórych przypadkach podobne do testów jednostkowych. Możesz przetestować usługę internetową ręcznie lub utworzyć własny kod automatyzacji lub skorzystać z gotowego narzędzia do automatyzacji, takiego jak Postman.
Dlaczego potrzebna jest usługa internetowa?
Ogólnie rzecz biorąc, aplikacje komputerowe są tworzone z myślą o użytkownikach, którzy wysyłają żądanie do usługi programistycznej, która następnie zwraca odpowiedź w formacie czytelnym dla człowieka.
W nowoczesnej epoce technologii, jeśli chcesz zbudować aplikację, nie musisz budować wszystkiego od zera. Dostępnych jest wiele gotowych usług, które możesz podłączyć do swojej aplikacji i zacząć świadczyć te usługi w swojej aplikacji.
Na przykład chcesz wyświetlić informacje o prognozie pogody, których nie musisz zbierać, przetwarzać i renderować w swojej aplikacji. Usługi możesz wykupić od osób, które mają już ugruntowaną pozycję w przetwarzaniu i publikowaniu tego typu danych.
Usługi sieciowe pozwalają nam na realizację tego typu wdrożeń.
Jako przykład rozważmy następującą usługę internetową
http://www.webservicex.net/stockquote.asmx?op=GetQuote
Daje wartość akcji dla firmy.
Znajdźmy cenę akcji dla Google (Symbol: GOOG)
Odpowiedź XML podaje cenę akcji.
Ta usługa internetowa może być wywoływana przez aplikację przy użyciu protokołu SOAP lub HTTP.
Protokoły usług internetowych
Usługi sieciowe można wdrażać na różne sposoby, jednak najpopularniejsze są dwa poniższe podejścia do wdrażania.
- SOAP (prosty protokół dostępu do obiektów)
- REST (architektura transferu stanu reprezentacyjnego)
SOAP
SOAP to standardowy protokół zdefiniowany przez standard W3C do wysyłania i odbierania żądań i odpowiedzi usług sieciowych.
SOAP używa Format XML do wysyłania i odbierania żądania i dlatego dane są danymi niezależnymi od platformy. Komunikaty SOAP są wymieniane pomiędzy aplikacjami dostawcy i aplikacją odbierającą w ramach obwiedni SOAP.
Ponieważ SOAP korzysta z prostego protokołu transportowego http, jego komunikaty nie są blokowane przez zapory sieciowe.
REST
REST oznacza REpresentational State Transfer; jest to architektura, która zazwyczaj działa przez HTTP. Styl REST kładzie nacisk na interakcje między klientami i usługami, które są udoskonalane przez ograniczoną liczbę operacji. REST jest alternatywą dla SOAP (Simple Object Access Protocol) i zamiast używać XML do żądania, REST w niektórych przypadkach używa prostego adresu URL. W przeciwieństwie do SOAP, aplikacje RESTFUL używają wbudowanych nagłówków HTTP do przenoszenia meta-informacji.
Istnieją różne kody, których REST używa do określenia, czy użytkownik ma dostęp do API, czy nie, np. kod 200 lub 201 wskazuje pomyślną interakcję z treścią odpowiedzi, podczas gdy 400 oznacza nieprawidłowe żądanie lub identyfikator URI żądania nie pasuje do interfejsów API w systemie. Wszystkie parametry żądania API i parametry metod można wysyłać za pośrednictwem obu POST or GET zmiennych.
Rest API obsługuje format XML i JSON do testowania API usług sieciowych. Zwykle jest to preferowane Aplikacje mobilne i aplikacje internetowe, ponieważ dzięki temu aplikacje działają szybciej i płynniej
wsdl
WSDL (usługi internetowe Description Language) to język oparty na formacie XML, który będzie używany do opisu usług oferowanych przez usługę internetową.
WSDL opisuje wszystkie operacje oferowane przez konkretną usługę sieciową w formacie XML. Definiuje również, jak można wywołać usługi, tj. jaką wartość wejściową musimy podać i jaki będzie format odpowiedzi, którą wygeneruje dla każdego rodzaju usługi.
Jak przetestować usługę internetową?
Aby przetestować usługę internetową, możesz
- Przetestuj ręcznie
- Stwórz swój własny kod automatyzacji
- Skorzystaj z gotowego narzędzia do automatyzacji, takiego jak SoapUI.
Testowanie automatyzacji usług sieciowych obejmuje następujące kroki –
- Zapoznaj się z plikiem WSDL
- Określ operacje, jakie zapewnia konkretna usługa sieciowa
- Określ format żądania XML, które musimy wysłać
- Określ format XML odpowiedzi
- Korzystanie z narzędzia lub pisania kodu w celu wysłania żądania i sprawdzenia odpowiedzi
Załóżmy, że chcemy przetestować usługę internetową udostępniającą funkcję przeliczania walut. Będą to aktualne kursy wymiany pomiędzy walutami różnych krajów. Z tej usługi możemy korzystać w naszych aplikacjach do przeliczania wartości z jednej waluty na drugą.
Teraz spójrzmy na powyższe kroki
Krok 1 do 4: Zrozumienie WSDL i określenie operacji oraz formatów XML
Waluta Convertor Plik WSDL można zobaczyć @ (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl
), która poda informację o Walucie Convertor metody usług internetowych, które będzie obsługiwał, parametr, który musimy przekazać i typ parametrów… itp.
Krok 5: Użycie narzędzia lub napisanie kodu w celu wysłania żądania i sprawdzenia odpowiedzi
Dostępnych jest wiele narzędzi do testowania usług sieciowych, które umożliwiają testowanie usług sieciowych SOAP. SoapUI jest jednym z najpopularniejszych Narzędzie API co pomoże nam przetestować usługi sieciowe SOAP. W rzeczywistości możesz użyć dowolnego języka programowania, który jest w stanie wysłać żądanie XML do aplikacji dostawcy usług internetowych za pośrednictwem protokołu http oraz jest w stanie przeanalizować i zweryfikować odpowiedź XML pod kątem oczekiwanego wyniku. W tym samouczku dotyczącym testowania usług sieciowych przetestujemy usługę sieci Web
- Korzystanie z Java
- Korzystanie z SoapUI
CZĘŚĆ 1) Testowanie usług sieciowych przy użyciu API Apache Axis2 (Java).
Ogólnie rzecz biorąc, usługa internetowa przyjmuje żądanie i wysyła odpowiedź w formacie XML.
Projekt API Apache Axis2 to: Java API implementacyjne, które będzie wykorzystywane do tworzenia usług WWW zarówno po stronie serwera (dostawca usługi), jak i po stronie klienta (konsument usługi).
Axis2 może wysyłać komunikaty SOAP oraz odbierać i przetwarzać komunikaty SOAP. Możemy napisać mały Java program wykorzystujący API do tworzenia serwisu internetowego. Axis2 wygeneruje WSDL z Java program, który będzie wykorzystywany do komunikowania usług oferowanych w ramach serwisu. Możemy użyć tego samego Axis2 do wygenerowania pliku Java class (stub) z pliku WSDL, którego możemy użyć jako programu klienckiego do wygenerowania żądania usługi internetowej, wysłania żądania do punktu końcowego usługi i przetworzenia odpowiedzi.
- Zasadniczo stworzymy prosty plik Java program, w którym utworzymy instancję klasy pośredniczącej.
- Za pomocą kodu pośredniczącego wywołamy metodę request przekazując wszystkie wymagane informacje.
- Program pośredniczący przekonwertuje to żądanie na format żądania XML i wyśle je do punktu końcowego usługi, który odczyta żądanie, przetworzy żądanie i wyśle odpowiedź w formacie XML.
- Odpowiedź XML zostanie przekonwertowana na Java klasy po stubach i wracałem do rzeczywistego programu.
Przyjrzyjmy się szczegółowo powyższym krokom
Krok a) Pobierz API osi2 @ https://axis.apache.org/axis2/Java/core/download.cgi & Ustaw zmienną środowiskową „AXIS2_HOME”
Krok b) Utwórz folder do przechowywania wszystkich wygenerowanych artefaktów
Np.: C:\Axis\Projects\CurrencyConverter
Krok c) Otwórz wiersz poleceń i przejdź do struktury folderów, w której chcesz wygenerować artefakty, i uruchom następujące polecenie, które wygeneruje pliki zastępcze
%AXIS2_HOME%\bin\WSDL2Java -uri http://www.webservicex.net/CurrencyConvertor.asmx?wsdl -p org.apache.axis2.currencyconvertor -d adb –s
Krok d) Po pomyślnym uruchomieniu polecenia zobaczysz folder z wymaganymi plikami.
Krok e) W kolejnym kroku tego samouczka testowania usług sieciowych musimy utworzyć program klienta, za pomocą którego wyślemy rzeczywiste żądanie, korzystając z wygenerowanych stubów. Otwórz Eclipse i utwórz nowy Java projekt i wybierz folder, który utworzyliśmy powyżej.
Krok f) Dodaj wszystkie słoiki powiązane z osią 2 do ścieżki budowania projektu, która będzie tam w folderze lib folderu oprogramowania osi 2
(na przykład: C:\Axis\axis2-1.6.2\lib)
Krok g) Utwórz nowy Java klasa (np.: Client.Java) i utwórz instancję obiektu pośredniczącego. Za pomocą obiektu stub możemy wywołać wszystkie obsługiwane metody danego WebService.
Client.Java Program package org.apache.axis2.currencyconvertor; import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRate; import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRateResponse; import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.Currency; public class Client { public static void main(Java.lang.String args[]) { try { //Create the stub object by passing the service end point url CurrencyConvertorStub stub = new CurrencyConvertorStub("http://www.webservicex.net/CurrencyConvertor.asmx"); //ConversionRate is the class which we have to use mention the from and to currency //ConversionRate object will be the parameter for the conversionRate operation ConversionRate conversionRate = new ConversionRate(); conversionRate.setFromCurrency(Currency.USD); conversionRate.setToCurrency(Currency.INR); //Create the ConversionRateResponse object, which is going to be used to catch the response //call the conversionRate service using the stub object ConversionRateResponse conversionRateResponse = stub.conversionRate(conversionRate); //We can use the conversionRateResponse object to retrieve the response of the ConversionRate Service System.out.println("Conversion Rate from INR to USD : " + conversionRateResponse.getConversionRateResult()); } catch (Exception e) { e.printStackTrace(); } } }
CZĘŚĆ 2) Jak przetestować usługę internetową SoapUI
W SoapUI
- Przejdź do Plik > Nowy projekt Soap
- Wprowadź nazwę projektu i lokalizację identyfikatora URI WSDL
- kliknij OK
- Rozwiń pierwsze żądanie i kliknij dwukrotnie na 'Request1'. Wyświetli się żądanie SOAP w formacie XML.
- Wprowadź pola Od waluty i Do waluty
- Kliknij przycisk przesyłania
- Odpowiedź XML zostanie wyświetlona w prawym panelu.
Jak można podsumować, użycie narzędzi do testowania usług sieciowych, takich jak SoapUI, przyspiesza prace związane z testowaniem automatyzacji usług sieciowych. Dlatego też w kolejnych tutorialach będziemy skupiać się na SoapUi.
Podsumowanie
- Aplikacje komunikują się i wymieniają między sobą dane za pomocą usługi sieciowej
- SOAP i REST to 2 popularne protokoły służące do tworzenia usługi internetowej
- SOAP obsługuje wymianę danych w oparciu o XML
- REST obsługuje XML, Json lub wymianę danych w prostym adresie URL na potrzeby testowania API usług sieciowych.
- WSDL to język oparty na XML, który będzie używany do opisu usług oferowanych przez usługę internetową. SOAP jest definiowany przy użyciu języka WSDL.
-
Aby przetestować usługę WebService, możesz
- Stwórz własny kod. Na przykład użyj interfejsu API Axis2 dla Java
- Użyj narzędzi do automatyzacji testów WebService, takich jak SoapUI
- Narzędzia do automatyzacji, takie jak SoapUI, przyspieszą Twoje wysiłki w zakresie automatycznego testowania usług sieciowych i będą wymagały mniej wysiłku związanego z kodowaniem w porównaniu do tworzenia własnego kodu przy użyciu interfejsu API Axis2
FAQ
Dowiedz się więcej o: Testowanie internetowego interfejsu API
Ten samouczek dotyczący testowania usług internetowych powstał dzięki wkładowi pana Narendera Reddy'ego Nukali