Different Types of Testing
Published: 2024-02-15 20:35:48



## What are the different types of testing?

Software Testing is the process of checking or validating the software whether it meets the business requirements or not. It is also the process of identifying the bugs in the developed product using certain techniques.

**Types of Software Testing:**
1.	Manual Testing – Executing test cases manually.
2.	Automation Testing – Writing Automation test scripts to execute the test cases.
Different Types of Manual Testing:
1.	White box testing – Testing the code written for software.
2.	Black box testing – Testing the software’s functionality and non-functional aspects.
3.	Grey box testing
Different Types of Manual Testing:
1.	Functional Testing – Testing Functional aspects of software.
2.	Non-functional Testing – Testing Non-functional aspects of software.
Functional Testing:
1.	Unit Testing – Testing the actual code written for software development.
2.	System Testing - Testing the functional aspects of software.
3.	Integration testing – Testing the different components of the software after integration.
Non-functional Testing:
1.	Performance Testing – Testing the performance of the software like by applying maximum load.
2.	Usability Testing – Checking the user-friendliness, efficiency, and accuracy of the software.
3.	Compatibility Testing - Checking the compatibility of the software concerning browser, OS, and hardware.


## FUNCTIONAL TESTING
**Types Of Unit Testing:**
1.	Path Testing – testing the flow of data in code in terms of graphs.
2.	Loop Testing – Testing the loop like do-while, for, for-each and while
3.	Condition Testing – Verifying the condition given in loops, and control statements.
4.	Data flow testing – Testing the flow of data for desired output.
5.	Control flow testing – Decision flow based on different inputs for the condition.
6.	Branch Testing – Verifying all the branches of code by giving different types of input.
7.	Statement testing – Verifying all the branches in a statement using different inputs.
Types of System Testing:
1.	Functionality Testing – Testing the functionality of the software as per business requirements.
2.	Regression Testing – After developing the new functionality testing other functionalities to verify and ensure the other module's functionality is not impacted.
3.	Smoke testing – Testing the software on a high level to see if there is no major error.
4.	Sanity Testing – Testing specific functionality on a high level after the development of software.
5.	Ad-hoc testing – Testing the software randomly without any intention to find defects.





## NON-FUNCTIONAL TESTING
**Types of Performance Testing:**
1.	Load Testing – Testing software by applying the desired amount of load to the software. 
2.	Stress Testing - Testing software by applying more than the desired amount of load to the software.
3.	Volume Testing – Applying the massive volume of load on software and testing it.
4.	Scalability Testing – Applying the load in an increasing trend till the crash point.
5.	Stability Testing – Applying different amounts of load for a particular duration of time till it crashes.
**OTHER TYPES OF TESTING**
1.	Static Testing – Testing the business requirement and software requirement documents.
2.	Dynamic Testing - Testing the functionality of software, code of software, and end-to-end testing.
3.	Recovery Testing – Testing the recovery ability of the software after crashes.
4.	Exploratory Testing – Testing the software with the intent to explore without knowing the exact functionality.
5.	Acceptance Testing – Done by End users/SMEs to verify the functionality after delivery to the client.
6.	Alpha testing
7.	Beta Testing
8.	Database Testing – Testing tables, Stored procedures, triggers, functions, constraints, etc
9.	Accessibility Testing – Testing the functionalities implemented for disabled persons.
10.	Security Testing – Testing the security features of the software.
11.	GUI Testing – Testing the UI components of the software.

## Qualities that are desired for Software Tester:
1.	Attention to detail.
2.	Curiosity to learn new things.
3.	Creative approach to test.
4.	Strong Analytical Skills.
5.	Problem solving approach.
6.	Communication and collaboration.
7.	Patience and Persistence.
8.	Passion to explore the software with different methods.

**Difference between Agile and Waterfall Model:**



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2jil1n1s387om543uo0.png)