Types of Testing

Hirudini Udugama
5 min readOct 8, 2020

Today we are going to look about different testing types in software quality assurance.

Testing can be categorized under 3 categories.

  1. Functional Testing

2. Non-Functional Testing/ Performance Testing

3. Maintenance (Regression and Maintenance)

Examples for Functional testing types:

· Unit testing

· Integration testing

· Smoke testing

· UAT ( User Acceptance Testing)

· Localization testing

· Globalization testing

· Interoperability testing

Examples for Non-Functional Testing types:

· Performance testing

· Endurance testing

· Load testing

· Volume testing

· Scalability testing

· Usability testing

Examples for Maintenance Testing types:

· Regression testing

· Maintenance testing

Unit Testing

Individual units or components of a software are tested in unit testing. Validating whether each single unit in the software works properly as expected is the purpose of unit testing. Typically done by the programmer and not by testers

A unit may be an individual function, method, procedure, module, or object.

Unit testing can be done in both manual and automated manner. Some unit testing tools are; Junit (Java based), NUnit (.net based), JMockit, EMMA (Java based) and PHPUnit (PHP based).

Integration Testing

Integration testing is testing of combined parts of an application to determine if they function together correctly. The purpose of this level of testing is to expose defects in the interaction between these software modules when they are integrated.

System Testing

The process of testing an integrated system to verify that it meet specified requirements. The purpose of a system test is to evaluate the end-to-end system specifications. After the completion of the integration testing, the product is passed for system testing.

Smoke testing

Preliminary testing to reveal simple failures severe enough to, for example, reject a prospective software release.

Black Box Testing

Tests are based on requirements and functionality and not consider about knowledge of internal design or code. These tests can be either functional or non-functional.

White Box Testing

Internal structure/ design/ implementation of the item being tested. Tests are based on coverage of code statements, branches, paths, conditions.

Gray Box Testing

The aim of this testing is to search for the defects if any due to improper structure or improper usage of applications. This is a combination of black box testing and white box testing.

Regression Testing

Testing after fixes or modifications of the software or its environment. It can be difficult to determine how much re-testing is needed, especially near the end of the development cycle. Automated testing tools can be especially useful for this type of testing.

Confirmation Testing

Confirmation Testing is done to make sure that the tests cases which failed in last execution are passing after the defects against those failures are fixed.

Acceptance Testing

Testing whether the solution meets customer requirement or not. Final testing based on specifications of the end user or customer, or based on use by end-users/customers over some limited period of time.

Performance Testing

A testing technique performed to determine the system parameters in terms of responsiveness and stability under various workload. Performance testing measures the quality attributes of the system, such as scalability, reliability and resource usage.

Load Testing

In load testing, application is tested under a specific load to determine the behavior of the application when multiple users access simultaneously. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.

Stress testing

Verifies stability & reliability of software application. The goal of Stress testing is measuring software on its robustness and error handling capabilities under extremely heavy load conditions and ensuring that software doesn’t crash under crunch situations. It even tests beyond normal operating points and evaluates how software works under extreme conditions. A most prominent use of stress testing is to determine the limit, at which the system or software or hardware breaks.

Let’s see the difference between Load testing and Stress testing.

Load testing is to test the system behavior under normal workload conditions, and it is just testing or simulating with the actual workload. Stress testing is to test the system behavior under extreme conditions and is carried out till the system failure.

Load testing does not break the system. Stress testing tries to break the system by testing with overwhelming data or resources.

Usability Testing

Testing for ‘user-friendliness’. Clearly this is subjective, and will depend on the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.

Install/uninstall Testing

Testing of full, partial, or upgrade install/uninstall processes. How the system behave when it install as well as uninstall is tested.

Recovery Testing

Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.

Security Testing

Testing how well the system protects against unauthorized internal or external access, willful damage and etc; may require sophisticated testing techniques.

Compatibility Testing

Testing how well software performs in a particular hardware/software/operating system/network/etc. environment.

Exploratory Testing

Often taken to mean a creative, informal software test that is not based on formal test plans or test cases; testers may be learning the software as they test it.

Ad-Hoc Testing

Similar to exploratory testing, but often taken to mean that the testers have significant understanding of the software before testing it.

Alpha Testing

Alpha testing performed by Testers who are usually internal employees of the organization. Alpha testing is carried out by the testers who are internal employees of the organization. The main goal is to identify the tasks that a typical user might perform and test them.

Beta Testing

Testing performed by Clients or End Users in the real environment who are external to the organization. It is the final test before shipping a product to the customers.

Let’s see the difference between alpha testing and beta testing.

Alpha Testing

· Performed by Testers who are usually internal employees of the organization

· Performed at developer’s site

· Reliability and Security testing are not performed in-depth Alpha Testing

· Requires a lab environment or testing environment

Beta Testing

· Performed by Clients or End Users who are not employees of the organization

· Performed at a client location or end user of the product

· Reliability, Security, Robustness are checked during Beta Testing

· Doesn’t require any lab environment or testing environment. The software is made available to the public and is said to be real time environment

Crowdsourced Testing

Testing is carried out by a number of different testers from different places, and not by hired consultants and professionals. The software is put to test under diverse realistic platforms which makes it more reliable, cost-effective, fast, and bug-free.

Hope you got a basic understanding on different types of testing. Let me come with a new lesson for you. Thank you!!!

--

--