What are the different types of Testing?
Published: 2023-09-23 05:35:34

The Software testing is broadly classified into **Manual Testing and Automation Testing.**
**Manual Testing**: Testing any software or an application according to the client's needs without using any automation tool is known as manual testing.
**Automation Testing**: Automation Testing is a software testing technique that is performed using special automated testing software tools to execute a test case suite.
Manual testing is further classified into many subcategories which are explained as below:
**•	White Box Testing
•	Black Box Testing
•	Grey Box Testing**
**White Box testing**: In white-box testing, the developer will inspect every line of code before handing it over to the testing team or the concerned test engineers. The purpose of implementing the white box testing is to emphasize the flow of inputs and outputs over the software and enhance the security of an application.
White box testing is also known as open box testing, glass box testing, structural testing, clear box testing, and transparent box testing.
**Black Box testing**: In this testing, the test engineer will analyse the software against requirements, identify the defects or bug, and sends it back to the development team. The main objective of implementing the black box testing is to specify the business needs or the customer's requirements.
Black box testing is a process of checking the functionality of an application as per the customer requirement. The source code is not visible in this testing; that's why it is known as black-box testing.
Black Box testing is classified into Functional testing and Non-functional testing.
**Functional Testing**: In functional testing, all the components are tested by giving the value, defining the output, and validating the actual output with the expected value.
Functional testing is a part of black-box testing as its emphases on application requirement rather than actual code. Functional testing is also known as Component testing.
Functional testing is further classified into the following:
1)	Unit Testing - With this functional testing type, smallest functional and testable unit of code is tested during unit testing. Mostly, performed by developers, since it is a White-Box testing technique.
2)	Integration Testing - Two or more unit tested components of the software are integrated together, and tested to validate the interaction between them is as expected. The communication of commands, data, DB calls, API calls, Micro-services processing is happening between the units and there is no unexpected behaviour observed during this integration. It has 3 approaches called Top-Down Approach, Bottom-Up Approach and Hybrid Approach.
3)	System Testing - All components of the system are combined and the system is tested for compliance and correctness against the requirement specifications (Functional or System).
4)	Regression Testing - After some enhancements or code fixes by developers, it becomes very important to run the regression test suite. Regression is run to ensure that these code changes have not hampered the existing working functionalities or any new defect is not injected in the code.
5)	Smoke Testing - After development, when a new build is released, Smoke Testing is performed on the application to ensure that all end-to-end major functionalities work. Smoke testing is usually done for the builds created during the initial phase of development for an application, which are not yet stable.
6)	Sanity Testing - Sanity Tests are selected from the Regression Test suite, covering major functionalities of the application.
7)	Acceptance Testing - During Acceptance Testing, the acceptance of the application by the end-user is tested.  It is performed just after the System Testing and before the final release of the application in the real world.
**Non-functional Testing**: It provides detailed information on software product performance and used technologies.
Non-functional testing will help us minimize the risk of production and related costs of the software.
It is classified into:
**•	Load Testing
•	Stress Testing
•	Scalability Testing
•	Stability Testing**
**Grey Box testing**: Another part of manual testing is Grey box testing. It is a collaboration of black box and white box testing.
Since, the grey box testing includes access to internal coding for designing test cases. Grey box testing is performed by a person who knows coding as well as testing