While developing the software, several test levels are defined for the system to go through in order to be fully compliant with the client requirements and release to production. The purpose of the testing levels is to make sure that the software is stable as possible and to prevent unnecessary issues to arise during the development lifecycle. All the actions like requirement analysis, design, code, test, and deployment are part of the testing levels within one software project.
There are 4 generally recognized test levels:
- Unit/ Component
The first phase of the testing process is Unit Testing. During this phase, a small testable piece of functionality of the application is being tested. By being tested, it means that the application is compiled, build, and executed. The purpose of this test is to validate that every little piece of the application called units are being covered (tested) before the actual integration is done. Also, this type of testing level helps in finding potential bugs which can reduce the cost-to-fix in the later stages.
Software developers are performing this type of testing before pushing the functionality to the testers where they continue testing the functionality as a whole.
Some of the used Unit white-box testing techniques are:
- Statement Coverage
- Decision Coverage
- Condition Coverage
After the unit testing is done, all the components are gathered and integrated. The integration testing is the phase where the communication between the integrated units is tested and verified. Also, this level validates that the data flow from one module to another is working fine. No matter if all unit tests are passing, that doesn’t mean that once they are integrated between themselves, everything should work just fine. That’s why the integration part is the key step in the SDLC.
The black-box testing technique is used at this level whether it is manual or automated testing.
This is the first stage where all the functionalities are tested. Basically, the application is tested as a whole. The purpose of this test level is to evaluate whether the application satisfies the requirements given by the customer. Often performed by independent testers on a staging environment (production-like environment). The final phase for validating the software before performing the UAT.
Many different testing types are performed, such as functional testing like regression testing or non-functional testing like performance, security, and visual testing. All of these testing types need to be covered within the AUT before final test verification.
Acceptance Testing (UAT)
The final level is the UAT (User Acceptance Testing). This is performed to determine if the application is ready to be released to production and ready to be used by the end-users. This test level is done by the user to make sure that all the requirements are satisfied. There are several types of UAT:
- Alpha & Beta Testing
- Contract Acceptance Testing
- Regulation Acceptance Testing
- Operational Acceptance Testing
Once this test level is completed, the software has successfully accomplished every step in the testing levels process and it is ready to be shipped for use.
Every test level is important for the application to go trough each and every one of them for verification and potential shipment to production. The purpose of each test level is evaluating that the system works as intended. Unit, Integration, System and Acceptance test levels are the core main phases with different concepts but same purpose.
Share This Post
- Integrate your GitHub tests with Jenkins in 5 simple steps
- How IoC in test automation can simplify your test framework?
- Complete your Page Object Model structure with the use of Page Factory pattern
- 6 factors to have in mind when building a successful test automation strategy
- End-to-End Test vs Integration Test