Before company releases any application to user that application has to undergo through a testing process to ensure that the app is working in intended manner.
There are four main levels of testing that need to be completed before an application is released for use.
These four levels of testing are:-
1. Unit testing
2. Integration testing
3. System testing
4. Acceptance testing
There is also another type of testing called regression testing which can be performed during any of the four main testing stages.
Unit testing is first round of testing which is done by developers. The main intention behind unit testing is to check that the developed piece of code is working fine and meets user needs. Developed code can be tested by same developer or he can give his code to some other developer for assessment. A unit can refer to a function, individual program or even a procedure. Unit testing needs knowledge of code hence it is done by developers. As it is done by developers it comes under white box testing.
It is typically used to verify control flow and data flow, memory leak problems. One of the benefit of unit testing is that it can be run every time when a piece of code is changed, allowing to identify any issue and get them resolved quickly.
Integration testing is a level of testing where all the units within a program are combine and tested as a whole. The main purpose of integration testing is to check the interfaces and to check how different modules communicate with each other because no matter how efficiently each unit is running, if they aren’t properly integrated, it will affect the functionality of the software program. There are different methods for integration testing, but the specific method that will be used to get the job done will depend greatly on the way in which the units are defined. Few methods of integration testing are:
1. Top down
2. Bottom up
3. Big bang integration testing
4. Functional incremental
System testing is a level of testing where tester gets the complete application to test. The intention behind system testing is to check whether the developed system is as per client’s requirement or as specified in system requirement specification. System testing is undertaken by independent testers who haven’t played a role in developing the program and the technique used in system testing is black box testing. System testing is performed in staging environment which is similar to production environment. The system testing begins with software components that have cleared unit and integration testing. System testing is of much more importance as it helps to verify whether the developed application is meeting client’s specified requirement or not.
System Testing types are:
1. Usability testing
2. Performance testing
3. Load testing
4. Stress testing
5. Security testing
6. Configuration testing
7. Compatibility testing
8. Installability testing
9. Recovery testing
10. Availability testing
11. Volume testing
All these tests are conducted for non-functional requirements, whereas security testing is conducted for both functional and non-functional requirements.
Acceptance testing is a final round of testing where a system is tested for acceptability. Is the developed system or application ready for release? Acceptance testing is generally done by end user or customer. The user will test the system to find out whether the application meets their business needs. Once the acceptance test is passed then the application is released to production.
Acceptance testing is done in two different ways:
1. Alpha testing
2. Beta Testing