2. Prelegent
• Quality Assurance R&D Lead, Rivet Group
• Adiunkt w Instytucie Informatyki i Matematyki Komputerowej UJ
• Członek Stowarzyszenia Jakości Systemów Informatycznych
• Członek Polskiego Komitetu Normalizacyjnego (prace nad normą
ISO/IEC 29119 Software Testing Standard)
• Certified Software Quality Engineer (ASQ)
• ISTQB Certified Tester Full Advanced Level
• Autor „Testowanie i jakośd oprogramowania. Modele, techniki,
narzędzia” (PWN, 2015)
3. Plan spotkania
• Automatyzacja, ale czego?
• Modele i ich rola w automatyzacji
• Technika Category-Partition
• Przykład – pełna automatyzacja i jej zalety
4. Automatyzacja, ale czego?
• najczęściej automatyzację testów rozumie
się jako automatyzację wykonania testów
– skrypty
– programy
– nagrane scenariusze
– itp.
5. Automatyzacja, ale czego?
• …ale (o czym raczej się nie mówi) automatyzowad można
również:
• projektowanie przypadków testowych (generowanie)
• specyfikowanie przypadków testowych (definiowanie)
• implementację testów
• generowanie danych testowych
• porównywanie wyników rzeczywistych z oczekiwanymi
• przeprowadzanie analizy statycznej lub dynamicznej
6. Modele i ich rola w automatyzacji
przykład: model CFG
• klasyka gatunku: pokrycie
• instrukcyjne
• decyzyjne
• warunkowe
• warunkowo/decyzyjne
• MC/DC
• ścieżek
• pętli
• …
input a, b
c = a+b
if (c>0) {
while (a>0) {
a=a-1;
if (a>b) {
b=b+1;
}
}
} else {
if (a<b) {
return a
} else {
return c
}
}
7. • ile testów potrzeba, aby pokryd wszystkie
decyzje?
• jaki test spowoduje 17-krotne wykonanie
pętli while, z których dokładnie 9 przejdzie
przez if (a>b)?
• zaprojektowanie przypadków testowych =
zaprojektowanie ścieżek. Ale co nam to
daje?
• co nam daje to, że np. pokryliśmy testami
100% decyzji?
input a, b
c = a+b
if (c>0) {
while (a>0) {
a=a-1;
if (a>b) {
b=b+1;
}
}
} else {
if (a<b) {
return a
} else {
return c
}
}
Modele i ich rola w automatyzacji
przykład: model CFG
8. Wykorzystanie modelu
1. Użycie (np. CFG) do oceny testów czarnoskrzynkowych
SYSTEM
UNDER TEST
PRZYPADKI
TESTOWE
(black box!)
WYNIKI
TESTÓW
kod
źródłowy
POKRYCIE
KODU
OCENA
TESTÓW,
DODANIE
NOWYCH
LOKALIZACJA
BŁEDÓW
9. • model może opisywad działanie systemu (np. pod
określonym kątem)
– graf przepływu sterowania (klasyka)
– graf przepływu danych (wciąż blisko kodu, chod nie zawsze)
– model struktury menu
– modele UML na podstawie których wygenerowano kod
– model maszyny stanowej
– tablica decyzyjna
• testowanie polega na pokryciu odpowiednich
elementów modelu testami
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania
11. • im bardziej wymagające
pokrycie, tym
dokładniejsze testy (i
większy koszt!)
100% instrukcji
100% decyzji
100%
ścieżek liniowo
niezależnych!
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania: przykład
12. • publikacja artykułu przed
zrecenzowaniem?
• decyzja o odrzuceniu
artykułu bez konsultacji z
recenzentem?
• recenzent akceptuje a
redaktor odrzuca?
• „standardowa” procedura
odrzucenia artykułu
• każda ścieżka w tym
procesie jest „kombinacją
liniową” powyższych 4
ścieżek
Wykorzystanie modelu
2. Reprezentacja systemu i jego działania: przykład
13. • testowanie mutacyjne
testuje testy
• mutant = zmutowany
program (np. ze
zmienioną instrukcją
x=x+1 zamiast oryginalnej
x=x-1)
• mutacje = symulacje
pomyłek programistów
• pokrycie = liczba zabitych
mutantów / liczba
wszystkich mutantów
Wykorzystanie modelu
3. Użycie modelu defektów do predykcji defektów (sic!)
14. • D = liczba wykrytych
rzeczywistych defektów
• M = liczba wszystkich
mutantów
• Z = liczba zabitych
mutantów
• X = nieznana liczba
defektów pozostałych w
kodzie
• idea: pokrycie mutacyjne
= pokrycie realnych
defektów
• D/(X+D) = Z/M
• X = (D*M)/Z - D
Wykorzystanie modelu
3. Użycie modelu defektów do predykcji defektów (sic!)
15. Przykład automatyzacji dla metody
Category-Partition
• idea metody C-P:
1. zidentyfikuj parametry i warunki środowiskowe,
które wpływają na zachowanie się programu
2. wyodrębnij ich kategorie
3. podziel każdą kategorię na rozłączne strefy wyboru
4. określ związki i ograniczenia między wyborami
5. napisz specyfikację testów (np. używając TSL)
6. wyprowadź elementy pokrycia
7. dla każdego elementu pokrycia stwórz przypadek
testowy
17. Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep wyszukuje
wzorzec w pliku i zwraca
linie pliku, w których
wzorzec się znajduje
• składnia:
grep [wzorzec] [plik]
1. zidentyfikuj parametry i
warunki środowiskowe,
które wpływają na
zachowanie się
programu
• plik
• wzorzec
• nazwa pliku
18. Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep wyszukuje
wzorzec w pliku i zwraca
linie pliku, w których
wzorzec się znajduje
• składnia:
grep [wzorzec] [plik]
2. wyodrębnij kategorie
parametrów i warunków
• Plik
– rozmiar
– # wystąpieo wzorca w pliku
– # wystąpieo wzorca w linii
– pozycja wzorca w pliku
• Wzorzec
– długośd wzorca
– otoczony apostrofami?
– obecnośd białych znaków
– Zawiera apostrofy?
• nazwa pliku
– istnienie pliku o danej
nazwie
19. Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep
wyszukuje wzorzec w
pliku i zwraca linie pliku,
w których wzorzec się
znajduje
• składnia:
grep [wzorzec] [plik]
3. podziel każdą kategorię
na rozłączne strefy
wyboru
• plik
– rozmiar (pusty, niepusty)
– # wystąpieo wzorca w
pliku (0, 1, wiele)
– # wystąpieo wzorca w linii
(1, wiele)
– pozycja wzorca w pliku (1
linia, ostatnia linia,
dowolna inna)
• itd.
20. Przykład automatyzacji dla metody
Category-Partition
• testowanie polecenia
grep
• program grep
wyszukuje wzorzec w
pliku i zwraca linie pliku,
w których wzorzec się
znajduje
• składnia:
grep [wzorzec] [plik]
4. określ związki i
ograniczenia między
wyborami
• np. jeśli
# wystąpieo wzorca w
pliku = 0
to
# wystąpieo wzorca w
linii nie może byd >1
• itd.
21. Nasz model
GREP
PLIK WZORZEC NAZWA PLIKU
rozmiar
# wyst.
w linii
# wyst.
w pliku
pozycja
wzorca
długośd
otoczony
apostrof.?
białe
znaki?
zawiera
apostrof.?
pusty niepusty
pusty implies 0 wystąpieo w pliku
0 1 wiele