Testy ad-hoc, eksploracyjne

Ten typ testów przeprowadzany jest bez tworzenia formalnego Test Planu czy pisania przypadków testowych. Testy typu ad-hoc pomagają planować zakres i czas trwania innych rodzajów testów, pomagają także testerom nauczyć się aplikacji przed rozpoczęciem zaplanowanych, innych rodzajów testów. Jest to najmniej formalna metoda testowania.

Testy ad-hoc (eksploracyjne) oznaczają jednoczesne poznawanie testowanej aplikacji, przygotowywanie dokumentacji testowej i wykonywanie testów. Oznacza to, że testerzy przystępują do pracy bez przygotowanych wcześniej przypadków użycia (test cases), ale za to z wyznaczonym celem. Testy oprogramowania tą metodą pozwalają na odkrycie nowych, zależności pomiędzy np. modułami systemu. To z kolei może wpłynąć na przyjętą strategię testowania i akcje podejmowane w kolejnych iteracjach testów.

Jednym z najlepszych powodów do stosowania tego rodzaju testów jest “odkrywanie”. Czytanie wymagań czy specyfikacji (jeśli istnieje) nie daje kompletnego obrazu działania systemu. Również dokumentacja użytkownika (pliki help, tutoriale) nie oddaje całkowicie tego w jaki sposób system działa i jak zachowuje się w określonych sytuacjach.

Testy metodą ad-hoc pozwalają na znalezienie “dziur” w strategii testowania i ujawnienie np. brakujących przypadków testowych (Test Cases).

Błędy znalezione przy testowaniu metodą ad-hoc są często sygnałem o istnieniu całych klas nieopracowanych przypadków testowych. To z kolei sugeruje dokonanie analizy przyczyn powstania błędu w testowanej części aplikacji.

Drugim zastosowaniem techniki ad-hoc jest określanie priorytetów dla poszczególnych przypadków testowych. Funkcjonalności, które działają poprawnie podczas testów ad-hoc, mogą otrzymać niższy priorytet lub zostać odłożone podczas fazy formalnych testów.

Jednym z problemów związanych z testami eksploracyjnymi są metryki, a właściwie ich brak. Zazwyczaj projekt jest zainteresowany informacją na temat postępu testów (procentowym pokryciem testami funkcjonalności, ilością wykonanych przypadków testowych, których przecież nie ma, itp.) wyrażoną choćby w postaci cyfr. Rozwiązaniem mogą być np. organizowane okresowo sesje na których zespół testowy wraz z osobami zainteresowanymi takimi informacjami, przedstawia i dyskutuje bieżącą sytuację. Taka forma pomiaru sprawdza się w projektach prowadzonych wg metodologii Agile.

Poziomy i typy testów

Przy powstawaniu dużego systemu testowanie obecne jest na każdym etapie.

Poziomy testów:

1. Testy modułowe (unit/component testing)
2. Testy integracyjne (integration testing)
3. Testy systemowe (system testing)
4. Testy akceptacyjne (acceptance testing)

Na każdym z poziomów stosowane są różne typy testów:

1. Testy modułowe
– analiza ścieżek (path analysis)
– użycie klas równoważności (equivalence partition)
– testowanie wartości brzegowych
– testowanie składniowe

2a. Testy integracyjne pomiędzy modułami
– funkcjonalne
– wydajnościowe

2b. Testy integracyjne pomiędzy systemami
– funkcjonalne
– wydajnościowe
– regresywne

3. Testy systemowe
– instalacyjne
– funkcjonalne
– interfejsu (użyteczności)
– wydajnościowe
– regresywne
– bezpieczeństwa

4. Testy akceptacyjne
– funkcjonalne
– wydajnościowe
– bezpieczeństwa