On broader scale software testing can be categorized into:
2) Non-functional testing
Overview of Software Testing Levels
Here we will understand various levels of testing, namely:
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
It is the smallest independent and testable part of the source code. Unit testing is the first step in software testing environment and is generally conducted by the developers or their team mates. It is important to first complete the unit testing in order to perform integration testing. It is important to have well defined unit test plan and unit test cases. This form of testing is rarely performed by software testers As the cost of fixing a defect in the final stages of software development are much higher than fixing them in the initial stages, if unit testing is carried out properly then it would also result in a lot of cost saving.
It is carried on the smallest testable component of the project so the number of test cases and test data are less, and it is not always possible to check all the scenarios for functional and information flow of software application.
It is the time to move on to integration testing, once the unit testing phase is over. During integration testing the tester checks how one or more units interact with each other and produce output for various scenarios. This testing is carried out a software testing engineer.In this form of testing a lot of defects related to functional, requirement and performance levels are uncovered. Integration testing confirms whether independent units are able to perform as per expectations when integrated together. Integration testing can be broadly classified into:
- Big bang
- Top down and
- Bottom up approach
It is time to move on to system testing where the system as a whole with all components well integrated is ready for further testing, once the integration testing phase gets successfully completed. The software is not only tested for performance but also for adherence to quality standards. It is important that this form of testing is carried out by a highly skilled testing team, as the system is tested as a whole to see if it is in compliance with the functional and technical specifications and the quality standards defined by the organization. It is very important to create a scenario similar to the real time scenario where the system will be deployed.
The software is tested for accuracy. The acceptance testing looks at the system from various angles: right from cosmetic looks to internal functioning. This form of test is very crucial because there are legal as well as contractual requirements associated with the software for it to be accepted by the client. Acceptance testing can be of following types:
Operation Acceptance testing: It is done to ensure that all the processes and procedures are in place so that the system can be used easily and also be maintained easily.
Contract and regulation acceptance testing: is carried out to ensure that the software is in line with all the necessary government, legal and safety standards.
Alpha testing: It is carried to ensure that the product is of good quality and also to prepare the system for beta testing. This form of testing is performed towards the end of software development.
Beta testing: Beta testing follows in order to improve the quality of the product and see that the product is as per the requirement of the customer.