What is Functional Testing?
Functional Testing verifies that each function of the software application operates in conformance with the requirement specification. Functional testing is a quality assurance (QA) process and mainly involves Black Box Testing. It is concerned about the results of processing and not about the source code of the application.
Definition: Functional Testing is a type of Software Testing whereby the system is tested against the functional requirements/specifications.
Functions (or features) are tested by providing appropriate input and examining the output. The actual results are then compared with expected results. Functional testing ensures that the requirements are properly satisfied by the application. The testing can be done either manually or using automation.
Functional testing involves the following steps:
- Identify functions that the software is expected to perform.
- The creation of input data based on the function’s specifications.
- To determine the output based on the function’s specifications.
- Execute the test case.
- Compare the actual and expected outputs.
Advantages
- It simulates actual system usage.
- It does not make any system structure assumptions.
Disadvantages
- It has a potential of missing logical errors in software.
- It has a high possibility of redundant testing.
Types of Functional Testing:
- Unit Testing: Individually and independently testing of smallest testable parts of an application. Learn More
- Integration Testing: When individual software modules are combined together and tested as a group than it is known as Integration Testing. Learn More
- Smoke Testing: Preliminary testing to reveal simple failures severe enough to (for example) reject a prospective software release or build. Learn More
- Sanity Testing: Very brief run-through of the functionalities to assure that part of the system or methodology works roughly as expected. Learn More
- System Testing: Testing conducted on a complete, integrated system to evaluate the system’s compliance with its specified requirements. Learn More
- Regression Testing: Retesting of a software system to confirm that changes made to few parts of the codes has not any side affects on existing system functionalities. Learn More
- Acceptance Testing: