Pojedyncza wersja oprogramowania zawiera skończoną liczbę funkcji. Zbiór jest zamknięty i celem testowania będzie określenie, czy wszystkie funkcje, które powinny pojawić się w jednej wersji rzeczywiście się w nim znajdują oraz czy działają poprawnie. Testem funkcji będzie również sprawdzenie, czy aplikacja nie zawiera funkcji dodatkowych, które wykraczają poza określony zbiór. Testy te są w różnych metodykach traktowane jako testy bezpieczeństwa i stanowią testy charakterystyk. Dość celnie jednak ISO 9126 włącza te testy do zakresu funkcjonalnego. Kiedy testujemy poprawność działania uprawnień dla wykonywania poszczególnych funkcji przez poszczególnych użytkowników, mamy do czynienia z oboma typami testów.
Reguły rządzą funkcjami i pomagają nam lepiej definiować testy. Najbardziej oczywisty podział to podział ze względu na krytyczność funkcjonalności kryjących się za nimi:
1. Najważniejszą funkcją w oprogramowaniu będą funkcje, których niepoprawność działania może blokować lub znacząco utrudniać wykonanie procesu biznesowego. Również funkcje wykonujące operacje na danych i doprowadzające przez swoją niepoprawność do uszkodzenia lub usunięcia kluczowych danych można traktować jako te, które należy testować w pierwszej kolejności (podobnie jak funkcje, również dane w systemach informatycznych mogą być mniej lub bardziej ważne). Przykładowo: logowanie do aplikacji.
Testowanie powinno koncentrować się w pierwszej kolejności na tych właśnie funkcjach, które możemy określić jako kluczowe.
2. Funkcje średniej krytyczności, gdzie nieobecność danej funkcji lub jej niepoprawne działanie nie stanowi przeszkody w użytkowaniu oprogramowania, ale bez nich akceptacja oprogramowania nie będzie możliwa. Przykładowo: skróty klawiszowe.
3. Funkcje niekrytyczne, których nieobecności użytkownik najprawdopodobniej nie zauważy. Przykładowo: pomoc.
W ramach pojedynczej funkcji można również wyróżnić funkcje podstawowe i podfunkcje:
1. Funkcja podstawowa - test jest tu określeniem, czy oprogramowanie robi to co powinno. Jest to zazwyczaj weryfikowane przez jeden test w oparciu o najbardziej typowe dane.
2. Funkcja podstawowo-negatywna - jest to ten zakres testów, który sprawdzi, czy funkcja w obszarze gdzie nie powinna działać rzeczywiście nie działa.
3. Podfunkcje towarzyszące - zazwyczaj są to dodatkowe funkcje, które wspierają inną ważną funkcję w oprogramowaniu.
Dzielenie funkcji i ich kategoryzowanie sprowadzi się zawsze do zbudowania wielowymiarowej struktury, która powinna pomóc w zdefiniowaniu priorytetów w testowaniu.