TESTOWANIE I JAKOŚĆ OPROGRAMOWANIA – LABORATORIUM

Transkrypt

TESTOWANIE I JAKOŚĆ OPROGRAMOWANIA – LABORATORIUM
TESTOWANIE I JAKOŚĆ OPROGRAMOWANIA – LABORATORIUM NR 8
Testowanie webservice’ów
Zadanie 1.
Na podstawie wymagao dostarczonych przez klienta, stworzono specyfikację funkcjonalną produktu.
Dokonaj inspekcji specyfikacji (zwłaszcza pod kątem zgodności z wymaganiem i możliwości tworzenia
testów). W przypadku niedociągnięd specyfikacji, należy ją poprawid.
Wymagania
Stworzyd usługę sieciową, realizującą podstawowe funkcje arytmetyczne i trygonometryczne dla liczb
dowolnej wielkości (ilośd cyfr przed przecinkiem) i precyzji (ilośd cyfr po przecinku). Dostęp do części
funkcji powinien byd możliwy tylko dla wybranych użytkowników.
Specyfikacja funkcjonalna
WebService obliczeo dowolnej precyzji.
Funkcje
Usługa sieciowa będzie realizowad następujące operacje wykorzystując arytmetykę dowolnej precyzji
(znaczenie operatorów jak w standardowych językach programowania)











+
*
/
%
^ (**)
sin
cos
tan
exp
log
Działanie Dostęp do usługi realizowany będzie wykorzystując protokół HTTP. Usługa oczekuje
następujących parametrów wejściowych (w nawiasach klamrowych * + zapisano nazwy parametrów
opcjonalnych)





OpCode – kod operacji do wykonania (kody zostaną ustalone w późniejszym etapie produkcji)
Argument0 – pierwszy argument operacji
Arg1 – drugi argument operacji
[UserName] – nazwa użytkownika
[Haslo] – hasło użytkownika
Usługa będzie zwracad wynik w postaci obiektu JSON z jednym z poniższych pól
1. ReturnValue – wartośd wyniku w przypadku powodzenia operacji
2. ErrorMessage – informacja o błędzie w przypadku niepowodzenia operacji (rodzaje/teksty
informacji o błędach powinny byd zidentyfikowane i zaproponowane przez dział kontroli jakości asap)
Przykład działania
Request – ?OpCode=SIN&Argument1=0
Response – {ReturnValue:1}
Zadanie 2.
Napisad powtarzalny (zautomatyzowany) zestaw testów dla zdefiniowanej usługi sieciowej.
Zadanie 3
Pokazad, że napisane testy `działają`. W tym celu stworzyd metodę która będzie symulowad żądania
do usługi i nią zastąpid metodę wykonywającą rzeczywiste żądania.
Zadanie 4
Pokazad, że napisane testy `działają`. W tym celu stworzyd namiastkę usługi sieciowej
(.php/.aspx/.jsp/ROR/inne )
Selenium
Zadanie 5.
Na podstawie poniższej specyfikacji funkcjonalnej stworzono aplikację (w załączniku). W oparciu o
platformę Selenium (http://seleniumhq.com) stwórz dla niej automatyczny zestaw testów.
Specyfikacja
Funkcjonalnośd
Napisad graficzny interfejs użytkownika dla usługi zdefiniowanej w poprzednim etapie. Interfejs
powinien przypominad standardowy kalkulator (jak np. kalkulator systemu Windows). Dostępne
powinny byd następujące funkcje:








dodawanie
odejmowanie
mnożenie
dzielenie
sinus
cosinus
exponent (e do potęgi x)
logarytm (przy podstawie e)
Interfejs powinien umożliwiad wprowadzanie dowolnie dużych liczb (ilośd cyfr przed i po przecinku).
Powinien też umożliwiad cofanie ostatniej wpisanej cyfry jak i anulowanie całej operacji.
Konfiguracja
Aplikacja powinna mied możliwośd podania adresu usługi sieciowej (z którą GUI komunikuje się przy
pomocy AJAX'a), z której będzie korzystad. Dla korzystania z funkcji sinus,cosinus,exponent i logarytm
wymagane jest podanie danych uwierzytelniających (login i hasło).
Dodatkowe wymagania


W przypadku błędów usługi - błąd powinien zostad wyświetlony jako komunikat. Nie
dopuszczalne są jakiekolwiek nieprzechwycone błędy konsoli JavaScript
Jeśli naciśnięcie jakiś przycisku kalkulatora jest błędne z punktu widzenia jego stanu (np.
naciśnięcie przecinka, podczas gdy wprowadzana liczba posiada już przecinek) - taki przycisk
powinien byd wyłączony lub po jego naciśnięciu powinien pojawid się odpowiedni komunikat
strzeżenia
Pomoc
Przydatne linki:


Strona domowa Selenium http://seleniumhq.org/
Wtyczki do Firefox'a
o Selenium IDE https://addons.mozilla.org/pl/firefox/addon/2079
o Firebug https://addons.mozilla.org/pl/firefox/addon/1843
Uwaga: w GUI jest niezamierzony błąd, który może minimalnie utrudnid sprawdzenie poprawności
pisanych testów. Mianowicie GUI oczekuje odpowiedzi w formacie JSON ale w otoczeniu nawiasów.
(Np. {ReturnValue:3} będzie błędnie zewaluowane i pojawi się błąd (alert("undefined")). Dla GUI
poprawną odpowiedzą będzie ({ReturnValue:3}) (wówczas 3 zostanie wyświetlone na
wyświetlaczu.)
Zadanie 6
Zidentyfikowad możliwie najwięcej błędów w dostarczonym GUI. Zidentyfikowane błędy dokładnie
opisad (w szczególności podad nazwę testu który doprowadził do znalezienia błędu).
soapUI
Zadanie 7.
Korzystając z soapUI napisad zestaw testów dla zadanej usługi sieciowej (opis w formacie WSDL). W
tym celu w szczególności należy stworzyd mock'a usługi.
Pomoc
http://www.soapui.org/