A Glossary of Software Testing Types

Timothy Joseph
Timothy Joseph | March 2, 2022

A Glossary of Software Testing Types

Technology is an integral part of our daily lives. From transferring money online, to accessing our medical records on an app, we utilize dozens of applications and software every single day. Our daily activities are so dependent and intertwined with the functionality of these apps that any form of software malfunction would result in a high level of inconvenience.

In most cases, these malfunctions occur because of the lack of software testing. That’s why it is extremely important to run all software through a series of testing processes.

In this blog, we will talk about the types of testing that play a crucial role in upscaling quality, security, functionality, and reliability of a software product:

  1. Acceptance Testing: This is the final step of software testing, in which end-users or clients assume the role of test engineers to determine if the built program satisfies the criteria or not. It is a sort of functional testing that is done before the application is moved to production.
  2. Accessibility Testing: The technique of making your online and mobile apps accessible to as many users as possible is known as accessibility testing. It allows people with impairments to use the applications.
  3. Alpha Testing: It is the end-to-end testing of the software product to validate that it performs according to the user's requirement. Alpha testing is carried out in the development stage by the QA team.
  4. API Testing: This type of software testing is done to analyze the application program interface (API) and verify that it fulfills all requirements of functionality, reliability, performance and security. API testing is automated, and often used by development, QA and DevOps teams for continuous testing practices.
  5. Automation Testing: Also known as automated testing, or test automation, this testing method leverages automation tools to control test execution, and negates the need for a human or manual tester. Once the testing process is complete, the tool generates well-defined reports to be utilized by the Dev team.
  6. Benchmark Testing: It is a type of software testing that measures a repeated set of desirable results, which are used as reference points to compare the products or services. The primary use of the reports of benchmark testing is to analyze and compare the current and upcoming software releases with their respective benchmarks.
  7. Beta Testing: Beta testing is a sort of user acceptability testing in which a product team distributes a near finished version of the software to a set of target users in order to assess its effectiveness in the actual world.
  8. Black-box Testing: Also known as behavioral testing, it's a type of testing in which QA teams test the software functionalities without having any knowledge of the code, internal path, and implementation process details. The primary focus here is on software input and output.
  9. Compatibility Testing: Compatibility testing is a type of non-functional testing that is performed on software applications to guarantee that it is compatible with various computing environments.
  10. Compliance Testing: Also known as conformance testing, this type of software testing is done to determine whether a software product, computer program or system meets all defined internal and external standards before final release.
  11. Concurrency Testing: This type of testing helps to monitor the effect on a software application when there are multiple users performing the same action at the same time.
  12. Configuration Testing: This type of testing helps to verify the performance of a system under development by putting it in different hardware and software configurations. This helps to find out the best configuration under which the system can function flawlessly while delivering all its functional requirements.
  13. Database Testing: This type of software testing checks the triggers, tables and schemas of the database under test. Testers typically create complex queries for performing stress and load tests on the database to check for its responsiveness. This type of testing helps to check the consistency of the data.
  14. Data Verification Testing: This is the process where different types of data are examined for any inconsistencies after the process of data migration. Some of the methods of verification include proofreading and double data entry.
  15. Decision Coverage Testing: Also known as branch coverage, the aim of this kind of software testing is to ensure that each branch from each decision point in the code is executed at least once. This helps in validating that no branch in the code should result in any kind of abnormal behavior.
  16. Dependency Testing: In this technique, the application's requirements are pre-examined for an existing software to ensure proper functionality. It also takes into consideration all affected areas of the application when using new or existing features.
  17. Destructive Testing: In this technique, an application is intentionally programmed to fail to identify all points of failure, and check for overall robustness. Unlike most testing methods that check for software functionality, this kind of testing checks outcomes of unpredictable user behavior in the system.
  18. Dynamic Testing: This technique helps to analyze the dynamic behavior of the code. For this kind of testing, the software should be built around parameters such as CPU usage, memory usage and response time.
  19. Endurance Testing: These tests are used to find any unusual behavior that occurs within the system when the loads are high. Software systems may crash during high peak volumes, and endurance tests help to avoid that.
  20. Error Handling Testing: This type of testing is performed not to identify systematic errors, but to access the system’s capability of handling errors that might happen in the future.
  21. Failover Testing: It is the method of determining if a system can assign additional resources and backup all data and functions in the event of a system failure.
  22. Fault Injection Testing: In this testing method, testers deliberately introduce errors in the system to check the software’s capability of withstanding and recovering from them. Fault injection testing is carried out before software deployment to identify any potential faults that might have been introduced during the production phase.
  23. Functional Testing: The goal of functional testing is to carry out tests for each feature of the software product where the tester provides an input, and then validates the output against the requirements.
  24. Fuzz Testing: In this automated testing method, testers inject malformed, unexpected and invalid inputs into a system to identify its defects and vulnerabilities. A tool is used to inject these inputs, and testers monitor the system for abnormalities like information leakage or crashes.
  25. Glass Box Testing: More commonly known as White box testing, this technique focuses on evaluating the code, design and internal structure of an application to improve its usability, security and design.
  26. Globalization Testing: This type of testing technique helps to ensure that the software application or system can function independent of cultural or geographical influences. Simply put, globalization testing ensures that the application can be used anywhere in the world, and accepts all languages.
  27. Grey Box Testing: In this technique, testers run tests on the software with only partial knowledge of the internal structure of the application. The purpose of this type of testing is to identify defects caused by improper application usage or code structure.
  28. Group Testing: This form of testing acts as a mass testing instrument where tests are performed by a large group of QA engineers. Group testing saves time and resources while running multiple test cases simultaneously.
  29. Integration Testing: It is the stage of software testing in which separate software components are joined and assessed as a group. Integration testing is used to assess a program's or module's compliance with stated requirement specification.
  30. Interface Testing: This is a type of testing that is done to ensure the seamless connectivity between two completely separate software systems. In the world of software, an interface (a link that connects two components), can be anything from web services to APIs.
  31. Internationalization Testing: This type of testing ensures software adaptability to different languages and cultures across the world without having to make any modifications to the source code.
  32. Interoperability Testing: In this type of testing, software experts check whether the software can interact seamlessly with other systems and components. Simply put, this kind of testing checks the end-to-end functionality between two communicating systems as determined by project specifications.
  33. Keyword-driven Testing: In this type of software testing, testers identify a set of keywords and then associate an action or function (like, mouse click, opening or closing a browser) related to those keywords. Such tests contain both high and low level keywords including arguments.
  34. Load Testing: Load testing is a sort of testing process in which the behavior of a software element is studied by subjecting it to increasing loads.
  35. Localization Testing: QA testers review content on different types of software and website platforms, test product functionality and report defects by taking screenshots.
  36. Loop Testing: As a component of Control Structure Testing, loop testing focuses exclusively on the seamless functionality of loop constructions.
  37. Metamorphic Testing: It includes two processes - test case generation and test result verification. Also known as property-based software testing technique, metamorphic testing is an effective solution to solve test oracle and test case generation problems.
  38. Migration Testing: This verification process ensures migration of data from legacy to new systems, with minimal disruption and no downtime or data loss. This type of testing helps to maintain the integrity of the data while ensuring that all specified non-functional and functional aspects of the application are intact post-migration.
  39. Mobile App Testing: In this testing technique, software testers work on mobile applications to test their functionality, security and performance.
  40. Model-based Testing: In this type of software testing technique, test cases are derived from a model that describes the functional aspects of the system under test. The model is used to generate tests that include both online and offline testing scenarios.
  41. Operational Testing: This refers to the process of evaluating a software before it goes to production. It ensures that systems and components are compliant in the application’s standard operating environment.
  42. Orthogonal Array Testing: This is a black box testing technique that uses a systematic, statistical method of testing software. This is used when the number of inputs to the system are relatively small, but large enough for allowing exhaustive testing of every possible input to the systems.
  43. Pair Testing: In pair testing, more than two members work together on the same feature at the same time on the same computer with continuous exchange of ideas and feedback. This type of testing is most commonly used in agile development projects and follows pair programming.
  44. Parallel Testing: In this automated testing process, testers and developers can launch multiple tests against different browser configurations and real device combinations simultaneously. The goal of this type of testing is to resolve the constraints of time by distributing tests across all available resources.
  45. Passive Testing: This is a type of software testing where testing teams check software behavior by way of observation and monitoring, without any manual intervention of running tests.
  46. Path Testing: One of the white-box testing techniques, path testing is based on the program or module control structure. It is about selecting the paths in the control flow graph to provide the execution paths set via module or program.
  47. Penetration Testing: Also known as pentesting, penetration testing is an ethical/authorized hack on a computer system. It helps to expose the vulnerabilities of a system, and is used to create a risk report, detailing the attacks performed and results found.
  48. Performance Testing: As a type of non-functional test, performance tests help to evaluate the performance of components of a particular system under a particular workload. During testing, system components are monitored to verify the stability of the system that is being tested.
  49. Production Testing: It is one of the testing practices of continuous delivery in which the new code changes are analyzed on live user traffic rather than a staging environment. In this, a production version of the software is released live to the real users.
  50. Regression Testing: In this type of testing, the QA team tests the existing software applications to check that new code changes or additions haven’t affected existing functionalities.
  51. Requirements Testing: In this type of testing, test cases, conditions and data are derived from requirements. It includes both functional tests, as well as non-functional attributes such as usability, reliability and performance.
  52. Sanity Testing: Sanity testing is performed after the QA team receives the software build to ensure that new code changes are performing according to the user's requirements. Also known as the subset of regression testing, it acts as a checkpoint for determining whether the build testing shall proceed or not.
  53. Scalability Testing: It’s a type of non-functional testing in which the performance of a software application or network is tested for its capability to scale up or scale down the number of requests users load or other performance attributes.
  54. Scenario Testing: Scenario testing uses scenarios to test software functionality, that is, hypothetical stories to help testers work through a test system or complex problem. They differ from test cases in that the latter are single steps whereas scenarios cover multiple steps.
  55. Security Testing: Security testing is the procedure for identifying faults in an information system's security procedures that secure data and ensure that it functions as intended.
  56. Smoke Testing: It is a type of testing that determines the stability of the software. Also known as build verification testing, it consists of minimal sets of test runs and verifies whether important functions are working properly or not.
  57. Stability Testing: This type of testing helps to check the behavior and quality of the software in different environmental parameters, and ensure that it has the ability to continue functioning over time without failure.
  58. Stress Testing: Stress testing is a form of software testing that assesses the software's resilience by stressing it further than its regular operating boundaries.
  59. System Testing: It is a type of black-box testing performed by QA teams to test the complete and fully-integrated software application. The testing team does not require the knowledge of code to initiate system testing.
  60. UI Testing: UI (User Interface) testing, also known as GUI testing, is the process of testing the visual elements of an application to validate that they meet all functionality and performance criteria. By testing the GUI, testers can validate that there are no defects in the UI functions.
  61. Upgrade Testing: This involves testing an upgrade to an existing software to ensure that it can be successfully installed.
  62. Unit Testing: Performed by development teams, this testing technique uses frameworks that allow testers to execute unit tests and determine whether different sections of the code are functioning as expected under different circumstances.
  63. Volume Testing: It is the process of putting a software program through its paces using a large volume of data. This quantity might be the size of the database or size of the interface file that is being tested.
  64. White-box Testing: It is a type of software testing that examines an application's underlying structures or workings rather than its functionality. In white-box testing, test cases are created using an internal overview of the system along with programming abilities.
  65. Code Driven Testing: Code-driven testing is a testing approach that involves writing test scripts that can be executed automatically to test the functionality of the software. This type of testing is commonly used in agile and DevOps environments, where testing needs to be performed quickly and efficiently.
  66. Blockchain Testing: Blockchain testing is the process of testing the functionality and security of blockchain-based systems. This type of testing involves verifying the accuracy of transactions and ensuring that data is securely stored and transmitted across the blockchain network.
  67. Agile Testing: Agile testing is a software testing approach that is aligned with the agile software development methodology. It emphasizes continuous testing throughout the development process, with a focus on collaboration between developers and testers.
  68. Manual Testing: Manual testing is a testing approach that involves executing test cases manually, without the use of automated testing tools. This type of testing is often used to test user interfaces and to perform exploratory testing.
  69. Usability Testing: Usability testing is a testing approach that focuses on evaluating the ease of use of a software application. It typically involves testing how easily users can complete specific tasks and identifying areas of the application that may be confusing or difficult to use.
  70. Salesforce Testing: Salesforce testing is the process of testing Salesforce applications and integrations to ensure that they are working as intended. This type of testing often involves testing the functionality of custom code, as well as the integration between Salesforce and other systems.
  71. Visual Testing: Visual testing is a testing approach that involves testing the visual appearance of software applications. This type of testing can help identify issues with layout, color, and other visual elements that may affect the user experience.
  72. IoT Testing: IoT testing is the process of testing the functionality and security of Internet of Things (IoT) devices and applications. This type of testing typically involves testing the communication between devices, as well as the reliability and security of the data transmitted.
  73. Domain Testing: Domain testing is a testing approach that focuses on testing specific areas of a software application that are related to a particular domain or industry. This type of testing can help ensure that the application meets the specific needs of users in that domain.
  74. Data Testing: Data testing is a testing approach that involves testing the accuracy, completeness, and reliability of data within a software application. This type of testing is often used to ensure that data-driven applications are functioning as intended and that data is being stored and processed correctly.
 

Conclusion

At QASource, we understand the importance of launching high-quality software products that are functional, responsive, and secure. We provide professional services for all the types of testing mentioned above that enable you to achieve the quality that creates value.

Talk to one of our experts today to know more about how we can help you in your journey.

Disclaimer

This publication is for informational purposes only, and nothing contained in it should be considered legal advice. We expressly disclaim any warranty or responsibility for damages arising out of this information and encourage you to consult with legal counsel regarding your specific needs. We do not undertake any duty to update previously posted materials.