SOAP Web Services

Transkrypt

SOAP Web Services
Integracja aplikacji
Ćwiczenie 3
SOAP Web Services
W ramach ćwiczenia zapoznamy się z usługami sieciowymi zgodnymi ze standardem SOAP.
Przetestujemy dwie usługi:

prostą usługę Kalkulator – usługa udostępnia podstawowe operacje arytmetyczne;

usługę wbudowaną w system Magento – profesjonalne oprogramowanie do obsługi
sklepu internetowego (http://magento.com).
Do testowania usług wykorzystamy narzędzie soapUI (http://www.soapui.org).
Przykładowa usługa sieciowa – Kalkulator

Usługa Kalkulator dostępna jest pod adresem http://82.145.73.232:1234/kalkulator

Aby pobrać dokument WSDL opisujący usługę, wejdź na adres
http://82.145.73.232:1234/kalkulator?wsdl

Przeanalizujmy zawartość dokumentu WSDL:
o w elemencie portType znajdziesz listę operacji udostępnianych przez usługę;
o przyjrzyj się definicji operacji o nazwie dodaj:
<operation name="dodaj">
<input wsam:Action="http://kalkulator.ia/Kalkulator/dodajRequest"
message="tns:dodaj"/>
<output wsam:Action="http://kalkulator.ia/Kalkulator/dodajResponse"
message="tns:dodajResponse"/>
</operation>
o w powyższej definicji podano nazwy komunikatów, które stanowią odpowiednio
żądanie i odpowiedź tej operacji: dodaj i dodajResponse; przyjrzyjmy się
definicji komunikatu wejściowego – komunikat dodaj znajdziemy wyżej
w dokumencie:
<message name="dodaj">
<part name="parameters" element="tns:dodaj"/>
</message>
o jak widać definicja komunikatu odsyła nas do elementu XML o nazwie dodaj;
Strona 1
Integracja aplikacji
Ćwiczenie 3
o definicje wszelkich typów XML używanych w usłudze znajdziemy w sekcji
types dokumentu WSDL – w naszym przypadku element types zawiera
odnośnik do zewnętrznego dokumentu XML Schema:
<types>
<xsd:schema>
<xsd:import namespace="http://kalkulator.ia/"
schemaLocation="http://kalkulator:1234/kalkulator?xsd=1"/>
</xsd:schema>
</types>
o w dokumencie XML Schema znajdziemy szczegółową definicję elementu dodaj
– czyli w praktyce szczegółowy format komunikatu, który należy wysłać do
metody dodaj:
<xs:complexType name="dodaj">
<xs:sequence>
<xs:element name="x" type="xs:int" minOccurs="0"/>
<xs:element name="y" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
o jak widać żądanie powinno składać się z sekwencji elementów o nazwach x i y,
oba typu int.
Testowanie usługi Kalkulator narzędziem soapUI

Obejrzyj screencast dołączony do ćwiczenia – ilustruje on tworzenie projektu w soapUI
oraz testowanie usługi.
Zadanie 1

Stwórz w soapUI projekt do testowania usługi Kalkulator i wykonaj następujące
ćwiczenia:
o wyślij żądania do metod: dodaj, pomnoz, podziel; przyjrzyj się parametrom
i formatowi odpowiedzi;
o sprawdź zachowanie usługi po podaniu błędnych parametrów (np. zamiast liczby
podaj tekst albo usuń z żądania jeden z parametrów).
Strona 2
Integracja aplikacji
Ćwiczenie 3
Zadanie 2

Przygotuj zestaw testów (Test suite), który przetestuje obliczenie wyrażenia:
(2 + 3) * 7
o pierwsze żądanie powinno obliczyć wyrażenie 2+3, wywołując metodę dodaj
z odpowiednimi parametrami;
o drugie żądanie powinno użyć zwróconego wyniku jako parametru wywołania
metody pomnoz.

Do poszczególnych żądań dodaj asercje sprawdzające:
o czy odpowiedź nie zawiera komunikatu o błędzie (asercja Not SOAP Fault);
o czy odpowiedź jest zgodna ze schematem zdefiniowanym w usłudze (asercja
Schema Compliance);
o czy wynik jest poprawny (asercja XPath Match).
Zadanie 3

Do zestawu testów dodaj nowy przypadek testowy (Test case) – w przypadku tym
przetestuj błędne żądania:
o żądanie z błędnymi parametrami (np. metoda dodaj i tekst zamiast liczby);
o żądanie z dzieleniem przez zero.

Dodaj do żądań asercje sprawdzające:
o czy odpowiedź zawiera komunikat o błędzie (asercja SOAP Fault);
o czy komunikat o błędzie zawiera odpowiedni tekst (asercja XPath Match lub
asercja Contains).
Strona 3
Integracja aplikacji
Ćwiczenie 3
Zadanie dodatkowe
Zadanie dodatkowe polega na przetestowaniu usług udostępnianych przez system Magento.
Należy przygotować odpowiedni projekt w soapUI, a w nim zestaw testów.

Pod adresem http://82.145.73.232/magento znajduje się instalacja sklepu Magento
(serwer dostępny w sieci wydziałowej)

Dokument WSDL wbudowanej usługi SOAP znajdziesz pod adresem
http://82.145.73.232/magento/index.php/api/v2_soap?wsdl=1
Dokumentację udostępnionego API znajdziesz pod adresem:
http://www.magentocommerce.com/api/soap/introduction.html
Korzystamy z API w wersji 2 (SOAP API Version v2) z włączonym trybem WS-I
Compliance.

Korzystanie z API wymaga zalogowania:
o wysłanie żądania login spowoduje zalogowanie użytkownika i zwrócenie
identyfikatora sesji;
o wszystkie kolejne żądania wymagają podania identyfikatora sesji jako jednego
z parametrów;
o po zakończeniu pracy wysyłamy żądanie endSession, aby zakończyć sesję.
o do zalogowania możesz użyć następujących danych:

username:
ws_user_1
apiKey:
pandatrzy
Wypróbuj wywołanie kilku metod, na przykład:
o catalogCategoryTree – znajdź kategorie podrzędne dla kategorii o id=4;
o catalogCategoryAssignedProducts – znajdź produkty przypisane do
kategorii o id=11;
o catalogProductInfo – znajdź informacje o produkcie o id=297.

Przygotuj zestaw testów, który przeprowadzi kolejno operacje:
o zaloguj;
o pobierz
listę
produktów
w
kategorii
catalogCategoryAssignedProducts);
o
id=28
(metoda
Strona 4
Integracja aplikacji
Ćwiczenie 3
o pobierz nazwę i opis produktu zwróconego w poprzednim kroku – parametr
product_id pobierz z wyniku poprzedniego żądania (metoda
catalogProductInfo);
o zakończ sesję.

Dodaj asercje sprawdzające:
o brak błędu wywołania (Not SOAP Fault);
o zgodność odpowiedzi ze schematem;
o zawartość odpowiedzi:

login: czy odpowiedź zawiera identyfikator sesji o długości 32 znaków?

catalogCategoryAssignedProducts: czy odpowiedź zawiera
dokładnie jeden produkt?

catalogProductInfo: czy product_id w odpowiedzi zgadza się
z parametrem żądania?

catalogProductInfo: czy w odpowiedzi znajdują się pola name
i description?

endSession: czy odpowiedź zawiera potwierdzenie zakończenia
(result=true)?
Strona 5

Podobne dokumenty