Funkcje, jakie ma pełnić system, podsystem lub moduł, mogą być opisane w produktach takich jak specyfikacja wymagań, przypadki użycia lub specyfikacja funkcjonalna. Mogą też być nieudokumentowane. Funkcje są tym „co” system robi.
Testy funkcjonalne dotyczą funkcji lub innych cech (opisanych w dokumentach lub domniemanych przez testerów) oraz ich współdziałania z innymi systemami. Można je wykonywać na wszystkich poziomach (np. testy modułowe mogą bazować na specyfikacji modułów).
Do tworzenia warunków testowych oraz przypadków testowych dla funkcjonalności systemu mogą zostać użyte techniki oparte na specyfikacji (Patrz rozdział 4). Testy funkcjonalne zajmują się zewnętrznym zachowaniem oprogramowania (testy czarnoskrzynkowe).
Jeden z typów testów funkcjonalnych – testowanie zabezpieczeń – sprawdza funkcje (np. zapory) pozwalające na wykrycie zagrożeń, takich jak wirusy, pochodzących od złośliwych obcych. Inny typ testów funkcjonalnych: testowanie współdziałania, ocenia zdolność oprogramowania do współpracy z jednym lub większą liczbą wskazanych modułów lub systemów.