Celem technik projektowania testów jest zdefiniowanie warunków testowych, przypadków testowych i danych testowych.
Klasyczny podział wyróżnia techniki czarnoskrzynkowe oraz białoskrzynkowe. Czarnoskrzynkowe techniki projektowania testów (również nazywane technikami opartymi na specyfikacji) są sposobem nawywodzenie oraz wybieranie warunków testowych,
przypadków testowych i danych testowych bazującym na analizie podstawy testów. Można ich używać zarówno w testowaniu funkcjonalnym jak i niefunkcjonalnym. Techniki czarnoskrzynkowe z definicji nie wykorzystują żadnych informacji o strukturze wewnętrznej testowanego modułu lub systemu. Białoskrzynkowe techniki projektowania testów (również nazywane strukturalnymi lub technikami opartymi na strukturze) bazują na analizie struktury modułu lub systemu. Testy biało i czarnoskrzynkowe mogą również korzystać z doświadczenia programistów, testerów i użytkowników w celu określenia, co powinno zostać przetestowane.
Niektóre techniki da się przyporządkować jednoznacznie do jednej kategorii, inne zawierają elementy więcej niż jednej kategorii. W tym sylabusie techniki projektowania testów oparte na specyfikacji nazywane są technikami czarnoskrzynkowymi, a techniki oparte na strukturze – białoskrzynkowymi. Techniki oparte na doświadczeniu omówione są oddzielnie.
Cechy wspólne technik projektowania testów opartych na specyfikacji, to m.in.:
- w specyfikacji problemu do rozwiązania, oprogramowania lub jego komponentów używane są modele
- z tych modeli można, w sposób usystematyzowany, wywodzić przypadki testowe
Cechy wspólne technik projektowania testów opartych na strukturze, to m.in.:
- do tworzenia przypadków testowych wykorzystywana jest wiedza o tym jak oprogramowanie jest skonstruowane, np. kod źródłowy lub szczegółowy projekt
- można mierzyć stopień pokrycia istniejących przypadków testowych, można też w sposób usystematyzowany tworzyć nowe przypadki testowe w celu zwiększenia pokrycia
Cechy wspólne technik projektowania testów opartych na doświadczeniu, to m.in.:
- do tworzenia przypadków testowych wykorzystywane jest doświadczenie ludzi
- wiedza testerów, programistów, użytkowników oraz innych interesariuszy o oprogramowaniu, jego środowisku i sposobie użytkowania
- wiedza o prawdopodobnych defektach i ich położeniu