Welcome to our Software Testing Glossary! In this article, we will explore essential software testing terms from A to Z. Whether you’re new to the testing field or a seasoned QA professional, this comprehensive guide will equip you with the knowledge of key testing terminology. Let’s begin!
A/B testing or split testing creates at least one variant to test against a current webpage to ascertain which one performs better regarding agreed metrics such as revenue per visitor (for ecommerce websites) or conversion rate.
Acceptance testing is the final phase in software development where the system undergoes evaluation to ensure that it meets specified requirements. It is conducted to validate if the software satisfies the acceptance criteria and is ready for deployment. Acceptance testing aims to confirm that the software functions as intended in real-world scenarios and is accepted by the users before its final release.
Ad Hoc Testing
Ad hoc testing is a type of informal, unstructured software testing that attempts to break the testing process in order to detect any vulnerabilities or flaws as quickly as possible. It is carried out randomly and is usually an unplanned activity that does not adhere to test design principles or documentation when creating test cases.
API (Application Programming Interface) testing focuses on verifying the functionality, reliability, and performance of application programming interfaces. It involves sending requests to the API, examining data communication and error handling, and verifying the overall integration between software systems.
Accessibility testing is a software testing process that evaluates how easily people with disabilities can use a website, application, or product. The goal is to ensure that the software is accessible to individuals with diverse abilities, covering aspects such as screen reader compatibility, keyboard navigation, and adherence to accessibility standards, making technology more inclusive for all users.
In software testing, an assertion is like a checkpoint that testers use to say, “I expect this to be true.” It’s a simple way of checking if the software is doing what it’s supposed to do. This is a key concept in functional testing. Assertions are commonly used in Unit testing, but the same concept applies to other forms of testing as well.
Automated testing refers to a testing approach in which a computer, rather than a human, executes the tests. The objective is to streamline and replicate the testing process using computerized tools.
Beta testing is a common form of acceptance testing. It involves releasing a version of your software to a limited number of real users. They are free to use the software as they wish and are encouraged to give feedback. The software and back-end are usually instrumented to allow you to see which features are being used and to record crash reports, etc. if there are any bugs.
Black-box testing examines a software application from the outside without knowing its internal workings. Testers focus on inputs and expected outputs, treating the software as a mysterious black box. They don’t peek into the code; instead, they evaluate how the software responds to various inputs, ensuring it produces the anticipated results. It’s a method of testing the software’s functionality without delving into the complexities of its internal structure.
A “bug” in software development refers to an error, flaw, or unintended problem in the code that causes the program to behave unexpectedly. Bugs can lead to issues such as software crashes, incorrect outputs, or unexpected behaviors. Bugs can range from simple syntax errors to more complex logic or design flaws. The term “bug” originated from early computer systems when an actual insect caused a malfunction, highlighting the unintended issues in the system.
Canary testing is a deployment strategy where a small subset of users or systems receives the latest software updates before the broader release. This approach helps detect potential issues or bugs in the new version by observing the users’ behavior. If the users respond positively without significant problems, the update is gradually rolled out to a larger audience. Canary testing serves as an early warning system, allowing teams to address issues promptly before a widespread release, ensuring a smoother and more reliable software deployment.
The origin of the phrase is from the phrase “Canary in the coal mine”, in which coal miners would bring a caged canary bird into the coal mine to detect if the level of toxic gas was too high. Since birds have a lower tolerance for toxic gases than humans, if the bird died it was an early warning for the miners to evacuate.
In software testing, a checkpoint is a designated point within a test script where the system’s status is verified against expected outcomes. It acts as a critical milestone to ensure that the software is progressing as anticipated during the testing process. Checkpoints play a pivotal role in identifying deviations from expected behavior, aiding testers in pinpointing and addressing issues efficiently.
Code coverage is a percentage measure of the degree to which the source code of a program is executed when a particular test suite is run. It is an important metric that can help you assess the quality of your test suite. Code coverage is one form of white-box testing, which finds areas of a program that were not executed during testing.
Compatibility Testing ensures whether the software will run on different hardware, operating systems, applications, network environments, or mobile devices. It is performed on applications once they have become stable. Compatibility testing prevents future issues regarding compatibility, which is essential from a production and implementation standpoint.
Cross Browser Testing
Cross Browser Testing allows you to verify your application’s compatibility with different browsers. It’s essential to any development process because it ensures that your product works for all users, regardless of their browser preferences.
Data Driven Testing
Data driven testing is a method of creating test scripts in which test data or output values are read from data files rather than using the same hard-coded values. To achieve greater coverage from a single test, you can run the same test case with different inputs.
In software testing, a defect refers to a flaw or unintended issue in the software that deviates from the specified requirements. Defects can manifest as errors, bugs, or issues that impact the functionality, performance, or user experience of the software.
DevOps testing is a process of automating and streamlining your software’s delivery lifecycle. Many companies employ DevOps testing strategies, starting with the agile practice of Continuous Integration.
End-to-end testing is a comprehensive software testing approach that evaluates the entire system’s functionality and workflow, simulating real-world scenarios from start to finish. It involves testing interactions between different system components to ensure seamless integration and verify that the entire application works as intended, covering various functionalities and user pathways.
Exploratory testing is an informal and simultaneous testing approach where testers dynamically explore the application, execute test cases, and discover defects without predefined scripts. Testers use their domain knowledge and intuition to navigate through the software, uncovering issues and gaining insights into its behavior, making it an adaptable and creative testing method.
In software testing, a false-negative is a test that incorrectly passes despite the presence of an issue. Typically, false-negative results happen when the expected result hasn’t been correctly defined. This can be a common problem in UI testing, where tests fail to check the whole UI for errors.
A false-positive test is one where the test fails incorrectly. Typically, this is because of an error in the test itself, rather than a failure in the system. In automated testing, such failures are common and result in the need for test maintenance.
Functional testing is a software testing type that assesses whether a system’s functionalities meet specified requirements by validating its input, output, and behavior. It focuses on verifying that each component of the software or application functions as intended. This testing primarily involves black box testing and is not concerned about the application’s source code.
Start testing your ecommerce for free.
Quickly analyze your site just by entering the URL address in the input below!
In grey-box testing, a tester is given partial knowledge of the internal structure of an application. The purpose of grey-box testing is to search for and identify defects due to improper code structure or improper use of applications.
Integration testing is a phase in software testing where individual components or modules of a system are combined and tested as a group. Integration testing usually occurs after unit testing. This testing phase helps detect and address problems that may arise when different parts of the software interact with each other.
Interface testing is a form of software testing that verifies the correct communication between two applications. The term interface refers to the connection that integrates two components. APIs, Web services, and many other interfaces are found in the computer world. Testing these interfaces is known as Interface Testing.
JUnit is a Java testing framework that allows developers to write and execute automated tests. In Java, test cases must be re-executed every time new code is added to ensure nothing in the code is broken.
A keyword-driven framework is a test automation approach where test scripts are developed using keywords or action phrases rather than scripting languages. Testers use a set of predefined keywords to describe the desired actions and verifications, allowing for easier test case creation and maintenance. This framework enhances collaboration between technical and non-technical team members by providing a more accessible way to define and manage test scenarios.
Load testing is a software testing technique that evaluates a system’s performance under expected and peak load conditions. The goal is to assess how the software handles concurrent user activity and data processing to ensure it can maintain functionality and responsiveness under stress. By simulating realistic workloads, load testing helps identify potential performance bottlenecks and optimize the system’s capacity.
Localization testing is software testing that ensures a product is culturally responsive to the needs of the people in a specific region. Localization testing ensures that the application can be used in that particular region.
Low-code Test Automation
Low-code test automation enables software testers to execute and streamline the testing process without diving into complex coding practices. It introduces a more accessible approach to test automation for non-technical users. For an in-depth explanation of low-code, read this article.
Maintainability refers to the ability to update or modify the system under test. This is an important parameter as the system is subjected to changes throughout the software life cycle.
Manual testing is a software testing approach where human testers manually execute test cases without the use of automation tools. Testers interact with the software’s user interface, input data, and assess outcomes to identify defects and ensure functionality. While more time-consuming than automated testing, manual testing allows for a comprehensive exploration of the software’s user experience and functionality.
Microservices testing combines QA activities to ensure that each microservice works appropriately. It ensures that its failure doesn’t result in severe functional disruptions of the entire software and that all microservices smoothly function as one application.
No-code Test Automation
No-code or codeless test automation is an approach to creating automated tests without the need to write a single line of code. These platforms allow both technical and non-technical users to test a software or application for specific use cases. For a comprehensive guide to no-code test automation, read this article.
Operational Acceptance Testing
Operational Acceptance Testing (OAT) is a phase in software testing that evaluates whether a system meets operational requirements and is ready for deployment in a real-world environment. It involves testing the overall functionality, performance, and compatibility of the system to ensure it aligns with operational expectations and can effectively support business processes.
Penetration testing, often referred to as ethical hacking, is a security testing approach where cybersecurity experts simulate real-world attacks on a software system to identify vulnerabilities. The goal is to assess the system’s resistance to unauthorized access, data breaches, and other security threats, providing insights into potential weaknesses that could be exploited by malicious actors.
Performance testing is a type of software testing that assesses how a system behaves under specific conditions to ensure optimal speed, responsiveness, and stability. It involves evaluating various aspects such as load, stress, and scalability to identify potential bottlenecks and ensure the software meets performance expectations. The goal of performance testing is to optimize the application’s efficiency, ensuring it can handle different levels of user demand without compromising functionality.
Quality Assurance is a comprehensive approach in software development that focuses on preventing defects and ensuring the delivery of high-quality products. It involves systematic processes, methodologies, and standards to guarantee that software meets specified requirements and functions reliably. QA encompasses activities such as testing, code reviews, process improvements, and adherence to best practices to enhance the overall quality of software throughout the development lifecycle.
Regression testing is the process of ensuring that new code changes have not adversely affected existing functionalities. This is done by verifying that no known bugs have recurred (this is known as a regression). The primary goal is to detect and address unintended side effects or bugs introduced during the development of new features or modifications. Regression testing helps maintain software stability by verifying that the overall system still behaves correctly after each code change.
Release testing tests a new software version (project or product) to verify that the software can be released. Release testing has a broad focus since the full functionality of the release is under test. Therefore, the tests included in release testing are strongly dependent on the software itself.
Responsive design is a UI development approach that generates dynamic changes to the website’s appearance based on the screen size and device orientation. It ensures that the content and screen size are compatible with each other.
Sanity testing is an important part of regression testing, which is performed to ensure that code changes are working properly. Sanity testing stops the build if there are problems with the code.
Scalability testing is validating that a software application can be scaled up or scaled out in terms of its non-functional capabilities. Software quality analysts often group performance, scalability, and reliability.
Security testing is a critical phase in software testing that focuses on identifying vulnerabilities and weaknesses within a system to safeguard against potential security threats. This testing process involves assessing the application’s resilience to unauthorized access, data breaches, and other security risks, ensuring that sensitive information remains protected and the software meets industry security standards.
A selector is used by test scripts to identify and choose objects on the screen. These are then used to perform some action such as clicking, entering text, etc. There are various forms of selectors that are commonly used. These include simple HTML IDs, CSS-selectors and XPath queries.
Shift Left Testing
Shift Left Testing involves moving testing activities earlier in the software development lifecycle, identifying defects at a stage where correction is both easier and less costly.
Smoke testing, also known as build verification testing, is a preliminary software testing phase aimed at quickly determining if the most critical functions of a system work correctly. It involves running a minimal set of tests to check for major issues, ensuring that the software build is stable enough for more in-depth testing. Smoke testing helps identify glaring problems early in the development process, allowing teams to address them before proceeding with comprehensive testing.
Software Designer Engineer in Test (SDET)
SDETs are testing professionals that are actively involved in the product design and development. They manage database, programming, and UI details. Unlike quality analysts, SDETs contribute within the development phase. You can learn more about these roles here.
Stress testing involves evaluating a system’s stability and performance under extreme conditions or high workloads. The goal is to identify how the software handles pressure beyond its normal operational capacity (for example, user traffic on an ecommerce website during Black Friday), revealing potential bottlenecks, failures, or performance degradation. This testing method helps ensure that the software can withstand intense usage scenarios without compromising its functionality or user experience.
System testing is a comprehensive phase in software testing where the entire software application is tested as a whole to ensure it meets specified requirements. It involves evaluating the integrated components, functionalities, and interactions within the system to verify that it functions correctly and meets end-users’ expectations before deployment.
See Automated testing.
A test case is a detailed set of instructions or conditions used by testers to assess the functionality of a specific aspect of software. It includes inputs, execution steps, and expected outcomes to systematically verify that the software behaves as intended. A test plan usually consists of multiple test cases.
A test plan is a comprehensive document outlining the approach, objectives, resources, and schedule for a software testing project. It provides a roadmap for the testing process, detailing the scope of testing, test strategy, test cases, and acceptance criteria. The test plan serves as a guide for testing activities, ensuring systematic and organized testing to meet quality objectives and project requirements.
UI/UX testing, or User Interface/User Experience testing, is a process in software testing focused on evaluating the visual design, usability, and overall user experience of an application. It involves assessing how users interact with the user interface, examining design elements, navigation, usability, and responsiveness to ensure a seamless and intuitive user experience.
Unit testing is a fundamental level of software testing where individual units or components of a program are tested in isolation to ensure their correctness. It involves verifying that each unit functions as intended, adheres to specifications, and produces the expected output. This is a form of white-box testing.
Usability testing is a critical phase in software testing that focuses on evaluating the ease with which users can interact with an application. It involves real users performing specific tasks to assess the software’s user interface, navigation, and overall user experience. The goal is to identify any usability issues, gather feedback on the software’s intuitiveness, and ensure it meets the needs and expectations of its intended users.
User Acceptance Testing (UAT)
See Acceptance Testing.
A use case describes how an actor or user uses the system. It is widely used to develop systems or acceptable level tests.
Visual testing, in simplest terms, is verifying that everything appears correct, or as intended. It relies on screenshot comparisons, AI or other methods to detect visual anomalies within an application. It ensures that:
- Everything that we want on a page of a website is actually there.
- Everything we don’t want to be there is not.
- The visible output of the website is as intended by the businesses and for the user.
For an in-depth explanation of visual testing, read this article.
Web Performance Testing
Web performance testing is the process of evaluating a web application’s speed, responsiveness, and stability under various load conditions. Web performance testing is crucial for identifying potential bottlenecks and issues with your app so you can fix them before your customers find them.
Ready to take your ecommerce performance to the next level?
Measure and optimize critical web metrics with Valido Web Score, the leading test automation and monitoring solution for online businesses. Sign up today to start improving your ecommerce performance and conversions.
White-box testing, also known as clear-box or structural testing, is a software testing method that examines the internal structures and logic of a system’s code. In this test scenario, testers have knowledge of the internal workings of the software in terms of structure, paths, and control flow. The goal of white-box testing is to ensure the correctness of individual code segments, uncover errors in control flow, and verify that all statements and conditions are executed as intended.
XPath (XML Path Language) is a query language and expression syntax used to navigate and select elements within XML documents or HTML pages. In software testing, testers commonly use XPath expressions / queries to pinpoint elements for verification or interaction in web applications.
Digital UX, writing about the latest ecommerce trends.