Zakres testów
June 14th, 2007Testy ze względu na zakres aplikacji, jaki obejmują dzielą się na:
Testy jednostkowe (Unit tests) - Testowanie na najniższym poziomie, podczas którego poszczególne metody (funkcje) testowane są pojedynczo, w oderwaniu od reszty aplikacji w celu sprawdzenia pod kątem zgodności ze zdefiniowanym typem/zakresem danych wejściowych.
W odniesieniu do testów jednostkowych, używana jest również nazwa “testy modułowe” lub “testowanie komponentów”. Testy na tym poziomie przeprowadzane są przeważnie przez programistów z użyciem przygotowanych wcześniej danych testowych.
Testy integracyjne - Kiedy zbiór komponentów zostanie przetestowany, następnym krokiem jest upewnienie się, że interfejsy pomiędzy owymi komponentami są zdefiniowane poprawnie i współdziałają ze sobą.
Testowanie integracyjne wykonywane jest w celu wykrycia błędów w interfejsach i interakcjach pomiędzy modułami (assembly testing). Przykład: Testujemy komunikację pomiędzy modułem przechowującym i udostępniającym zbiór parametrów, a modułem używającym tych parametrów przy inicjacji, np. do wypełnienia pól formularza domyślnymi wartościami.
Współczesne aplikacje składają się przeważnie z wielu współpracujących systemów, należy więc sprawdzić czy komunikacja pomiędzy nimi nie jest zakłócona.
Podejście do testów integracyjnych:
Top - Down (od góry do dołu)
- Moduły znajdujące się na na najwyższym poziomie są testowane jako pierwsze
- Moduły znajdujące się w hierarchii poniżej, zastępowane/symulowane są przez zaślepki (stubs)
- Testowane moduły używane są do testowania niżej położonych komponentów
- Proces testowy jest kontynuowany do momentu przetestowania komponentów znajdujących się na najniższym poziomie
Bottom - Up (od dołu do góry)
- Najniżej położone komponenty testowane są jako pierwsze
- Drivers(ang.) symulują komponenty położone wyżej w hierarhii
- Testowane moduły używane są do testowania wyżej położonych komponentów
- Proces testowy jest kontynuowany do momentu przetestowania komponentów znajdujących się na najwyższym poziomie
Big Bang (tłumaczenie jest adekwatne do tego co dzieje się z sytemem)
- Błędy występujące w interfejsach komponentów wykrywane są w bardzo późnej fazie procesu testowego
- Trudno jest określić miejsce w którym występuje defekt. Czy przyczyna błędu leży w komponencie czy w interfejsie.
- Istnieje wysokie prawdopodobieństwo niewykrycia krytycznych błędów, które mogą ujawnić się dopiero w wersji produkcyjnej systemu
- Trudno upewnić się czy wszystkie przypadki z poziomu testów integracyjnych są pokryte testami.
Testy systemowe - Celem przeprowadzania testów systemowych jest sprawdzenie, czy zintegrowany już system spełnia wymagania funkcjonalne oraz wymagania systemowe zawarte w specyfikacji.
Testy akceptacyjne - walidacja systemu pod kątem zgodności z wymaganiami klienta, który na swoim środowisku wykonuje przypadki testowe przy udziale przedstawicieli projektu. Kiedy system zostaje zaakceptowany, następuje uruchomienie na środowisku produkcyjnym.

