KraQA VIII - Techniki projektowania testów
-
Upload
kraqa -
Category
Engineering
-
view
468 -
download
5
Transcript of KraQA VIII - Techniki projektowania testów
O czym jest ta prezentacja?
• podstawowe techniki projektowania testów – fakty i mity
– błędy i niedopowiedzenia
– trywializowanie technik
• podstawowe techniki a rzeczywiste projekty – nietrywialne aspekty technik
• zaawansowane rozszerzenia podstawowych technik projektowania testów – zalety wykorzystania technik
Podział na klasy równoważności (1)
dziedzina wejścia
dziedzina wyjścia
test 1
test 2
test 3
test 4
test 1
test 2
test 3
Przykład: plik
• charakterystyka: porządek elementów w pliku
– plik posortowany rosnąco
– plik posortowany malejąco
– plik nieposortowany
Przykład: plik
• charakterystyka: porządek elementów w pliku
– plik posortowany rosnąco
– plik posortowany malejąco
– plik nieposortowany
plik jednoelementowy…?
Przykład: plik
• charakterystyka: porządek elementów w pliku
– plik posortowany rosnąco
– plik posortowany malejąco
– plik nieposortowany
• charakterystyki:
– posortowany rosnąco (tak, nie)
– posortowany malejąco (tak, nie)
plik jednoelementowy…?
Oklepany przykład: trójkąt (1)
Charakterystyka B1 B2 B3
relacja a do zera (1) >0 (4) 0 (7) <0
relacja b do zera (2) >0 (5) 0 (8) <0
relacja c do zera (3) >0 (6) 0 (9) <0
Charakterystyka B1 B2 B3 B4
klasyfikacja geometryczna
(10) różno- boczny
(11) równoramienny, nie równoboczny
(12) równo- boczny
(13) niepoprawny
Oklepany przykład: trójkąt (2) relacja a do zera (1) >0 (4) 0 (7) <0
relacja b do zera (2) >0 (5) 0 (8) <0
relacja c do zera (3) >0 (6) 0 (9) <0
(10) różnoboczny
(11) równoramienny, nie równoboczny
(12) równoboczny
(13) niepoprawny
# przypadek
testowy pokrywa
klasy
1 (2, 5, 6) (1), (2), (3), (10)
2 (4, 4, 4) (12)
3 (5, 6, 6) (11)
4 (0, 4, 5) (13), (4)
3 (4, 0, 5) (5)
4 (4, 5, 0) (6)
5 (-1, 4, 4) (7)
6 (4, -1, 4) (8)
7 (4, 4, -1) (9)
Sukcesywnie twórz przypadki pokrywające jak najwięcej klas
poprawności
Sukcesywnie twórz przypadki, z których każdy pokrywa tylko jedną klasę niepoprawności
Pokrywanie klas niepoprawności: maskowanie błędów
string ObliczOcenę(int pktEgz, int pktLab)
1 if (pktEgz + pktLab > 90) then
2 return "5.0"
3 else {
4 byte pktRazem = pktEgz+pktLab
5 if (pktRazem > 70) then
6 return "4.0 bo punkty = "+pktRazem
7 else if (pktRazem > 50) then
8 return "3.0 bo punkty = "+pktRazem
9 else if (pktRazem >=0) then
10 return "2.0 bo punkty = "+pktRazem
11 else return "Jakiś error!"
12 }
Wejście (pktEgz = –1000, pktLab = 1095)
Analiza Wartości Brzegowych (3)
Wartości brzegowe: • określa się dla ustalonej klasy równoważności • to największa i najmniejsza wartość klasy równoważności • stosuje się zarówno dla klas wejść jak i dla wyjść programu
wartości brzegowe i graniczne dla klasy X2
Analiza Wartości Brzegowych (4)
Co tak naprawdę testujemy w Analizie Wartości Brzegowych?
ISO 29119 – Software Testing Standard, Proces projektowania i implementacji testów
Zawsze testujemy te elementy
Analiza Wartości Brzegowych (4)
Warunki testowe w AWB: wartości brzegowe Elementy pokrycia w AWB: wartości graniczne W Analizie Wartości Brzegowych testujemy wartości graniczne
wartości brzegowe (w kółku) i graniczne dla klasy X2
Analiza Wartości Brzegowych (5)
Czy metoda 3 wartości granicznych nie jest aby nadmiarowa?
Testujemy dla 17, 18, 19. Ale po co testować 17, skoro
już przetestowaliśmy 18, a obie te liczby leżą w tej
samej klasie równoważności? Testujmy zatem tylko 18 i 19
Analiza Wartości Brzegowych (5)
Czy metoda 3 wartości granicznych nie jest aby nadmiarowa?
Testujemy dla 17, 18, 19. Ale po co testować 17, skoro
już przetestowaliśmy 18, a obie te liczby leżą w tej
samej klasie równoważności? Testujmy zatem tylko 18 i 19
if (wiek <= 18) { … }
if (wiek < 18) {…}
if (wiek == 18) {…}
poprawny warunek
pomyłka programisty (wykryta dla wiek=18) a tu co?!
Przykład: aplikacja udzielająca pożyczki
• jakie są wartości graniczne dla przedziału liczb rzeczywistych?
• to kwestia dokładności zmiennoprzecinkowej
• ale w ogólności – to zależy od testera (!)
• jak wyglądają wartości brzegowe dla naszego przykładu?
Przykład: aplikacja udzielająca pożyczki
• wartości brzegowe dla wielkości pożyczki
– -max, -1 [błędne, ujemne]
– 0, 49 [błędne, zero]
– 50, 4949 [błędne, za mało]
– 4950, 10000049 [poprawne]
– 1000050, max [błędne, za dużo]
Przykład: aplikacja udzielająca pożyczki
• wartości brzegowe dla wartości nieruchomości
– -max, -1 [błędne, ujemne]
– 0, 49 [błędne, zero]
– 50, 24949 [błędne, za mało]
– 24950, 50000049 [poprawne]
– 5000050, max [błędne, za dużo]
Brzegi dla dziedzin wielowymiarowych przykład praktyczny (z życia wzięty)
Rozporządzenie Ministra Gospodarki z dnia 21 grudnia 2005
roku w sprawie zasadniczych wymagań dla urządzeń
ciśnieniowych i zespołów urządzeń ciśnieniowych
Program ma za zadanie przypisać kategorię urządzeniu na podstawie
2 parametrów:
objętości i ciśnienia.
Jak przetestować „brzegi”?
Metodą punktów ON i OFF
Przypadek wielowymiarowy: punkty ON i OFF
Jeśli warunek jest zaimplementowany jako warunek liniowy, to taki test dowodzi poprawności tego ograniczenia (sic!)
• Gra = 10 rund, 1 runda to maksymalnie 2 rzuty kulą • Jeśli w 1 rzucie gracz zbije wszystkie 10 kręgli, 2 rzutu nie wykonuje • Liczba punktów gracza w danej rundzie to liczba zbitych w niej kręgli,
przy czym do punktów tych mogą zostać doliczone dodatkowe punkty, zależne od kolejnej rundy. Ma to miejsce w następujących dwóch przypadkach:
• 1) jeśli gracz w pierwszym rzucie zbił wszystkie kręgle, jest to tzw. strike. W takim przypadku do wyniku tej rundy doliczane są punty z dwóch kolejnych rzutów tego gracza;
• 2) jeśli gracz w obu rzutach danej rundy zbił wszystkie kręgle, jest to tzw. spare. Wtedy do wyniku doliczana jest liczba punktów zdobytych przez niego w następnym rzucie kulą.
• Jeśli podczas rzutu gracz przekroczy linię rzutu, jest to tzw. foul. Jeśli zostały zbite kręgle, rzut jest liczony, ale punkty nie.
• JAKIE PRZYPADKI TESTOWE DOBRAĆ??? • (jakie klasy równoważności? jakie wartości brzegowe?
jest tyle różnych możliwych sytuacji! Jak to ogarnąć?!
Przykład: obliczanie punktacji w kręglach
Metoda Category-Partition
• dobre rozwiązanie w przypadku takim, jak program do obliczania punktów w kręglach
• rozszerzenie metody klas równoważności i AWB
1. zidentyfikuj parametry (wejścia) i warunki (stany systemu podczas jego działania)
2. wyodrębnij kategorie (główne własności lub charakterystyki) parametrów i warunków
3. dokonaj podziału kategorii na strefy wyboru
4. określ ograniczenia i związki pomiędzy strefami wyboru
5. wyprowadź elementy pokrycia (=zbiory stref wyboru)
6. dla każdego elementu stwórz przypadek testowy
Przykładowe kategorie i strefy wyboru
KATEGORIA STREFY WYBORU
Liczba punktów min=0, max=?
Liczba strike’ów 0, 1, 9, 10
Runda ostatniego strike’a 0, 1-8, 8, 9, 10
Liczba spare’ów 0, 1, 9, 10
Runda ostatniego spare’a 0, 1-9, 9, 10
Liczba fauli 0, 1, 9, 10
Kwestie do wyjaśnienia: • co gdy strike będzie w ostatniej rundzie? A co gdy w przedostatniej? • co gdy spare będzie w ostatniej rundzie? • ograniczenia (np. jeśli liczba strike’ów=10, to liczba spare’ów=0) • jak uzyskać testy sprawdzające kombinacje wszystkich dopuszczalnych par stref wyboru dla różnych kategorii w rozsądnej liczbie przypadków? Inne pomysły: np. kombinacje następujących po sobie strike’ów i spare’ów
AWB dla dziedziny wyjściowej!
nietrywialne wartości brzegowe!
Techniki kombinacyjne – pair-wise testing (1)
• przeglądarki: IE, Firefox, Chrome (3)
• drukarki: HP, Epson, Samsung, Canon (4)
• OS: Win, Linux, iOS (3)
• baza: MySQL, Postgres (2)
• ile jest możliwych kombinacji dowolnych dwóch elementów z dowolnych dwóch kategorii?
Tworzymy program COTS mogący współpracować w różnych konfiguracjach
Techniki kombinacyjne – pair-wise testing (1)
• przeglądarki: IE, Firefox, Chrome (3)
• drukarki: HP, Epson, Samsung, Canon (4)
• OS: Win, Linux, iOS (3)
• baza: MySQL, Postgres (2)
• ile jest możliwych kombinacji dowolnych dwóch elementów z dowolnych dwóch kategorii?
3*4+3*3+3*2+4*3+4*2+3*2=12+9+6+12+8+6=53
Tworzymy program COTS mogący współpracować w różnych konfiguracjach
Testowanie maszyny stanowej
Jest to forma testowania opartego o model Pozwala znaleźć błędy projektowe jeszcze przed napisaniem kodu! Maszyna stanowa jest modelem systemu Przykład z życia: aplikacja do zarządzania pracą redakcji czasopisma
Testowanie maszyny stanowej: kryteria pokrycia
pokrycie wszystkich przejść (0-switch coverage), np.: S1>WY>S2>PR>S3>ZP>S1>WY>S2>PR>S3>AK>S2>PU>S4 S1>WY>S2>PR>S3>RN>S2>OD>S4 pokrycie par przejść (1-switch coverage), itd. testowanie błędnych przejść (np.: S2 > RN > ?)
pokrycie wszystkich par przejść (1-switch coverage) Elementy pokrycia:
Testowanie maszyny stanowej: kryteria pokrycia
Testowanie maszyny stanowej:
analiza modelu
publikacja artykułu następuje przed sprawdzeniem poprawek przez
recenzenta (jest to możliwe, ale warto spytać analityka biznesowego, czy w każdej sytuacji jest to dopuszczalne)
Testowanie maszyny stanowej:
analiza modelu
Gdyby EP2 był sam w sobie przypadkiem testowym, oznaczałby sytuację akceptacji
artykułu bez przesłania go do recenzji
Testowanie maszyny stanowej:
analiza modelu
EP8: natychmiastowe odesłanie recenzentowi artykułu, który przed chwilą recenzował EP6: recenzent odrzuca artykuł który wcześniej zaakceptował EP11: redaktor odsyła recenzentowi już zaakceprowany artykuł EP4: żądanie poprawek od autora choć wcześniej była akceptacja artykułu EP9: publikacja artykułu choć jest negatywna recenzja
Podsumowanie i wnioski
• techniki projektowania testów pozwalają tworzyć wartościowe przypadki testowe
• techniki projektowania testów są trywializowane w literaturze, choć w rzeczywistości są bardzo potężnym narzędziem dla testera
• niektóre techniki pozwalają na weryfikację założeń systemu przed jego implementacją
• warto znać te techniki i wiedzieć kiedy ich użycie będzie efektywne (bo nie zawsze będzie!)