There are different software testing types that you must need to understand before going to test any application.  Following is a comprehensive list of software testing types you may need to conduct during testing the software.

Unit Testing

Normally software testing is done by the testing engineers; however, developers are also used to do some type of testing at the time of development. They check internal logic of the program like how do programming statements work and make sure all the lines of the programs are executing correctly, whether they are getting expected output or not with different types of inputs. So the testing that is done by the developer at unit level is called unit testing. A unit is nothing but a module, component or a single program of the application. Unit testing is white-box testing because it requires logic or programming skills.

Integration Testing:

A complete software or application would have multiple set of programs, modules, components or units. These units would be communicating with each other like output of one unit can be the input for the second unit of the application. These components or units are integrated with each other and developers need to test the communication in between each component of the software after integrating them.  This type of testing is called integration testing, which is also done by the developers at the level of integration. However, integration testing can also be done by the tester on UI. Integration is also white-box testing that requires logic or programming skills.

System Testing:

System testing is the main type of the black-box testing, which is further divided into a list of testing types about which we will have a detailed discussion in the coming sessions. System testing means whole testing of the application. System testing is done by the testers to verify whether the application is working according to the customer’s requirement or not.  Test engineers do not need to know the internal code or logic of the application, but they should know the functionalities of the application from user interface point of view.  You should have a good domain and functionality knowledge. System testing means you do not test the internal logic of the application, but you test the application according to the customer’s requirements. Manual testers and automation testers are involved in system testing. They need to test the software completely.

All the testers are involved in system testing. We need to refer the SRS document, which contains all the functionalities required by the customer. We should have thoroughly understanding of every requirement and then test the complete software whether it is working according to the customer requirement or not.

We test the overall functionality of the application concerning the customer requirement. SRS document is input document for System testing.

User Acceptance Testing (UAT)

Once testing is done and application is released to production or handed over to the customer, the customer will do a certain type of testing before using it in the production environment. This type of testing is called UAT or User Acceptance Testing. They should also familiar with the application. They should know how to use the application. Once the UAT testing is successful, application is moved to the production environment. BRS, CRS or URS is the document which are created by customers depending on which customers check the software whether it is working according to their requirement or not. UAT testing comes under black-box testing.

Black-Box Testing:

Software assurance engineer(QA), quality controller(QC) or software engineer(QE), almost all the testers come under the black-box testing because they do not need to know what the code developers have written to develop the application, they do not know the internal logic of the software. Some testers make processes, some of them test the application manually and some people do automation testing.

If you are automation tester, you need to do certain activities like writing automation code or script and then execute automation script and then you need to generate the reports and also need to prepare some status reports and then send to management. So these are the different activities to be done during system testing. As a test engineer, we do a lot of testing here.

Functional and Non-Functional Testing:

System testing is divided into two main categories functional testing and non-functional testing.  What are the different type of testing we do as part of the functional and what are the different type of testing we do as part of non-functional testing.

Functional Testing:

We need to perform a lot of testing like object properties testing, error-handling testing, input domain testing, cookies testing, links testing, database testing. These all come under the functional part.

Non-Functional Testing:

Performance testing, stress testing, load testing, recovery testing, security testing all these come under the non-functional testing.