Software Testing Types

There are many software testing types, which are used to test a software product. The different types of software testing help in identifying the defects, which may be left undetected with a particular type of testing.
Software testing is a probe conducted on a software module or the entire software itself and is an important part of the software development life cycle. This probe helps to give the clients with information about the quality of the software or module under test. The information provided is objective and an independent view of the software is given to the end client. This information is used by the client to appreciate as well as understand the risks involved in implementing the software. The other objectives of software testing is to validate and verify, whether the software product meets the requirements of the client and works exactly the way it is expected to work. There are different software testing types, which are implemented to verify and validate a particular software product. Software testing can be introduced in the development process, anytime during development, but the type depends on when was it introduced in the development process.

What are the Software Testing Types?

The different software testing methodologies used for software testing help to identify completeness, correctness, security and quality of a developed software. The process of software testing life cycle is carried out on behalf of the stakeholders, which helps in revealing quality information about a particular software product. There are two main types of software testing. They are black box testing and white box testing. Most of the other software testing types are categorized under either one of them.

White Box Testing
White box testing as the name suggests gives the internal view of the software. This type of testing is also known as structural testing or glass box testing as well, as the interest lies in what lies inside the box. It is often used to measure the thoroughness of testing through the coverage of a set of structural elements or coverage items.

Unit Testing
Unit testing is also known as component testing, module testing or program testing. The aim of this testing type is to search for defects in and verify the functioning of the individual software component.

Static Testing
It is the testing of a software or a component of the software at the specification or implementation level without any sort of execution of the software. The different types of methodologies used include different forms of reviews, coding standard implementation, code metrics, code structure, etc.

Code Coverage
It is an analysis method implemented to determine, which parts of the software have been covered by the test suite and which parts of the software have not been executed. There are different types of coverage methods, that are used for the same. They are statement coverage, decision coverage and condition coverage. Statement coverage is the process, which gives the percentage of executable statements, which have been exercised by a test suite. The decision coverage on the other hand, is the percentage of decision outcomes, which have been exercised by a test suite. 100% decision coverage means 100% statement coverage.

Error Guessing
A test design technique where an experienced tester is used to anticipate the defects, that might be a present in the software or in a component of the software under test, as a result of errors made. The tests are designed to specifically expose such defects.

Black Box Testing
Black box as the name suggests gives only the external view of the software. This type of testing involves, testing either functional or non-functional aspects of the software, without any sort of reference to the internal structure of the software. We will now see the different types of black box testing techniques.

Integration Testing
Integration testing involves testing the interfaces between components, interactions to different parts if a system, like the computer operating system, file system, hardware or interfaces between different software systems.

Functional Testing
It is the testing based on an analysis of the specification of the functionality of a particular software or a component of a software. Functional testing is often based on five main points. They are suitability, interoperability, security, accuracy and compliance.

Performance Testing
The testing methodology used to determine the performance of a software product. To understand performance testing better, we will take an example of a website. How does the website work in an environment of third-party products, like servers and middleware software. This type of testing helps to identify any kind of performance bottlenecks in high use applications. Normally automation tests are used for performance testing, which have normal peak and exceptional load conditions and the response of the software to these conditions.

Load Testing
This is a test conducted to determine and measure the behavior of a component or a software by increasing the load on the component or the software. For example, a number of parallel users and/or number of transactions are carried out on the system simultaneously, to find out what is the highest amount of load, which can be handled by the component or the software.

Stress Testing
There is often a confusion between stress testing and load testing and they may be used interchangeably, which is wrong. Stress testing involves conducting a test on the software to evaluate the system at or beyond the limits of its specified requirements. It helps to determine the load under which the software fails and how. The process used for stress testing is similar to performance testing, but load employed is of very high level and stimulated.

Exploratory Testing
This is one of the software testing techniques, which has a hands-on approach. There is minimum planning and maximum test execution carried out in exploratory testing. The tester actively controls the design of the tests, when those tests are performed. The information gained while testing is used to design and better tests.

Usability Testing
Usability testing involves tests, which are carried out to determine the extent to which the software product is understood, easy to learn and operate and attractive to the users under specific conditions. The user-friendliness of the software is under check in this type of testing. The application flow is checked to know, what is the flow of the software.

Reliability Testing
The ability of the software to perform its required functions under stated conditions for a specific period of time and/or for a specific number of operations or transactions;

Ad-Hoc Testing
It is the least formal method implemented for testing a software. It helps in deciding the scope and duration of the various testing, which need to be carried out on the application. It also helps the tester in better understanding of the software.

Smoke Testing
This software testing type covers the main functionality of a component or the software. It helps to determine the most crucial functions of the software, but does not concern the finer details.

System Testing
This type of software testing involves testing the entire system in accordance with the requirements of the client. It is based on overall requirements specifications and covers all combined parts of a system.

End to End Testing
This software testing type involves testing the entire application in real world like scenario. Here the software interacts with the database, uses the network for communication, interacts with other hardware, applications or systems, if necessary. Compatibility testing and security testing are a part of end to end testing.

Regression Testing
One of the important type of testing carried out on the software product. The focus of regression testing is on retesting the software to check if new defects are not introduced into the software product after certain defects have been fixed.

Acceptance Testing
This is a formal testing carried out to determine whether the system satisfies the acceptance criteria and to enable the users or other authorized entity to determine if the system has to be accepted or not. Acceptance testing is carried in respect to needs of the user, requirements of the users and the business processes to be carried out using the software.

Alpha Testing
Alpha testing involves stimulated or actual operational testing by potential users or an independent test team at the developers site, but outside the development arena. It is often performed on off-the-shelf software products, as a form of internal acceptance testing.

Beta Testing
Operational testing carried out by potential or existing users at an external site to determine if the system satisfies the user needs and fits within the business processes is known as beta testing. It is carried out as a form of acceptance testing for off-the-shelf software to acquire feedback from the market.

Other than the white box and the black box testing is the gray box testing. In this software testing types, the tester has knowledge of the internal data structure and algorithms to design test cases. However, the testing done is similar to black box testing.

Using the software testing types, the development team as well as the end user is able to ascertain if the software indeed does satisfy the requirements. Various organization have different methods, which are used to test a software. In some cases testing can begin at the start of the development process, and in some organization tester can be involved in later stages of the software development. The earlier testers are involved in the software development process, lesser is the amount of time and money to be spent towards the end of the development process.
By Bhakti Satalkar
Last Updated: 9/23/2011
Bouquets and Brickbats | What Others Said