Functional testing verifies every function of the software meets the requirement specification.
Following is a list of the 7 most common tests performed by functional testing companies:
1. Unit Testing
Unit testing is the first level of software testing. An individual unit or block of code is tested. This test falls under the white box testing category i.e. the internal structure of the item is known to the tester. Unit testing makes it easy to track changes in code. The cost and effort of fixing a defect at this level are far less than at a higher level. It helps to make less interdependent codes so that the impact of changes is minimized. Code is reusable and more reliable. Unit testing is performed by the programmer who writes the code.
2. Integration Testing
Integration testing is the second level of testing, performed after unit testing. Integration testing combines units and tests them as a group. The idea is to track defects in the interaction between integrated components and systems. Test stubs and test drivers are used to help in this testing. Integration testing is done by independent testers or developers.
3. System Testing
System testing is the third level of software testing. A complete software is tested to check the working of integrated components and the whole system. Independent testers mostly perform this test. System testing falls under the black box testing category i.e. the internal structure of the item is not known to the tester.
4. User Acceptance Testing
This is the last level of software testing. The system is checked for acceptance for delivery to the user. Members of the sales or customer support team perform the internal acceptance test. Customers or end-users of the software perform the external acceptance or beta test.
5. Regression Testing
Regression testing is performed when a code has been modified. This test ensures the code change has not adversely affected existing software. Part or all of the software may be tested. Regression testing is important for software maintenance. As regression tests are performed after every deployment, it is easy to automate test cases instead of running them manually. Test cases can then be marked as reusable or obsolete, for the next cycle of testing.
6. Smoke Testing
Smoke test is also known as a build verification test. It is conducted after the release of each build i.e. when new functionality is developed and integrated with the existing build. This test ensures the system is stable enough to move forward to the next step. The quality assurance team handles this test and if there is a failure, the build is sent back to the development team. Smoke testing is a subset of acceptance testing.
7. Sanity Testing
Sanity testing is generally done after smoke testing. Minor changes in the code are made to ensure bugs are fixed. The functionality of the entire system is not verified. Only a component of the system is tested to gauge if the code has been developed rationally. Sanity testing is usually undocumented. Sanity testing is a subset of regression testing.