Software Testing Glossary: From A-Z
New to the world of software testing? Or simply unsure what some of the technical jargon means? We’ve got you covered! Our A-Z easy-to-understand guide to software testing terminology will help you understand common technical terms used in the industry.
Acceptance Criteria The conditions that need to be met to satisfy the requirements of the software for a user or customer. In Agile development, the acceptance criteria defines what needs to be produced to complete a user story. Acceptance testing is derived from the acceptance criteria.
Acceptance Testing Testing to verify that the software application meets the acceptance criteria. Acceptance testing usually focuses on the needs and requirements of the end users and stakeholders and it determines whether the system is acceptable for release.
Agile As an iterative development methodology, Agile project management values ongoing communication and feedback, with the ability to adapt to changes at speed, while producing functional results. Agile represents a modern approach to continuous software production with development and production completed incrementally and iteratively – often in phases called Sprints. Testing supports development in parallel with the idea that testing begins as soon as development does, testing against requirements and user stories for each Sprint. Automated testing is often a key feature of agile development to reduce the time needed for regression testing.
Accessibility Testing Web Accessibility ensures that users are not disabled in the process of attempting to access, use or reach a website. Accessibility is commonly shortened online to a11y, with the number 11 representing the 11 letters missing between the A and y. Having accessibility compliance has real world benefits and improves the internet for users of all backgrounds, as well as having legal implications too. Testing can take place to confirm a recognised standard such as WCAG or can be customised to meet specific company specifications or guidelines, such as GDS. Testing will often involve assessments with assistive technologies such as screen readers and screen magnifiers, to offer user experience feedback on websites and applications from the perspective of disabled users.
API Testing APIs (application programming interfaces) are the drivers behind the dynamic data of today’s applications. APIs are typically used to exchange data between services. For example, an information website about how to monitor the weather may pull in data on weather forecasts from an external service. APIs are a vital part of our digital experience but making sure they deliver and continue to deliver the correct data requires testing and an ongoing test programme. Testing could involve a number of different techniques that will catch defects before they affect the user experience. Testing can be manual or automated depending on the frequency of updates required. It will usually involve specialist tools such as those for validating the performance of APIs.
Black Box Testing A functional or non-functional test approach in which the tester does not have visibility of the underlying code, structure, design or implementation of the software. Testing is based on the requirements and specification of the application.
Change Request A change request is a process used in certain project management frameworks to make a formal intervention within a project. It signals a change of plan or direction and has consequences for time, budget and capabilities. It’s generally made by stakeholders with the authority to do so and accompanied by approval from relevant parties. A Test Manager or QA Manager may be responsible for detailing the implications of the request to the rest of the delivery team so that negative consequences can be mitigated.
Defect Management Tool Testing software will generate defects and bugs that need to be recorded into a management tool, sometimes called an issue tracker, such as Jira or Done Done. The tool is a software interface between managers, developers and testers. It allows issues to be assessed and corrected by management and development teams. It’s also a record of trends and regular issues that arise. Longer term test and development strategies can then be put in place to rectify them.
Exploratory Testing Exploratory testing is an approach that relies on the experience of the tester to find bugs and defects in an application often without prior knowledge or experience of the system under test. While a plan and structure is applied to the test process, there are no predefined test cases or scripted test steps. In some instances, test cases may be defined alongside test execution. Focusing on the user experience, key user scenarios and edge cases, it can provide wide test coverage in a short space of time. It is a useful technique to get an initial overall audit or health check of a web application or piece of software.
Functional Testing Testing that addresses the functionality of software or a system against requirements or specifications. Functional Testing is a type of black box testing.
Incident/Issue Management All issues and incidents should have a recording process, usually within an online tracking tool (see defect management tool). This allows defects to be organised, prioritised and assigned to the correct person responsible for the required action. The management tool will facilitate the defined process of issue management from creation and assignment through to fixing, verifying and finally closing.
Issue verification AKA Confirmation Testing Issues verification is a test process to verify whether bugs and defects found in earlier rounds of testing have been resolved in development and are no longer present in the software or system.
Load Testing Load testing is a type of performance test that simulates how a system will perform under expected and peak levels of load on the system – usually in relation to high volumes of concurrent users. It will benchmark what the system is currently able to handle before performance drops off or the system breaks. It does this by simulating the number of virtual concurrent users on a site or system. The test is especially useful for sites that expect spikes in their visitors around promotions and significant occasions. (See also performance testing and stress testing.)
Non-functional Testing Non-functional testing refers to a number of different types of testing, including security, performance, usability, reliability and more. Requirements of non-functional testing are those that do not relate to the functionality of the application itself.
Penetration Testing Sometimes known as ‘ethical hacking’, penetration testing (or PEN testing) involves trying to exploit the vulnerabilities of a system to gain unauthorised access. For web penetration, test companies might use the OWASP Top 10 as their test framework to produce a set of recognised attacks. Depending on the sensitivity of the project or the data accessible through it, it may be necessary to have the penetration test carried out by a company that has particular accreditation in this area. For more information relating to UK practices, please refer to the National Cyber Security Centre.
Performance Testing Performance is an umbrella term for different forms of tests that verify that an application meets performance requirements. This may include Load, Stress, Soak, Spike, Scalability, Volume testing and more. The application and infrastructure will dictate the form of performance testing that is needed. You may require a test solution that integrates with development cycles or permanently monitors performance of different kinds and relays the data back to a console or dashboard.
Quality Assurance (QA) A controlled process of ensuring that a product or service meets its specified requirements. A QA system aims to increase customer confidence while improving processes and efficiencies. In software testing, QA represents a ‘shift left’; where quality is considered at early stages of the design and development process. Testing and defect detection is one part of a QA system.
Regression Testing Regression testing ensures previously working areas of a software application still perform as expected after a change or update has been implemented. This highlights any problems that may arise from new features integrating with existing states. Depending on the frequency of requirements, regression testing may be manual or automated.
Scripted Manual Testing Scripted testing involves the writing of test cases, documenting the test steps and the expected results for coverage of an application. Test cases are usually based on approved product documentation, such as user requirements, functional specifications, wireframes and designs. Scripted testing ensures the test process is measurable, traceable and repeatable. This is especially important where there is ongoing development of an application and where documentation of tests may be necessary for regulatory or ‘best practice’ reasons.
Security Testing A range of test procedures that attempt to locate vulnerabilities in a system to ensure data and resources are protected from external attacks. (See also penetration testing.)
Stress Testing Stress testing is a type of load testing carried out to evaluate a system at or beyond the limits of its anticipated levels of load.
System Testing System testing is carried out against a complete and integrated system to test that it is functioning as expected and complies with documented requirements. It’s a type of black box testing (see also functional testing). It’s often conducted by an independent test company. It focuses on the user interface rather than the underlying code
Test Approach Determining the test strategy and process, either for a single product/application or a programme of work. A software product in continuous development will require a different test approach to a small application release. The test method (such as Agile or Waterfall) will determine the test approach. It usually forms part of an overall test strategy that deals with the wider issue of quality assurance within an organisation.
Test Automation Automated testing is the use of software to execute test cases or other test activities, comparing actual results against expected outcomes. Test automation can save time and resource needed for manual tests. Or to perform testing that may be too difficult to carry out manually. Automation can improve the reliability and efficiency of a test process. Automation is at the heart of today’s agile or continuous delivery development cycle. It can enable a faster release schedule without the bottleneck of repetitive, time consuming manual tests.
Test Automation Framework The environment for test automation and usually contains many of the frequently used executions and libraries so that test suites can be established with efficiency.
Test Case A test script will be made up of individual test cases, organised into suites. A test case will target a particular piece of functionality in an application and usually contains a set of pre-conditions, inputs, actions, expected results and post-conditions. For example, a website may have a login page. To verify the login function works as expected, test cases can be created to cover all the tests needed.
Test Execution Execution is the process of running tests, either manually or automatically, and logging the results.
Test Plan A test plan is the agreed approach and activities to be carried out together with a schedule for test completion. The test plan is a formal document, central to the test activities and the ultimate point of reference.
Test Report A test report is a formal document that is the output of test execution and communicates the results and impacts to the necessary stakeholders.
User Acceptance Testing User acceptance testing or UAT is a set of test activities carried out by the end users of a system or software. UAT is a coordinated and managed activity. It aims to draw out issues that may only be found by real users, using the software in a real environment.