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.
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
Different Types of Software Testing
Given below is the list of some common types of Software Testing:
Functional testing types include:
Unit testing
Integration testing
System testing
Sanity testing
Smoke testing
Interface testing
Regression testing
Beta/Acceptance testing
Non-functional testing types include:
Performance Testing
Load testing
Stress testing
Volume testing
Security testing
Compatibility testing
Install testing
Recovery testing
Reliability testing
Usability testing
Compliance testing
Localization testing
Let’s see more details about these testing types.
#1) Alpha Testing
#2) Acceptance Testing
#3) Ad-hoc Testing
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
#5) Beta Testing
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.
#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.
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.
#9) Black Box Testing
Internal system design is not considered in this type of testing. Tests are based on the requirements and functionality.
#10) Boundary Value Testing
This type of testing checks the behavior of the application at the boundary level.
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
#14) Component Testing
#15) End-to-End Testing
#16) Equivalence Partitioning
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.
#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 an 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 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.
#20) Functional Testing
#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 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
#25) Install/Uninstall Testing
#26) Integration Testing
#27) Load Testing
It is a type of non-functional testing and the objective of Load testing is to check how much of load or maximum workload a system can handle without any performance degradation.
#28) Monkey Testing
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.
#29) Mutation Testing
#30) Negative Testing
#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.
It should not take much time to load any page or system and should sustain during peak load.
#32) Performance Testing
#33) Recovery Testing
It is a type of testing which validates that how well the application or system recovers from crashes or disasters.
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.
#34) Regression Testing
#35) Risk-Based Testing (RBT)
The low priority functionality may be tested or not tested based on the available time. 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.
#36) Sanity Testing
#37) Security Testing
It is a type of testing performed by a special team of testers. A system can be penetrated by any hacking way.
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.
#38) Smoke Testing
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.
#39) Static Testing
Static Testing is a type of testing which is executed without any code. The execution is performed on the documentation during the testing phase. It involves reviews, walkthrough, and inspection of the deliverables of the project. Static testing does not execute the code instead of the code syntax, naming conventions are checked.
#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.
#41) System Testing
#42) Unit Testing
#43) Usability 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.
So it is necessary to check if those systems undergo Vulnerability Testing before production. It may identify critical defects, flaws in the security.
#45) Volume Testing
The software or application undergoes a huge amount of data and Volume Testing checks the system behavior and response time of the application when the system came across such a high volume of data. This high volume of data may impact the system’s performance and speed of the processing time.
#46) White Box Testing
It is also known as Glass box Testing. Internal software and code working should be known for performing this type of testing. Under this tests are based on the coverage of code statements, branches, paths, conditions etc.
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.
Last updated
Was this helpful?