Jakie są rodzaje testów? Czym się różnią testy dymne od testów jednostkowych? Myślę, że jest to wiedza, którą obowiązkowo trzeba mieć, jeśli myśli się o przystąpieniu do egzaminu ISTQB i pracy jako tester.
Różne rodzaje testów
- Testy funkcjonalne – black-box, bez spoglądania w kod, testowanie pod kątem wymagań funkcjonalnych.
- Testy dymne (smoke test) – najbardziej podstawowe, ogólne testy – czy program się w ogóle instaluje, uruchamia, pokrywają sprawdzenie podstawowych funkcjonalności.
- Testy regresji – sprawdzają, czy nowo dodane funkcjonalności lub poprawki błędów nie wprowadzają nowych defektów. Idealne pole do automatyzacji.
- Testy jednostkowe (modułowe, unit tests) – testowanie najniższych jednostek (funkcji) w izolacji od reszty systemu.
- Testy integracyjne – po złożeniu systemu w całość. Szukanie błędów głównie w interfejsach i interakcjach pomiędzy modułami.
- Testy systemowe – black-box, testowanie pod kątem spełniania wymagań ze specyfikacji, testowanie systemu złożonego w całość.
- Testy akceptacyjne – wykonuje klient (lub beta tester po stronie klienta), testowanie pod kątem z wymaganiami klienta.
- Testy strukturalne – white-box, przejście przez każdą ścieżkę.
- Testy niefunkcjonalne
- Testy obciążeniowe (load tests)
- Testy ergonomii
- Testy bezpieczeństwa
Podział ze względu na sposób wykonywania testów:
- Testy statyczne – bez uruchamiania kodu. Code review, analiza kodu.
- Testy dynamiczne – testowanie uruchomionego programu.
Ciągle mało? Rodzajów testów naliczono ponad sto! Lista tutaj: https://www.guru99.com/types-of-software-testing.html
Inne testy
- Negative testing scenarios – przykładowe:
- testowanie błędnymi wartościami
- niewypełnienie pól wymaganych
- niepoprawny typ danych
- więcej/mniej znaków niż wymagane
- większy/mniejszy zakres danych, niż spodziewa się program
- testy z manipulowaniem sesją w przeglądarce
- zduplikowanie wartości, pól, brak pól (np. w webservisie)
- Testowanie mutacyjne – sprawdzanie, na ile testy jednostkowe rzeczywiście sprawdzają kod. Automatyczne wprowadzanie losowych błędów w programie (posiewanie błędów) i uruchamianie testów jednostkowych, by sprawdzić, czy wykryły one wprowadzone błędy. Wymaga dużej mocy obliczeniowej.
- Fuzz testing – wprowadzenie niepoprawnych, nieoczekiwanych, losowych danych, obserwacja i czekanie na awarię. Ma dwa rodzaje: fuzzing mutacyjny lub generacyjny. Tego typu testy mogą być wykonane na wielu poziomach, np. niskopoziomowe – na etapie np. mieszania w pamięci dzielonej lub nieco wyższe – na etapie danych wejściowych do komponentów programu.