Typy testów

Typy testów
Aktywności testowe mogą być ukierunkowane na weryfikację systemów (lub ich części) pod kątem różnych celów. Wyróżniamy typy przeprowadzanych testów w celu doboru właściwych technik i metod testowania.

ISTQB dzieli testowanie na  funkcjonalne, testowanie charakterystyk niefunkcjonalnych jakości, takich jak wyjdaność lub niezawodność, testowanie struktury lub architektury oprogramowania lub systemu, lub testowanie powiązane ze zmianami, np. potwierdzenie, że defekt został naprawiony (testy potwierdzające) i szukanie niepożądanych skutków zmian (testy regresji).

Testowanie funkcjonalne - czarna skrzynka
Funkcje jakie system, podsystem lub komponent wykonują mogą być opisane jako wymagania specyfikacji, przypadki użycia lub specyfikacja funkcjonalności, mogą też pozostać nieudokumentowane. Funkcje definiuje się jako czynności wykonywane przez system. Testy funkcjonalne oparte są na tych funkcjonalnościach lub funkcjach (opisanych w dokumentacji lub zrozumiane przez testera) i mogą być wykonane na każdym poziomie testowania (np. testy komponentów oparte są na specyfikacji komponentów).
Testowanie funkcjonalne analizuje zewnętrzne zachowanie oprogramowania, traktując ją jak czarną skrzynkę.

Testowanie niefunkcjonalne - określanie parametrów
Testy niefunkcjonalne obejmują, ale nie są ograniczone do; testy wydajności, testy obciążeń, testy przeciążające, testy użyteczności, testy zdolności do operowania, testy utrzymaniowe, testy niezawodności i testy zdolności do pracy na różnych platformach. Ten typ testowania określa JAK system działa.
Testy niefunkcjonalne mogą być wykonane na wszystkich poziomach testowych. Pojęcie niefunkcjonalnego testowania opisuje testy wymagane do pomiarów charakterystyk systemu i oprogramowania, które może być ocenione na skali. Przykładem może być czas odpowiedzi podczas weryfikowania  wydajności. Te testy mają odniesienie do modelu jakości np. ISO 9126 lub jego następcy ISO 25010.

Testowanie strukturalne - biała skrzynka
Testy strukturalne mogą być wykonane na wszystkich poziomach testowych. Technik strukturalnych używa się w celu wsparcia pomiarów dokładności testowania poprzez ocenę pokrycia danego typu struktury. Pokrycie jest mierzone wykonaniem kodu za pomocą szeregu testów i wyrażone w procentach pokrytych elementów. Na wszystkich poziomach testów, ale szczególnie w testowaniu komponentów i integracji komponentów, możemy używać narzędzi do pomiarów pokrycia elementów kodu tj. deklaracji i decyzji. Testowanie strukturalne może być oparte na architekturze systemu np. hierarchii wywołań. Testowanie strukturalne może również użyte na innych poziomach w tym dla systemu, integracji systemu i poziomu testów akceptacyjnych (np. modeli biznesowych lub struktury menu).


Testowanie regresji/potwierdzające
Kiedy defekt zostaje znaleziony i naprawiony wtedy oprogramowanie powinno być ponownie przetestowane aby upewnić się, że defekt został usunięty. Taką czynność nazywamy testami potwierdzającymi.
Testy regresji są powtarzalnymi testami na już przetestowanym wcześniej programie, po modyfikacjach, w celu wykrycia innych defektów wprowadzonych lub nie odkrytych podczas "naprawy". Mogą one znajdować się w testowanym oprogramowaniu jak i w innym powiązanym lub niepowiązanym z nim komponencie. Testy regresji zostają wykonane gdy oprogramowanie, lub środowisko, zostaje zmienione. Głównym zadaniem tych testów jest ocena ryzyka, a nie znalezienie defektów w oprogramowaniu, które poprzednio działało.
Testy powinny być powtarzalne jeśli mają służyć do potwierdzenia usunięcia defektu lub towarzyszyć testom regresji. Testy regresji mogą zostać wykonane na wszystkich poziomach testowych i zajmują się funkcjonalnością, parametrami niefunkcjonalnymi i testowaniem strukturalnym. Zbiory testów regresji są wykonywane wiele razy i ogólnie spowalniają rozwój oprogramowania, są więc świetnym kandydatem na automatyzację.

Tego typu postrzegania typów testów jest powielane w wielu innych publikacjach m.in. w książce Adama Romana "Testowanie i jakość oprogramowania"

 


W polemikę z ISTQB w obszarze typów testów wchodzi Radek Smilgin z publikacją "Zawód tester". W rozdziale 5 pisze: "Z jakiegoś niepojętego powodu testowanie musi się dzielić na poziomy, typy, etapy i dziesiątki innych kategorii, które nie są stosowane w większości znanych mi – i zapewne również czytelnikowi – projektów". Punktem wyjścia jest tu zestawienie w sylabusach testów tak różnych, że ciężko mówić, że są to różne typy testów. Przykładowo w ramach testowania białoskrrzynkowego można wykonywać testy funkcjonalne, niefunkcjonalne, retesty, regresję, testy statyczne i dynamiczne. Nie są to więc różne typy testów, a zbiory zależne. Co do definicji autor jest zgodny z propozycjami ISTQB, dzieli on jednak testy w inny sposób tworząc swoiste kategorie w ramach testowania. Są to:
- testy białej i czarnej skrzynki
- testy funkcjonalne i niefunkcjonalne
- retesty i testy regresji
- testowanie statyczne i dynamiczne.

Relacje pomiędzy poszczególnymi typami testów opisuje poniższa tabela (z książki "Zawód tester").




Uznaje jednocześnie, że kategorie mogą wchodzić w relacje między sobą. Tabelę należy czytać od lewej strony zaczynając od rzędów. 


ŹRÓDŁA: Jeśli nie wskazano inaczej, tekst pochodzi z sylabusa Poziomu Podstawowego ISTQB.
Patrz również Poziomy testowania >> [http://testerzy.pl/baza-wiedzy/poziomy-testowania