Functional testing

In software development, functional testing is a form of software system testing that verifies whether software matches its design.

Generally, functional testing is black-box meaning the internal program structure is ignored (unlike for white-box testing).

Functional testing can evaluate compliance to functional requirements.

Sometimes, functional testing is a quality assurance (QA) process.

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.

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.

Types
Functional testing includes but is not limited to:
 * Sanity testing, a.k.a. smoke testing
 * Regression testing
 * Usability testing

Six steps
Functional testing typically involves six steps


 * 1) The identification of functions that the software is expected to perform
 * 2) The creation of input data based on the function's specifications
 * 3) The determination of output based on the function's specifications
 * 4) The execution of the test case
 * 5) The comparison of actual and expected outputs
 * 6) To check whether the application works as per the customer need