Testy funkcjonalne (czarnej skrzynki, ang. black box) - testy te skupiają się przede wszystkim na weryfikacji założeń funkcjonalnych (wymagań zamieszczonych w dokumentacji) bez odniesienia się do kodu aplikacji. Techniki czarnej skrzynki pozwalają na wykrycie błędów związanych np. z brakiem implementacji funkcjonalności, jednakże nie pozwala precyzyjnie określić miejsca, w którym dany błąd występuje. Testy funkcjonalne odpowiadają na pytania, jak system wykonuje dane funkcje, włączając w to komendy użytkownika, operacje na danych, ekrany użytkownika, jakie wpływ na system ma aktualizacja środowiska.
Testy strukturalne (białej skrzynki, ang. white box) - testy te mają na celu ustalenie charakterystyki oprogramowania, czyli zachowania systemu w określonych warunkach. W skład podstawowych testów strukturalnych wchodzą:
- testy wydajnościowe - badanie dające odpowiedź na to, czy system działa stabilnie przy założonej maksymalnej liczbie użytkowników, czy czasy odpowiedzi są
- akceptowalne dla normalnego trybu pracy i nie przekraczają limitu czasu pracy operacji,
- testy obciążeniowe - polegają na symulacji obciążenia systemu dużą - praktycznie maksymalną - liczbą użytkowników przez określony zakres czasu przy realizacji wybranego scenariusza testów np. realizowania w tym samym momencie transakcji płatniczej,
- testy bezpieczeństwa - mające na celu weryfikację i ustalenie odporności systemu na niepożądane, ale zamierzone działania np. ingerencja w dane (modyfikacja, usunięcie), destabilizacja lub unieruchomienie systemu, uzyskanie poufnych informacji itp.).
Testy potwierdzające - wykonywane są w momencie naprawienia wcześniej znalezionego defektu w systemie/aplikacji - ponowne przetestowanie pozwoli na potwierdzenie stabilności działania systemu/aplikacji.
Testy regresji - są powtarzalnymi testami na już przetestowanym programie, po modyfikacjach, w celu wykrycia innych błędów wprowadzonych lub nie odkrytych podczas naprawy poprzednich defektów przez programistów. Jednak głównym zadaniem tych testów jest ocena ryzyka a nie znalezienia defektów w oprogramowaniu, które poprzednio działało. Testy regresyjne mogą zostać wykonane na wszystkich poziomach testowych i zajmują się funkcjonalnością, zdolnościami niefunkcjonalnymi i testowaniem strukturalnym.