Exploring the main types of software testing
One of the major reasons for failure in software projects is a lack of product quality. Software testing is an integral part of the project life cycle, helping to ensure that a product is error-/defect-free and, in the same way, verifying the functionalities implemented to make sure they match the requirements defined with the client. There are two main categories of software testing, outlined as follows:
- Functional testing: This is used to validate each feature and function of the system to verify all functionalities.
- Non-functional testing: This is used to validate non-functional aspects of the system, such as performance, usability, and compliance.
Here is a diagram showing the different types of testing we will discuss in this chapter:

Figure 8.1: Types of testing
We will look at all the different types of testing shown in the preceding diagram in the upcoming sections.