Software Testing TypesTesting
September 18, 202011 minutesuserBhumi Khimani
Software Testing Types
Different Types Of Software Testing 

Given below is the list of some common types of Software Testing: 



Accessibility Testing:

The purpose of accessibility testing is to determine whether the software or application is accessible to people with disabilities or not.  Here disability means deaf, color-blind, mentally disabled, blind, elderly, and other disabled groups.  Various checks are performed, such as font size for the visually impaired, color and contrast for color blindness, etc. 

Ad-Hoc Testing:

The name itself suggests that this test will be conducted on an ad hoc basis, i.e. without reference to the test case and also without a plan or documentation for such type of test.  The aim of this test is to find the flaws and breaks the application is executed by executing any sequence of application or random functionality.  Ad hoc testing is an informal way of finding bugs and can be done by anyone on the project.  It is difficult to identify bugs without a test case, but sometimes it is possible that bugs found in ad hoc tests were not identified using existing test cases. 
  
Alpha Testing:

It is the most common type of test used in the software industry.  The objective of this test is to identify all possible problems or defects before launching it to the market or to the user.  Alpha Testing takes place at the end of the software development phase but before Beta Testing.  Still, minor design changes can be made as a result of such testing.  Alpha testing is done on the developer's site.  An internal virtual user environment can be created for this type of test.

API Testing:

API testing is done for the system, which has a collection of APIs that should be tested.  During the test, a test of the following things is examined: explore the boundary conditions and ensure that the test harness varies the parameters of the API calls in order to verify functionality and expose faults.  Parameters. Checks the API behavior that is considering external environment conditions such as files, peripheral devices, etc. Check the sequence of API calls and check if the APIs produce useful results from subsequent calls. 

Beta Testing:

Beta tests, also known as user tests, are carried out by the end users at the end user's location to verify the usability, functionality, compatibility and reliability tests to provide input on the design, functionality and usability of a product.  These inputs are not only critical to the success of the product, but also an investment in future products if the data collected is effectively managed. 

Boundary Testing:

Boundary value analysis is a type of black box or specification based testing technique in which tests are performed using the boundary values.

Example:

An exam has a pass boundary at 50 percent, merit at 75 percent and distinction at 85 percent. The Valid Boundary values for this scenario will be as follows:

49, 50 - for pass
74, 75 - for merit
84, 85 - for distinction

Boundary values are validated against both the valid boundaries and invalid boundaries.
The Invalid Boundary Cases for the above example can be given as follows:

0 - for lower limit boundary value
101 - for upper limit boundary value
 
Bottom-Up Integration Testing:

Each component at the lower hierarchy is tested individually and then the components that rely upon these components are tested.

 
Bottom-Up Integration - Flow Diagram 



 
The order of Integration by Bottom-down approach will be:

4,2
5,2
6,3
7,3
2,1
3,1

Top-Down Integration Testing:

Top-down integration testing is an integration testing technique used in order to simulate the behavior of the lower-level modules that are not yet integrated. Stubs are the modules that act as temporary replacement for a called module and give the same output as that of the actual product.
The replacement for the 'called' modules is known as 'Stubs' and is also used when the software needs to interact with an external system.
topdown.PNG 59.36 KB

The above diagrams clearly states that Modules 1, 2 and 3 are available for integration, whereas, below modules are still under development that cannot be integrated at this point of time. Hence, Stubs are used to test the modules. The order of Integration will be:

1,2
1,3
2,Stub 1
2,Stub 2
3,Stub 3
3,Stub 4

Unit Testing:

Unit testing, which is a testing method by which individual units are tested to determine if there are any issues on the part of the developer themselves.  It is concerned with the functional health of the independent units. 

The main aim is to isolate each unit of the system to identify, analyze and fix the defects.

Unit Testing - Advantages:

  • Reduces errors in the newly developed functions or reduces errors when changing the existing functionality. 
  •  Reduces test costs as errors are detected at a very early stage.
  •   Improves the design and allows for better code redesign.
  •   Unit tests also show the quality of the build when integrated into Build. 
Unit Testing Lifecycle: 


unit testing life cycle.PNG 136.36 KB
Unit Testing Techniques:

  • Black Box Testing - Using which the user interface, input and output are tested.
  • White Box Testing - used to test each one of those functions' behavior is tested.
  • Gray Box Testing - Used to execute tests, risks and assessment methods. 
System Testing:

System testing (ST) is a black box testing technique performed to assess the complete system's compliance with specified requirements.  In system testing, the functionalities of the system are tested from an end-to-end perspective.  System testing is generally carried out by a team that is independent of the development team to measure the quality of the system in an unbiased manner.  Includes functional and non-functional tests. 

Types of System Tests:

 

Sanity Testing:

Sanity testing, which is a software testing method that the testing team performs for some basic tests.  The goal of the core test is to perform it whenever a new test architecture is received.  Terms such as smoke test, build validation test, basic acceptance test, or health test are used interchangeably, however, each of them is used under a slightly different scenario,
The sanity test is usually unwritten, and helps to identify missing dependent functions.  It is used to determine if the app partition is still working after making a slight change.  
The general health test can be both narrow and profound.  A mind test is a narrow regression test that focuses on one or several domains of functions. 

Smoke Testing:

The smoke test is a testing technique that is inspired by the hardware test, which checks for smoke from hardware components once the hardware is turned on.  Similarly, in the context of software testing, the smoke test refers to testing the basic functionality of the build.  If the test fails, the build is declared unstable and is NOT tested again until the build smoke test is passed. 

