Types Of Software Testing: Different Testing Types With Details
What are the different types of Software Testing?
We, as testers are aware of the various types of Software Testing such as Functional Testing, Non-Functional Testing, Automation Testing, Agile Testing, and their sub-types, etc.
Each of us would have come across several types of testing in our testing journey. We might have heard some and we might have worked on some, but not everyone has knowledge about all the testing types.
Different Types of Software Testing
Each type of testing has its own features, advantages, and disadvantages as well. However, in this article, I have covered mostly each and every type of software testing which we usually use in our day to day testing life.
Let’s go and have a look at them.
What You Will Learn: [show]
Different Types Of Software Testing
Given below is the list of some common types of Software Testing:
Functional Testing types include:
Non-functional Testing types include:
Let’s see more details about these Testing types.
Types of Software Testing
#1) Alpha Testing
It is the most common type of testing used in the Software industry. The objective of this testing is to identify all possible issues or defects before releasing it into the market or to the user.
Alpha Testing is carried out at the end of the software development phase but before the Beta Testing. Still, minor design changes may be made as a result of such testing.
Alpha Testing is conducted at the developer’s site. In-house virtual user environment can be created for this type of testing.
#2) Acceptance Testing
An Acceptance Test is performed by the client and verifies whether the end to end the flow of the system is as per the business requirements or not and if it is as per the needs of the end-user. Client accepts the software only when all the features and functionalities work as expected.
It is the last phase of the testing, after which the software goes into production. This is also called User Acceptance Testing (UAT).
#3) Ad-hoc Testing
The name itself suggests that this testing is performed on an Ad-hoc basis i.e. with no reference to the test case and also without any plan or documentation in place for such type of testing.
The objective of this testing is to find the defects and break the application by executing any flow of the application or any random functionality.
Ad-hoc Testing is an informal way of finding defects and can be performed by anyone in the project. It is difficult to identify defects without a test case but sometimes it is possible that defects found during ad-hoc testing might not have been identified using existing test cases.
#4) Accessibility Testing
The aim of Accessibility Testing is to determine whether the software or application is accessible for disabled people or not.
Here, disability means deaf, color blind, mentally disabled, blind, old age and other disabled groups. Various checks are performed such as font size for visually disabled, color and contrast for color blindness, etc.
#5) Beta Testing
Beta Testing is a formal type of Software Testing which is carried out by the customer. It is performed in the Real Environment before releasing the product to the market for the actual end-users.
Beta Testing is carried out to ensure that there are no major failures in the software or product and it satisfies the business requirements from an end-user perspective. Beta Testing is successful when the customer accepts the software.
Usually, this testing is typically done by end-users or others. It is the final testing done before releasing an application for commercial purpose. Usually, the Beta version of the software or product released is limited to a certain number of users in a specific area.
So end-user actually uses the software and shares the feedback to the company. Company then takes necessary action before releasing the software to the worldwide.
#6) Back-end Testing
Whenever an input or data is entered on front-end application, it stores in the database and the testing of such database is known as Database Testing or Backend Testing.
There are different databases like SQL Server, MySQL, and Oracle, etc. Database Testing involves testing of table structure, schema, stored procedure, data structure and so on.
In Back-end Testing GUI is not involved, testers are directly connected to the database with proper access and testers can easily verify data by running a few queries on the database.
There can be issues identified like data loss, deadlock, data corruption etc during this back-end testing and these issues are critical to fixing before the system goes live into the production environment
#7) Browser Compatibility Testing
It is a subtype of Compatibility Testing (which is explained below) and is performed by the testing team.
Browser Compatibility Testing is performed for web applications and it ensures that the software can run with the combination of different browser and operating system. This type of testing also validates whether web application runs on all versions of all browsers or not.
#8) Backward Compatibility Testing
It is a type of testing which validates whether the newly developed software or updated software works well with the older version of the environment or not.
Backward Compatibility Testing checks whether the new version of the software works properly with file format created by an older version of the software; it also works well with data tables, data files, data structure created by the older version of that software.
If any of the software is updated then it should work well on top of the previous version of that software.
#9) Black Box Testing
Internal system design is not considered in this type of testing. Tests are based on the requirements and functionality.
Detailed information about the advantages, disadvantages, and types of Black box Testing can be seen here.
#10) Boundary Value Testing
This type of testing checks the behavior of the application at the boundary level.
Boundary Value Testing is performed for checking if defects exist at boundary values. Boundary Value Testing is used for testing a different range of numbers. There is an upper and lower boundary for each range and testing is performed on these boundary values.
If testing requires a test range of numbers from 1 to 500 then Boundary Value Testing is performed on values at 0, 1, 2, 499, 500 and 501.
#11) Branch Testing
It is a type of White box Testing and is carried out during Unit Testing. Branch Testing, the name itself suggests that the code is tested thoroughly by traversing at every branch.
#12) Comparison Testing
Comparison of a product’s strength and weaknesses with its previous versions or other similar products is termed as Comparison Testing.
#13) Compatibility Testing
It is a testing type in which it validates how software behaves and runs in a different environment, web servers, hardware, and network environment.
Compatibility testing ensures that software can run on a different configuration, different database, different browsers, and their versions. Compatibility testing is performed by the testing team.
#14) Component Testing
It is mostly performed by developers after the completion of unit testing. Component Testing involves testing of multiple functionalities as a single code and its objective is to identify if any defect exists after connecting those multiple functionalities with each other.
#15) End-to-End Testing
Similar to system testing, End-to-End Testing involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
#16) Equivalence Partitioning
It is a testing technique and a type of Black Box Testing. During this Equivalence Partitioning, a set of the group is selected and a few values or numbers are picked up for testing. It is understood that all values from that group generate the same output.
The aim of this testing is to remove redundant test cases within a specific group which generates the same output but not any defect.
Suppose, the application accepts values between -10 to +10 so using equivalence partitioning the values picked up for testing are zero, one positive value, one negative value. So the Equivalence Partitioning for this testing is -10 to -1, 0, and 1 to 10.
#17) Example Testing
It means real-time testing. Example Testing includes the real-time scenario, it also involves the scenarios based on the experience of the testers.
#18) Exploratory Testing
Exploratory Testing is informal testing performed by the testing team. The objective of this testing is to explore the application and looking for defects that exist in the application.
Sometimes it may happen that during this testing major defect discovered can even cause a system failure.
During Exploratory Testing, it is advisable to keep a track of what flow you have tested and what activity you did before the start of the specific flow.
An Exploratory Testing technique is performed without documentation and test cases.
#20) Functional Testing
This type of testing ignores the internal parts and focuses only on the output to check if it is as per the requirement or not. It is a Black-box type testing geared to the functional requirements of an application. For detailed information about Functional Testing click here.
#21) Graphical User Interface (GUI) Testing
The objective of this GUI Testing is to validate the GUI as per the business requirement. The expected GUI of the application is mentioned in the Detailed Design Document and GUI mockup screens.
The GUI Testing includes the size of the buttons and input field present on the screen, alignment of all text, tables, and content in the tables.
It also validates the menu of the application, after selecting different menu and menu items, it validates that the page does not fluctuate and the alignment remains same after hovering the mouse on the menu or sub-menu.
#22) Gorilla Testing
Gorilla Testing is a testing type performed by a tester and sometimes by the developer the as well. In Gorilla Testing, one module or the functionality in the module is tested thoroughly and heavily. The objective of this testing is to check the robustness of the application.
#23) Happy Path Testing
The objective of Happy Path Testing is to test an application successfully on a positive flow. It does not look for negative or error conditions. The focus is only on the valid and positive inputs through which application generates the expected output.
#24) Incremental Integration Testing
Incremental Integration Testing is a Bottom-up approach for testing i.e continuous testing of an application when new functionality is added. Application functionality and modules should be independent enough to test separately. This is done by programmers or by testers.
#25) Install/Uninstall Testing
Installation and Uninstallation Testing is done on full, partial, or upgrade install/uninstall processes on different operating systems under different hardware or software environment.
#26) Integration Testing
Testing of all integrated modules to verify the combined functionality after integration is termed as Integration Testing.
Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.