Software Testing is one of the phases in a Software Development Life Cycle (SDLC). Testing is usually performed to find out the errors or defects in a software, that can be removed in order to create a better quality product. Testing is done right after the coding part is finished.
During testing, a software is executed with a finite set of test cases, and the behaviour of the software is evaluated based on the output received. Testing makes sure that the software product does what it is supposed to do. Testing improved the overall performance of a software and better chance of preventing bugs.
There are two approaches that are used to identify the defects in a software i.e. static and dynamic. In static analysis, the code is evaluated through some methods or tools rather than execution. And in dynamic analysis, the code is executed to determine the errors.
Types of Software Testing
There are basically two types of Software Testing
- Manual Testing
- Automation Testing
1. Manual Testing
Manual Testing is used to verify and validate the behaviour of an application according to the requirements specified by the client. This testing is done without using any automation tools. The purpose remains the same, to find out bugs and errors and produce an error free software for use. Test cases in this type of testing are also generated manually by the tester. Manual Testing requires a lot of time and effort, but it also provides a bug free software, after it is completed.
There are multiple types of Manual Testing –
- White Box Testing
- Black Box Testing
- Gray Box Testing
2. Automation Testing
A type of testing, that is performed using specific tools to execute test cases without any human intervention. Using automation testing to test software, saves time and effort as well as provides overall productivity. In this testing, we can compare the generated test case output to actual output to check the functionality of the software. Any organisation that does automation testing, requires a handsome investment of money and resources.
The already manual tested test cases can only be used here for better outcomes.
Levels of Software Testing
All the software products go through four different levels of testing. These levels of testing are.
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
1. Unit Testing
Unit Testing is the first level of the software testing phase. In this type of testing, the smallest components of a software are taken into account and then tested one by one to check whether they perform the desired functionalities or not.
The smallest testable parts of a software comes under this level of testing. The programs in this level are tested through multiple test cases. Since, the errors in this level can be detected individually, it is also easy to modify the software via modifying the smallest components.
2. Integration Testing
In this level of testing, two or more smallest modules which are already unit tested, are combined together in order to create subsystems, so they can be tested as well. The main aim of this level is to see whether the modules could be integrated properly or not. The data flow between various modules or interfaces is also tested here. It is to check the accuracy between each module.
3. System Testing
In this level of testing, the entire system is tested at once to check whether all the modules work correctly or not. In this, the software’s functional and non-functional requirements are also tested. In this level of testing, the tester goes through every single attribute of the software and analyses it as a complete system.
4. Acceptance Testing
Acceptance Testing is the last level of software testing. This is the phase where the specifications and requirements are met as per the client’s request. It is performed by comparing the original demand of the client and the final product developed. It tests if the system satisfactorily solved the problem for which it was originally commissioned.
Acceptance Testing is also known as User Acceptance Testing (UAT). It is done by the customer before accepting the final product.