There are various categories in software testing based on the techniques used and the software under test. Some of the types are as listed below. 1. Unit Testing As the name suggests, it is a technique that you use to test the smallest piece of code. The test experts isolate the logical code unit and check it individually. The test unit you isolate can be anything, from class or method to any line of the code. As the units are smaller, your test speed increases and you are able to run multiple tests in a shorter time span. Once every chunk of code verifies, the entire project either gets accepted or moves to another testing process. 2. Integration and Regression testing Once the test team gets assurance that every unit you isolated is working fine, the technique they use is integration and regression testing. Integration tests get performed on the entire process rather than the individual units. On the other hand, the regression testing mechanism comes to play after every change in the software product. Whenever there is a change or an upgrade in the software system, the test team performs the regression test to confirm that everything goes well. 3. FunctionalTesting This software testing mechanism assures that the functions or operations of the end product meet the requirements mentioned in the SRS. The test team performs a test for its functionality and verifies it only if the process completes successfully. It only focuses on checking the functions. There are no tests to check the user interface, database, APIs or other aspects associated with the software. 4.Smoke Testing It is a quick and rapid regression test that gets performed only to confirm to the quality assurance team that they can continue with the further steps. The team gets notified if the deployed software shows any flaws or errors during the smoke testing. They follow these alerts and immediately plan to fix the flaws. If you follow a hierarchy, smoke testing comes right before functional testing. 5. Performance Testing As the name suggests, this testing technique is to verify the performance of the software delivered. The team checks the speed, reliability, response time, usage of resources and other factors related to the end product performance. They need to ensure that the system responds on time and with the expected outputs to consider it flawless and proceed towards the end of the testing process. These are the five categories in software testing, and other than this, you have load testing, stress testing, system testing and shakeout testing. One has to know every detail about all these options to understand which testing type would be apt for their goals.