All software testing types can be broken down into four main categories:
Functional testing determines whether software functions according to requirements;
Non-functional testing checks how well software components work together and under different conditions;
Change-related testing ensures that previously found errors were fixed and there are no new errors;
Testing by knowledge of the system (box testing) is used for all-encompassing bug search both in behavioral testing and code review.
Functional testing type includes a range of testing techniques:
Unit testing,
Integration testing,
System testing,
Sanity testing,
Smoke testing,
Interface testing, and
Regression testing Beta/Acceptance testing
Non-functional testing types involve several parameters such as UI/UX, security, installation, configuration, compatibility, reliability, localization, and performance testing. Performance testing checks the software performance under the expected load. In its turn, this testing type includes the following techniques:
Load testing,
Stability testing,
Stress testing,
Volume testing, and
Scalability testing.