In this post, let’s see the different types of testing.
Types of Testing In Software Testing:
WHITE BOX TESTING:
White Box Testing AKA Glass Box, Open Box, Transparent Box, Clear Box Testing. This is to test the internal structure of the application.
The tester who works on this type of testing needs to have a good knowledge of source code to scrutinize which unit of code is not behaving as intended.
GREY BOX TESTING:
Grey box is the combination of both White Box and Black Box Testing.
The tester who works on this type of testing needs to have access to design documents. This helps to create better test cases in this process.
BLACK BOX (SPECIFICATION, BEHAVIOURAL, I/P O/P):
Black Box testing is a software testing technique in which functionality of the application under test is tested without looking at the internal structure of the application.
This testing type is based entirely on the software requirements and specifications.
There is no obligation on testers to have knowledge of source code in this process.
Testing the fully integrated application to evaluate the system’s compliance with its specified requirements is called System Testing AKA End to End testing. Verifying the completed system to ensure that the application works as intended or not.
Integration Testing is the process of testing the interface between the two software units.
Integration testing is done by three ways.
Big Bang Approach, Top Down Approach, Bottom-Up Approach:
Big Bang Approach:
Combining all the modules once and verifying the functionality after completion of individual module testing.
Top down and bottom up are carried out by using dummy modules known as Stubs and Drivers. These Stubs and Drivers are used to stand-in for missing components to simulate data communication between modules.
Top Down Approach:
Testing takes place from top to bottom. High-level modules are tested first and then low-level modules and finally integrating the low-level modules to the high level to ensure the system is working as intended. Stubs are used as a temporary module if a module is not ready for integration testing.
It is a reciprocate of the Top Down Approach. Testing takes place from bottom to up. Lowest level modules are tested first and then high-level modules and finally integrating the high-level modules to the low level to ensure the system is working as intended. Drivers are used as a temporary module for integration testing.
It is also called as Module Testing or Component Testing
Unit Testing is done to check whether the individual unit or module of the source code is working properly. It is done by the developers in developer’s environment.
ACCEPTANCE TESTING / USER ACCEPTANCE TESTING (UAT):
It is also known as pre-production testing. This is done by the end users along with the testers to validate the functionality of the application. After successful acceptance testing,
Formal testing conducted to determine whether an application is developed as per the requirement. It allows a customer to accept or reject the application.
Types of acceptance testing are Alpha, Beta & Gamma.
Alpha testing is done by the in-house developers (who developed the software) and testers. Sometimes alpha testing is done by the client or outsourcing team with the presence of developers or testers.
Beta testing is done by a limited number of end users before delivery. Usually, it is done in the client place.
Gamma testing is done when the software is ready for release with specified requirements. It is done at the client place. It is done directly by skipping all the in-house testing activities.
In simple words, what the system actually does is functional testing
To verify that each function of the software application behaves as specified in the requirement document. Testing all the functionalities by providing appropriate input to verify whether the actual output is matching the expected output or not.
It falls within the scope of black box testing and the testers need not concern about the source code of the application.
NON FUNCTIONAL TESTING:
In simple words, how well the system performs is non-functionality testing
Non-functional testing refers to various aspects of the software such as performance, load, stress, scalability, security, compatibility etc.,
The main focus is to improve the user experience on how fast the system responds to a request.
Some of the Non-functional Testing types are as follows:
It is to determine what system supposed to do. It helps to check whether the application is justifying the requirements or not.
It is to determine what system not supposed to do. It helps to find the defects from the software.
Smoke Testing is done to make sure if the build we received from the development team is testable or not. It is also called as “Day 0” check. It is done at the “build level”.
It helps not to waste the testing time to simply testing the whole application when the key features don’t work or the key bugs have not been fixed yet.
Sanity Testing is done during the release phase to check for the main functionalities of the application without going deeper. It is also called as a subset of Regression testing. It is done at the “release level”.
At times due to release time constraints rigorous regression testing can’t be done to the build, sanity testing does that part by checking main functionalities.
Repeated testing of an already tested program, after modification, to discover any defects introduced or uncovered as a result of the changes in the software being tested or in another related or unrelated software components.
Usually, we do regression testing in the following cases:
- New functionalities are added to the application
- Change Requirement (In organizations, we call it as CR)
- Defect Fixing
- Performance Issue Fix
- Environment change (Eg. Updating the DB from MySQL to Oracle)
To ensure that the defects which were found and posted in the earlier build were fixed or not in the current build.
Say, Build 1.0 was released. Test team found some defects (Defect Id 1.0.1, 1.0.2) and posted.
Build 1.1 was released, now testing the defects 1.0.1 and 1.0.2 in this build is retesting.
Graphical User Interface Testing is to test the interface between the application and the end user.
GLOBALIZATION TESTING: Internationalization Testing (I18N Testing)
Globalization is a process of designing a software application so that it can be adapted to various languages and regions without any changes.
LOCALIZATION TESTING: (L10N Testing)
Localization is a process of adapting globalization software for a specific region or language by adding local specific components.
Perform testing on the application continuously for long period of time in order to verify the stability of the application
Perform abnormal action on the application deliberately in order to verify the stability of the application.
Usually, this process will be carried out by domain experts. They perform testing just by exploring the functionalities of the application without having the knowledge of the requirements.
To verify whether application is user-friendly or not and to verify whether it is comfortably used by end user or not
The main focus in this testing is to check whether the end user can understand and operate the application easily or not.
The application should be self-exploratory and must not require training to operate it.
It is to check whether the application is successfully installed and it is working as expected after installation.
It is to deploy and check whether the application is working as expected in a different combination of environmental components.
Identify the modules or functionalities which are most likely cause failures and then testing those functionalities.
It is a process where the testers test the application by having a pre-planned procedure and proper documentation.
Ad-hoc testing is quite opposite to the formal testing. It is an informal testing type. In Adhoc testing, testers randomly test the application without following any documents and test design techniques. This testing is primarily performed if the knowledge of testers in the application under test is very high. Testers randomly test the application without any test cases or any business requirement document.
This type of testing determines or validates the speed, scalability, and/or stability characteristics of the system or application under test. Performance is concerned with achieving response times, throughput, and resource-utilization levels that meet the performance objectives of the project or product.
It is to verify that the system/application can handle the expected number of transactions and to verify the system/application behavior under both normal and peak load conditions.
It is to verify that the system/application can handle a large amount of data
It is to verify the behavior of the system once the load increases more than its design expectations.
In this post, we have mentioned very important types of testing. some more types of testing are available but would like to conclude here.
If you feel some of the important types of testing definitions missed in this article, please comment below. So those will be included.