Types of Software Testing

Software testing is the process of executing code with the aim of finding errors in it. This is done by comparing the expected results with the actual output obtained by executing code. It involves execution of a software component or system component to evaluate one or more properties of interest. Software testing also helps to identify errors, gaps or missing requirements in contrary to the actual requirements. It can be either done manually or using automated tools. Testing is important because software bugs could be expensive or even dangerous. Software bugs can potentially cause monetary and human loss. This article focusses on the different types of testing currently used in the Computer Science industry.

Unit Testing: This type of testing aims to make the smallest unit of software bug free. One tiny component of the entire system such as a single program or a single function is tested. The full system is broken down into numerous such small units and then tested. It is often done by the developer by using sample input and observing its corresponding outputs.

Integration Testing: Once unit testing has been done by the developer, he then tests these independent units by considering them to be a full entity called the software system. He can either simply test all units together or club similar units and then test them. Integration testing is testing in which a group of components are combined to produce output.

Regression Testing: No system is static i.e. they are all prone to changes over a period. Typically, such modifications in the code have the possibility of introducing new bugs in the system which is why Regression Testing is done. Here, only the changed unit of code and its dependencies are tested so as fix any new bugs introduced due to code changes.

Smoke Testing: This test is done to make sure that software under testing is ready or stable for further testing. For instance, if a project has 2 modules, before going to module 2 make sure that module 1 works properly. It is like a sanity check done before further testing.

Acceptance Testing: This type of testing has 2 sub types – Alpha and Beta Testing. Alpha testing is done by the developers and testers of the system by simply using the system. It is done from the end user’s perspective in a environment most similar to the actual use case scenario. Beta testing, on the other hand is done by customers. A small portion of the software is released to the public for testing. Users then report bugs and annoyances as a feedback cycle to the software team.

System Testing: System testing is done to ensure that the software runs properly on various platforms, operating systems and configurations. For instance, a Windows based application may be tested in Linux or Mac.

Stress Testing: The system is tested under unfavorable conditions to check how far it can go. All parameters that go as input and that affect the system are tweaked to their maximum capacities and then used to test the software. Any major crashes are fixed.

Performance Testing: It is designed to test the run-time performance of a software within the context of an integrated system. It is used to test the speed, output times, efficiency, memory and effectiveness of the software.

By Priya T.