Smoke Testing - Features:

  • Identify the business-critical functions that a product must perform.  
  • Design and run the basic functions of the application. 
  •  Make sure the smoke test passes each and every build to continue testing.  
  • Smoke testing enables obvious errors to be revealed, saving time and effort .
  • Smoking testing can be manual or automated. 
Interface Testing:

Interface testing is performed to assess whether systems or components are passing data and properly controlling each other.  It is to check if all interactions between these modules are working properly and errors are handled properly. 

Interface Testing - Checklist

  • Check that communication between systems is done correctly
  •  Check if all supported hardware / software has been tested 
  • Check if all related documents are supported / open on all platforms
  •  Check security requirements or encryption when communicating between  application server systems 

Regression Testing:

Regression testing for a black box testing technique that consists of re-executing those tests that are affected by code changes.  These tests should be performed as much as possible throughout the software development life cycle. 

Types of Regression Tests:

  • Final Regression Tests: - A "final regression testing" is performed to validate the build that hasn't changed for a period of time. This build is deployed or shipped to customers.
  • Regression Tests: - A normal regression testing is performed to verify if the build has NOT broken any other parts of the application by the recent code changes for defect fixing or for enhancement.
Selecting Regression Tests:

  • Requires knowledge of the system and its effects on the existing functions.  
  • Tests are selected based on the area of ​​common failure. 
  •  Tests are chosen to include the area where code changes have been made multiple times. 
  •  Tests are selected based on the criticality of the features. 
 Regression Testing Steps:

  • Regression tests are the ideal cases of automation which results in better Return On Investment (ROI).
  • Select the regression tests.
  •   Choose apt tool and automate regression testing. 
  •  Verify applications with checkpoints. 
  •  Manage regression testing and update as needed.
  •   Schedule tests.
  •   Integrate with builds.
Load Testing:

Load testing is a performance testing technique using which the response of the system is measured under various load conditions. The load testing is performed for normal and peak load conditions

Load Testing Approach:

  • Evaluate performance acceptance criteria.
  •  Identify critical scenarios.
  •  Design the workload model.
  • Identify target load levels.
  •  Design the tests.
  •  Run the tests.
  • Analyze the results 
Objectives of Load Testing:

  • Response time.
  •  Resource usage rate.
  •  Maximum user load.
  • Work-related metrics 
Stress Testing:

Stress testing is a non-functional testing technique performed as part of performance testing.  During stress testing, the system is monitored after overloading the system to ensure that the system can withstand the stress. System recovery from this phase (after stress) is very critical as it is very  likely to occur in the production environment. 

Reasons for performing stress tests: 

  • This allows the test team to monitor the performance of the system during failures. 
  • To check if the system saved data before crashing or NOT. 
  • To check if the system is printing messages  Significant error during a failure or if it has printed random exceptions 
  • To check whether unexpected failures do not lead to safety issues 
Stress Tests - Scenarios: 

  • Monitor the behavior of the system when the maximum number of  'users are logged in at the same time
  •  All users performing critical operations at the same time
  •  All users Accessing the same file
  •  Hardware issues such as the downed database server or some of the servers in a downing farm  breakdown. 
Compatibility Testing:

Compatibility testing is a non-functional testing conducted on the application to evaluate the application's compatibility within different environments. It can be of two types - forward compatibility testing and backward compatibility testing.

  • Operating system Compatibility Testing - Linux, macOS, Windows
  • Database Compatibility Testing - Oracle SQL Server
  • Browser Compatibility Testing - IE, Chrome, Firefox
  • Other System Software - Web server, networking/ messaging tool, etc.
Localization Testing:

Localization testing is a software testing technique by which software behavior is tested for a specific region, locality, or culture.  The purpose of conducting the localization test for a program is to test the appropriate linguistic and cultural aspects of a particular site. 

Software Testing Methods

There are various methods for testing software. These methods are chosen by testers based on their requirements and methodologies. But three fundamental software testing methods are used in every project development.

Types of Software Testing Methods and Levels

  • White Box Testing
  • Black Box Testing
  • Grey Box Testing
White Box Testing & Levels

The White Box Test is also known as the Open / Clear Box Test / Glass Box Test.  From a developer's perspective, it is known as Code Oriented Testing / Structural Testing.  In This type of testing, technical tests can be performed within the internal structure, logical design and implementation of different modules.  Here, the tester uses preferred input / exercise paths via code to determine the correct or exact output.  is known as code-oriented testing, it contains technical tests and script-based tests as part of its testing phase. 

White Box Testing Levels

  • Unit Testing
  • Integration Testing
  • System Testing
Black Box Testing & Levels

This test is known as a behavior test, in which the software tests the internal structure, design and implementation, as well as the user interface and UX of the software under test, which are not known to the tester.  Black box tests are both functional and non-functional, but most of the time they are functional.  This testing technique is known as black box testing because the software or product is not known / confirmed to the tester in advance. 
Using this technique of testing to find errors in these mentioned categories:

  • Software malfunction.
  •  Error in interface.
  •  Errors in concepts.
  •  Errors related to the database.
  • Performance or behavior errors.
  • Errors in product startup or termination 
Black Box Testing Levels

  • Integration Testing
  • System Testing
  • Acceptance Testing
Grey Box Testing & Levels

In this software testing technique, it combines the concept of black box and white box testing.  In the gray box test, the inside of your product is partly known to the tester.  This has partial access to data structures residing internally to design different test cases, but at the same time testing from a user's perspective or as a black box tester. 

“Still There are various methods for testing software. These methods are chosen by testers based on their requirements and methodologies.”