Functional Testing is a type of software testing whereby the system is tested against the functional requirements/specifications.
Functions (or features) are tested by feeding them input and examining the output. Functional testing ensures that the requirements are properly satisfied by the application. This type of testing is not concerned with how processing occurs, but rather, with the results of processing.
During functional testing, Black Box Testing technique is used in which the internal logic of the system being tested is not known to the tester.
Functional testing is normally performed during the levels of System Testing and Acceptance Testing.
Typically, functional testing involves the following steps:
- Identify functions that the software is expected to perform.
- Create input data based on the function’s specifications.
- Determine the output based on the function’s specifications.
- Execute the test case.
- Compare the actual and expected outputs.
- It simulates actual system usage.
- It does not make any system structure assumptions.
- It has the potential of missing logical errors in software.
- It has a high possibility of redundant testing.
Functional testing is more effective when the test conditions are created directly from user/ business requirements. When test conditions are created from the system documentation (system requirements/ design documents), the defects in that documentation will not be detected through testing and this may be the cause of end- users’ wrath when they finally use the software.