Testowanie i walidacja oprogramowania
Transkrypt
Testowanie i walidacja oprogramowania
2010-10-04 Testowanie i walidacja oprogramowania Inżynieria oprogramowania, sem.5 cz. 4 Rok akademicki 2010/2011 Dr inż. Wojciech Koziński Testowanie czarno-skrzynkowe specyfikacja y tak x f(x) f(x)=y? Sukces nie Awaria TIWO cz. 4 2010/2011 2 Testowanie czarno-skrzynkowe - zasady Ten rodzaj testowania bazuje na specyfikacjach i dokumentach: Wymagania, Plany techniczne, architektura, Podręcznik użytkownika. Kod jest niedostępny (chociaż pożądany) Ogólna strategia testowania, stosowana głównie w testowaniu integracyjnym, testowaniu systemowym i testowaniu akceptacyjnym. Może być uzupełniona o fazę testowania białoskrzynkowego dla otrzymania miary pokrycia, jako wskaźnik jakości testowania. TIWO cz. 4 2010/2011 3 1 2010-10-04 Testowanie czarno-skrzynkowe Klasy równoważności (1) Domena wejść systemu: zbiór wszystkich wartości wejściowych systemu. Klasa równoważności: pewien podzbiór wartości wejściowych systemu 4 TIWO cz. 4 2010/2011 Testowanie czarno-skrzynkowe Klasy równoważności (2) domena wejścia, wartości poprawne klasy równoważności niepoprawne i niedozwolone wejścia TIWO cz. 4 2010/2011 5 Testowanie czarno-skrzynkowe Klasy równoważności (3) Każda klasa równoważności odpowiada istotnej własności systemu, Każda wartość w klasie równoważności powoduje, że system zachowuje się „w ten sam sposób”, w procesie testowania prowadzi do „awarii” lub „sukcesu”. Każda wartość w klasie równoważności powoduje, że obliczenia przebiegają wzdłuż (prawie) tej samej ścieżki. Klasy równoważności powstają na podstawie specyfikacji systemu oraz doświadczenia / intuicji testera. TIWO cz. 4 2010/2011 6 2 2010-10-04 Testowanie czarno-skrzynkowe Główna hipoteza dla klas równoważności Każdy element z klasy równoważności, użyty jako wejście do systemu, powoduje poprawne zadziałanie systemu „sukces” LUB Każdy element z klasy równoważności, użyty jako wejście do systemu, powoduje niepoprawne zadziałanie systemu „awarię”. Dla celów testowania jeden element z klasy równoważności jest wystarczający. W praktyce (brak dowodu poprawności hipotezy), system powinien być przetestowany dla kilku elementów z każdej klasy równoważności. TIWO cz. 4 2010/2011 7 Testowanie czarno-skrzynkowe Przykłady tworzenia klas równoważności (1) Zakres wartości => 1 klasa poprawna (ang. valid), 2 klasy niepoprawne (ang. invalid), Liczba całkowita x powinna zawierać się między 100 a 200 => {integer x | 100<=x<=200}, {integer x | x<100}, {integer x | x>200}. Określona wartość => 1 klasa poprawna, 2 klasy niepoprawne, Liczba całkowita x powinna być równa100 => {integer x | x=100}, {integer x | x<100}, {integer x | x>100}. TIWO cz. 4 2010/2011 8 Testowanie czarno-skrzynkowe Przykłady tworzenia klas równoważności (2) Zbiór wartości => 1 klasa poprawna, 1 klasa niepoprawna, Dzień tygodnia x to dzień roboczy => x € {poniedziałek, wtorek, środa, czwartek, piątek}, x € {sobota, niedziela}. Wartość logiczna => 1 klasa poprawna, 1 klasa niepoprawna, Warunek x powinien być spełniony => x = true, x = false. TIWO cz. 4 2010/2011 9 3 2010-10-04 Testowanie czarno-skrzynkowe Przykłady tworzenia klas równoważności (3) Jedna lub więcej klas równoważności dla wartości niedozwolonych (ang. illegal) dla zmiennych wejściowych Wartości x typu integer => {x należy do typu real}, {x należy do typu string} Jeżeli istnieje podejrzenie, że testowany system inaczej przetwarza wartości poprawne, niepoprawne, niedozwolone, to każda z nich powinna utworzyć nową klasę równoważności, Jeżeli istnieje podejrzenie, że testowany system inaczej przetwarza wartości z danej klasy równoważności, klasa ta powinna zostać podzielona na mniejsze klasy. 10 TIWO cz. 4 2010/2011 Testowanie czarno-skrzynkowe Analiza wartości granicznych (1) Z analizy oprogramowania wynika, że wiele błędów powstaje ze złego przetwarzania wartości znajdujących się na granicy klas (błędy w wyrażeniach relacyjnych <,>,<=,…) domena wejścia, wartości poprawne klasy równoważności niepoprawne i niedozwolone wejścia TIWO cz. 4 2010/2011 11 Testowanie czarno-skrzynkowe Analiza wartości granicznych (2) Granice domen są generowane przez warunki graniczne nad daną domeną: Granice otwarte: generowane przez operatory (<,>), Granice domknięte: generowane przez operatory (=,<=,>=) W punkcie: wartość leży na granicy, Poza punktem: wartość nie leży na granicy, Strategia testowania wartości granicznych (1X1): jedna wartość w punkcie, jedna wartość poza punktem. TIWO cz. 4 2010/2011 12 4 2010-10-04 Testowanie czarno-skrzynkowe Reguły wyboru wartości w punkcie i poza punktem Granica otwarta: jedna wartość w punkcie, jedna wartość poza punktem, Granica domknięta: jedna wartość w punkcie, dwie wartości poza punktem (po obu stronach granicy, tak blisko jak to możliwe), W punkcie: wartość poza domeną => warunek niespełniony, Poza punktem: wartość w domenie => warunek spełniony, W punkcie: wartość w domenie => warunek spełniony, Poza punktem: wartość poza domeną => warunek niespełniony, Dla typów nie-skalarnych: jedna wartość w punkcie, jedna wartość poza punktem Wyliczenia (ang. enumerations), logiczne, łańcuchy, liczby zespolone,… W punkcie: wartość w domenie => warunek spełniony, Poza punktem: wartość poza domeną => warunek niespełniony, Różnice między wartościami w punkcie i poza punktem powinny być jak najmniejsze (dla łańcuchów różnica jednej litery). TIWO cz. 4 2010/2011 13 Testowanie czarno-skrzynkowe Metoda podziału na kategorie (1). Metoda podziału na kategorie, to systematyczna metoda projektowania testów bazująca na wyborze klas równoważności: (1) Specyfikacja kategorii wartości wejściowych Kategorie występujące przy sortowaniu tablicy: Rozmiar tablicy, Typ elementów, Element maksymalny, Element minimalny, Położenie elementu maksymalnego w tablicy, Położenie elementu minimalnego w tablicy, TIWO cz. 4 2010/2011 14 Testowanie czarno-skrzynkowe Metoda podziału na kategorie (2). (2) Podział kategorii na wybory (ang. choises) odpowiadające klasom równoważności: Sortowanie tablicy – wybór wymiarów (ang. size) tablicy size = 0, size = 1, 2<= size <= 100, size > 100, niedozwolona postać (łańcuch, rzeczywista) wartości size. TIWO cz. 4 2010/2011 15 5 2010-10-04 Testowanie czarno-skrzynkowe Metoda podziału na kategorie (3). (3) Specyfikacje testów Zbiór grup testów (ang. test frames), w których dana kategoria występuje lub jest jej brak, Zbiór przypadków testowych, wybrana wartość z każdej występującej kategorii. Sortowanie macierzy / przypadek testowy Wymiar tablicy: size = 50 (z wyboru 2<= size <= 100), Typ elementów tablicy = integer, Element maksymalny = 91, Element minimalny = -3, Położenie elementu maksymalnego w tablicy = 15, Położenie elementu maksymalnego w tablicy = 43. 16 TIWO cz. 4 2010/2011 Testowanie czarno-skrzynkowe Metoda podziału na kategorie (4). (4) Generacja przypadków testowych, utworzenie pakietu testów (ang. test suits), z wykorzystaniem narzędzia np. JUnit. (5) Przechowywanie pakietów testów w odpowiedniej bazie danych. (6) Testowanie modułu za pomocą przypadków testowych, analiza wyników (dołączenie nowych testów), uaktualnienie bazy danych zawierającej testy. 17 TIWO cz. 4 2010/2011 Testowanie czarno-skrzynkowe Metoda podziału na kategorie (5). 0 1 101 2 wymiar tablicy Przypadek testowy 50 100 # Kategorie typ el. int max 91 min pos. max pos. min Grupy testów -3 15 43 TIWO cz. 4 2010/2011 18 6 2010-10-04 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Cel: testowanie operacji udostępnionych przez (graficzny) interfejs użytkownika, Parametry operacji podzielone są na klasy równoważności, Testowanie przez podanie wszystkich różnych kombinacji wartości z klas, równoważności (po jednej z każdej klasy), Testowanie sekwencji operacji (jeśli operacje są zależne), Testowanie bazuje na podręczniku użytkownika, Testowanie korzysta z dostępnych narzędzi. TIWO cz. 4 2010/2011 19 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Przykład: find (document, text, direction, match_case) document: bieżący plik tekstowy, przeszukiwany, text: poszukiwany łańcuch znaków, direction (down, up): kierunek poszukiwania, punkt odniesienia to aktualne położenie kursora, match_case (yes, no): czy operacja poszukiwania ma uwzględniać duże i/lub małe litery. TIWO cz. 4 2010/2011 20 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Przykład (c.d.) Klasy równoważności: text direction: {up}, {down} match_case: {łańcuch złożony tylko z małych liter}, {łańcuch złożony tylko z dużych liter}, {łańcuch złożony z małych i dużych liter}, {łańcuch bez liter – inne znaki}, {łańcuch pusty (niedozwolony)}. {yes}, {no} document: {found}, {not found} TIWO cz. 4 2010/2011 21 7 2010-10-04 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Przykład (c.d.) Liczba (niezależnych) kombinacji klas równoważności = całkowita liczba testów E = E1*E2*…*Ek gdzie Ei to liczba klas równoważności dla parametru i, Dla rozpatrywanego przykładu 5*2*2*2 = 40. Niektóre kombinacje (z niepoprawnymi, z niedozwolonymi parametrami) też muszą być przetestowane! TIWO cz. 4 2010/2011 22 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Wzorce testów do przykładu (40) text: lower-case, direction: down, match_case: yes, document: found (1) text: lower-case, direction: down, match_case: yes, document: not found (2) text: lower-case, direction: up, match_case: yes, document: found (3) text: lower-case, direction: up, match_case: yes, document: not found (4) text: empty, direction: up, match_case: yes, document: not found (40) TIWO cz. 4 2010/2011 23 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Wybór przypadków testowych (wartości) dla przykładu: Każdy wzorzec generuje jeden test, Każda klasa równoważności we wzorcu jest reprezentowana prze jedna wartość (wejściową), W różnych przypadkach testowych, różne wartości dla tej samej klasy równoważności są stosowane (daje to lepsze pokrycie), Wartości graniczne są używane (tam gdzie jest to możliwe). TIWO cz. 4 2010/2011 24 8 2010-10-04 Testowanie czarno-skrzynkowe Testowanie systemowe, testowanie interfejsu użytkownika Document text direction This beautiful text (1) This beautiful text (2) This 1beautiful text (3) This 1Beautiful text (4) This %1bEAutiful text (5) This %2bEAutiful text (6) This BE utiful text (7) This BE utiful text (8) This BEAUTIFUL text (9) This BEAUTIFUL text (10) bea down beatles down 1bea up 1bea up %1bea down %1bea down b up beauti up BEA up BEAT up match_case yes yes yes yes no no no no no no TIWO cz. 4 2010/2011 25 Testowanie czarno-skrzynkowe Typowe błędy interfejsu użytkownika (UI) (1) Funkcjonalność – operacje, których można by się logicznie spodziewać w systemie są trudne do zrealizowania, mylące lub wręcz niemożliwe. Nadmierna funkcjonalność: system próbuje wykonać zbyt wiele, jest trudny w nauczeniu się i używaniu. Nieadekwatna realizacja funkcji: funkcja działa, lecz jest zbyt wolna, zbyt trudna w użyciu. Brakująca funkcjonalność: nie jest możliwa do znalezienia, choć jest opisana. Niewłaściwa funkcjonalność: działa, lecz robi co innego niż wskazuje nazwa. Funkcjonalność zbyt elementarna: właściwa funkcjonalność musi być stworzona przez użytkownika, z bardziej prymitywnych operacji. TIWO cz. 4 2010/2011 26 Testowanie czarno-skrzynkowe Typowe błędy interfejsu użytkownika (UI) (2) Komunikacja. Przepływ wiadomości z systemu do użytkownika wykazuje usterki. Brakujące wiadomości: istotne (niezbędne) wiadomości nie są wyświetlane. Przykładowe instrukcje pomocy, aktualny stan, potwierdzenie wykonania. Mylące wiadomości: odpowiednia wiadomość jest widoczna, lecz nie budzi zaufania, ze względu na usterki, które wystąpiły we wcześniejszych fazach. Błędy w wyświetleniu wiadomości: wiadomość jest wyświetlona lecz nie we właściwym miejscu, częściowo niewidoczna. TIWO cz. 4 2010/2011 27 9 2010-10-04 Testowanie czarno-skrzynkowe Typowe błędy interfejsu użytkownika (UI) (3) Struktura poleceń i danych. System niepoprawnie organizuje/wykonuje polecenia użytkownika. Niekonsekwencje. W różnych sytuacjach ta sama komenda jest wywoływana za pomocą innego ciągu znaków (zestawu klawiszy), ma zmieniające się zestawy parametrów. Niepoprawne polecenie. Polecenie jest dostępne dla użytkownika, choć w danej sytuacji powinno być niedostępne. Nieistniejące lub niekompletne dialogi. Parametry polecenia powinny być wprowadzane za pomocą dialogu. Ta komunikacja może być niekompletna. TIWO cz. 4 2010/2011 28 Testowanie czarno-skrzynkowe Typowe błędy interfejsu użytkownika (UI) (4) Brakujące polecenia. Polecenie jest niedostępne, choć powinno być udostępnione. Niepoprawna nazwa: nazwa polecenia jest dostępna, choć jej nazwa jest napisana błędnie (w menu). Myląca nazwa: polecenie ma źle dobraną nazwę, nieadekwatną do swojej funkcji. Przejścia między stanami: użytkownik nie może przejść do pożądanego stanu, choć jest to logicznie uzasadnione (np. przerwanie wykonania). Zapobieganie awariom: system nie dostarcza zabezpieczeń przed utratą danych (np. back-up’s, undo’s, zapamiętywanie przyrostowe). TIWO cz. 4 2010/2011 29 Testowanie czarno-skrzynkowe Typowe błędy interfejsu użytkownika (UI) (5) Szybkość działania (ang. performance). System jest zbyt wolny, wymaga zbyt dużo pamięci, ogranicza objętość przetwarzanych danych. Zbyt wolny system: operacja jest dostępna, lecz mało przydatna ze względu na długi czas wykonywania (długie czekanie na zachętę, brak informacji o czasie wykonywania), System wymaga zbyt dużo pamięci dla wykonania polecenia. Niedostateczna wydajność: specyfikacja (dokumentacja) systemu nie nakłada ograniczeń na objętość przetwarzanych danych. Zadanie użytkownika nie może zostać wykonane. TIWO cz. 4 2010/2011 30 10 2010-10-04 Testowanie czarno-skrzynkowe Typowe błędy interfejsu użytkownika (UI) (6) Dane wyjściowe. Dane wyjściowe prezentowane przez system są błędne lub w nie właściwym formacie. Błędne dane wyjściowe. System działa błędnie. Brak pewnych danych wyjściowych. Oczekiwane (i omówione w dokumentacji) dane nie są prezentowane. Niezgodny format danych. Format danych jest odmienny od oczekiwanego, nie można wprowadzić ich do następnego kroku przetwarzania. Format jest nieczytelny dla użytkownika i nie może on zmienić tego. TIWO cz. 4 2010/2011 31 11