W ciągu ostatnich czterdziestu lat powstała pewna ilość zasad testowania, które zawierają ogólne wskazówki przydatne przy każdych testach.
Zasada 1 – Testowania ujawnia usterki
Testowanie może pokazać, że istnieją usterki, ale nie może dowieść, że oprogramowanie nie posiada defektów. Testowanie zmniejsza prawdopodobieństwo występowania w oprogramowaniu niewykrytych defektów, ale nawet jeżeli nie zostały znalezione żadne usterki, nie stanowi to dowodu poprawności oprogramowania.
Zasada 2 – Testowanie gruntowne jest niewykonalne
Przetestowanie wszystkiego (wszystkich kombinacji wejść i warunków początkowych) jest wykonalne tylko w trywialnych przypadkach. Zamiast testowania gruntownego, do kierowania testami należy wykorzystać analizę ryzyka i priorytetyzację.
Zasada 3 – Wczesne testowanie
Po to żeby wykryć usterki jak najwcześniej, testowanie rozpoczyna się w cyklu rozwoju oprogramowania lub systemu tak wcześnie jak to tylko jest możliwe i jest nakierowane na spełnienie zdefiniowanych celów.
Zasada 4 – Kumulowanie się błędów
Pracochłonność testowania jest dzielona proporcjonalnie do spodziewanej oraz zaobserwowanej gęstości błędów w modułach. Niewielka liczba modułów zwykle zawiera większość usterek znalezionych przez wydaniem lub jest odpowiedzialna za większość awarii na produkcji.
Zasada 5 – Paradoks pestycydów
Jeżeli te same testy są powtarzane bez zmian, to w końcu przestaną znajdować nowe usterki. Żeby przezwyciężyć „paradoks pestycydów”, testy muszą być regularnie przeglądane i uaktualniane. Nowe, odmienne przypadki testowe muszą być projektowane w celu przetestowania różnych części oprogramowania lub systemu, żeby umożliwić odszukanie nowych usterek.
Zasada 6 – Testowanie zależy od kontekstu
Testowanie wykonuje się w różny sposób w różnym kontekście. Na przykład oprogramowanie krytyczne ze względu na bezpieczeństwo testuje się inaczej niż sklep internetowy.
Zasada 7 – Mylne przekonanie o braku błędów
Znajdowanie i naprawa usterek nie pomoże, jeżeli produkowany system nie nadaje się do użytkowania lub nie spełnia wymagań i oczekiwań użytkownika.