Different Types of Software Testing
Different Types of Software Testing
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).
1
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.
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.
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
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 older version of the environment or not.
2
Backward Compatibility Testing checks whether the new version of the software works properly
with file format created by older version of the software; it also works well with data tables, data
files, data structure created by 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.
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.
3
#16) Equivalence Partitioning
It is a testing technique and a type of Black Box Testing. During this equivalence partitioning, a
set of 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, 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.
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.
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.
4
#22) Gorilla Testing
Gorilla Testing is a testing type performed by a tester and sometimes by 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.
Load testing helps to find the maximum capacity of the system under specific load and any
issues that cause the software performance degradation. Load testing is performed using tools
like JMeter, LoadRunner, WebLoad, Silk performer etc.
#28) Monkey Testing
Monkey testing is carried out by a tester assuming that if the monkey uses the application then
how random input, values will be entered by the Monkey without any knowledge or
understanding of the application.
The objective of Monkey Testing is to check if an application or system gets crashed by
providing random input values/data. Monkey Testing is performed randomly and no test cases
are scripted and it is not necessary to
Monkey Testing is performed randomly and no test cases are scripted and it is not necessary to
be aware of the full functionality of the system.
5
application, only the specific area having the impact and the related test cases should able to
identify those errors in the system.
#30) Negative Testing
Testers having the mindset of “attitude to break” and using negative testing they validate that if
system or application breaks. A negative testing technique is performed using incorrect data,
invalid data or input. It validates that if the system throws an error of invalid input and behaves
as expected.
#31) Non-Functional Testing
It is a type of testing for which every organization having a separate team which usually called as
Non-Functional Test (NFT) team or Performance team.
Recovery testing determines if the system is able to continue the operation after a disaster.
Assume that application is receiving data through the network cable and suddenly that network
cable has been unplugged.
Sometime later, plug the network cable; then the system should start receiving data from where it
lost the connection due to network cable unplugged.
The low priority functionality may be tested or not tested based on the available time.
6
The Risk-based testing is carried out if there is insufficient time available to test entire software
and software needs to be implemented on time without any delay. This approach is followed only
by the discussion and approval of the client and senior management of the organization.
Security Testing is done to check how the software or application or website is secure from
internal and external threats. This testing includes how much software is secure from the
malicious program, viruses and how secure and strong the authorization and authentication
processes are.
It also checks how software behaves for any hackers attack and malicious programs and how
software is maintained for data security after such a hacker attack.
The testing team ensures that the build is stable and a detailed level of testing is carried out
further. Smoke Testing checks that no show stopper defect exists in the build which will prevent
the testing team to test the application in detail.
If testers find that the major critical functionality is broken down at the initial stage itself then
testing team can reject the build and inform accordingly to the development team. Smoke
Testing is carried out to a detailed level of any functional or regression testing.
The static testing is also applicable for test cases, test plan, design document. It is necessary to
perform static testing by the testing team as the defects identified during this type of testing are
cost-effective from the project perspective.
#40) Stress Testing
This testing is done when a system is stressed beyond its specifications in order to check how
and when it fails. This is performed under heavy load like putting large number beyond storage
capacity, complex database queries, continuous input to the system or database load.
7
#41) System Testing
Under System Testing technique, the entire system is tested as per the requirements. It is a
Black-box type testing that is based on overall requirement specifications and covers all the
combined parts of a system.
#42) Unit Testing
Testing of an individual software component or module is termed as Unit Testing. It is typically
done by the programmer and not by testers, as it requires a detailed knowledge of the internal
program design and code. It may also require developing test driver modules or test harnesses.
#43) Usability Testing
Under Usability Testing, User-friendliness check is done. Application flow is tested to know if a
new user can understand the application easily or not, Proper help documented if a user gets
stuck at any point. Basically, system navigation is checked in this testing.
#44) Vulnerability Testing
The testing which involves identifying of weakness in the software, hardware and the network is
known as Vulnerability Testing. Malicious programs, the hacker can take control of the system,
if it is vulnerable to such kind of attacks, viruses, and worms.
Conclusion
The above-mentioned Software Testing Types are just a part of testing. However, there is still a
list of more than 100+ types of testing, but all testing types are not used in all types of projects.
So I have covered some common Types of Software Testing which are mostly used in the testing
life cycle.
Also, there are alternative definitions or processes used in different organizations, but the basic
concept is the same everywhere. These testing types, processes, and their implementation
methods keep changing as and when the project, requirements, and scope changes.