2.2 Poziomy testów i typy testów Flashcards
Jakie wyróżniamy pięć poziomów testów?
- Testy modułowe / jednostkowe (Component / Unit Testing): testowanie pojedynczych komponentów w izolacji.
- Testy integracji modułów / jednostek (Component/Unit Integration Testing): testowanie interakcji między komponentami.
- Testy systemowe (System Testing): testowanie całego systemu lub produktu w odniesieniu do wymagań (funkcjonalnych i niefunkcjonalnych).
- Testy integracji systemów (System Integration Testing): testowanie interfejsów systemu z innymi systemami lub usługami zewnętrznymi.
- Testy akceptacyjne (Acceptance Testing): weryfikacja, czy potrzeby biznesowe są spełnione i czy system jest gotowy do wdrożenia.
Zdefiniuj testowanie funkcjonalne.
Testowanie „co” obiekt testowy robi w porównaniu z tym, co powinien robić. Ocenia się funkcje komponentu lub systemu, weryfikując kompletność, poprawność i adekwatność.
Jakie atrybuty odróżniają od siebie poziomy testów?
- Obiekt testów (test object)
- Cele testów (test objectives)
- Baza testów (test basis)
- Defekty i awarie typowe dla danego poziomu
- Podejście i odpowiedzialności (kto i jak testuje)
Jakie istnieją rodzaje testów akceptacyjnych?
- User Acceptance Testing (UAT) — testy akceptacji użytkownika
- Operational Acceptance Testing — testy operacyjne (dot. środowiska produkcyjnego, kopii zapasowych itp.)
- Contractual / Regulatory — testy kontraktowe / zgodne z regulacjami prawnymi
- Alpha Testing — wstępne testy akceptacyjne po stronie producenta, często z ograniczonym udziałem użytkowników
- Beta Testing — testy z udziałem użytkowników w warunkach zbliżonych do realnego środowiska
Zdefiniuj testowanie niefunkcjonalne.
Testowanie atrybutów komponentu lub systemu innych niż jego podstawowa funkcja. Odpowiada na pytanie: „Jak dobrze system się zachowuje?” (np. wydajność, użyteczność, bezpieczeństwo).
Jakie są przykładowe rodzaje testów niefunkcjonalnych?
- Wydajność / efektywność (performance efficiency)
- Kompatybilność (compatibility)
- Użyteczność (usability)
- Niezawodność (reliability)
- Bezpieczeństwo (security)
- Utrzymywalność (maintainability)
- Przenośność (portability)
Zdefiniuj testy regresji (Regression Testing).
- Testy mające na celu wykrycie niepożądanych skutków zmian w komponencie lub systemie, potencjalnie obejmując także poprawki, które przeszły już testy potwierdzające (confirmation tests).
- Dobrą praktyką jest analiza wpływu (impact analysis), by ustalić, co może być naruszone przez zmianę i określić zakres wymaganych testów regresji.
- W środowiskach CI/DevOps testy regresyjne są często zautomatyzowane i ich zakres stopniowo rośnie w czasie.
Zdefiniuj testy potwierdzające (Confirmation Testing).
Testy służące do potwierdzenia, że wcześniej zgłoszony defekt został poprawnie usunięty. Mogą wymagać ponownego uruchomienia testów, które wcześniej zakończyły się niepowodzeniem, a także przygotowania nowych testów, aby objąć zmiany wprowadzone w celu usunięcia defektu.
Czym jest testowanie białoskrzynkowe (white box testing)?
Testowanie z wykorzystaniem wiedzy o implementacji systemu — uwzględnia strukturę, kod, projekt i przepływy wewnętrzne.
Czym jest testowanie czarnoskrzynkowe (black box testing)?
Testowanie oparte na specyfikacji, w którym przypadki testowe wywodzi się z dokumentów zewnętrznych w odniesieniu do przedmiotu testów. Testerzy nie mają wiedzy o kodzie ani projekcie wewnętrznym — skupiają się na tym, czy zachowanie systemu odpowiada dokumentacji projektowej.
W jaki sposób testy funkcjonalne i niefunkcjonalne są ze sobą powiązane?
Wiele testów niefunkcjonalnych bazuje na tych samych funkcjach, które sprawdza się w testach funkcjonalnych, jednak zamiast weryfikować poprawność działania, obserwujemy atrybuty niefunkcjonalne, takie jak wydajność, użyteczność, bezpieczeństwo, niezawodność itd.