Functional testing differs from acceptance testing. Functional testing verifies a program by checking it against design document(s) or specification(s), while acceptance testing validates a program by checking it against the published user or system requirements.[4]
As a form of system testing, functional testing tests slices of functionality of the whole system.
Despite similar naming, functional testing is not testing the code of a single function.
The concept of incorporating testing earlier in the delivery cycle is not restricted to functional testing.[5]
Types
Functional testing includes but is not limited to:[1]