Types of Testing – An introduction to the different types of software testing

Job Title: Head of Service Development & Learning
Date: August 2017

Introduction

Testing is all about providing information to stakeholders about the quality of a system. There are a number of different types of testing that can be used to explore and test a system. The type of testing typically depends on what is actually being tested and the approach that is used to perform the testing.

In this blog we are taking an introductory look at the different types of testing, explaining what they are and where they are commonly used. It is worth noting that some of these are names for a group of further testing types, but are often used to describe all of the types under that name.

Common types of testing

Types of testing: functional testingTypes of testing: Functional Testing

In software development, functional testing relates to the testing of a system’s functionality. Typically the testing of each function is performed independently. Functional testing is generally performed against a specific requirement, providing a check as to whether it works as it should e.g. does the system do x when y is pressed = yes/no.

Types of testing: regression testingTypes of testing: Regression Testing

Regression testing looks at whether software that has previously worked as it should continues to do so after an update or change has been made. Changes can vary from an update to the actual software e.g. a new version or patch that has been released, or it can be used when an integrated application is added or updated. Regression testing is typically a form of functional testing but it is specifically focused on looking for new issues and risks in existing functions that have previously worked.

Types of testing: compatibility testingTypes of testing: Compatibility Testing

Compatibility testing is a non-functional type of testing which looks at how software performs across a range of devices, operating systems and browsers. To be effective it is recommended to always perform compatibility testing on real environments rather than using emulators. With the increasing focus on digital transformation initiatives, compatibility testing is growing in importance, particularly when considering user experience and customer satisfaction.

Types of testing: automated testing Types of testing: Automated Testing

Automated testing refers to a type of testing that uses independant software to test the system being tested. Automated testing can be used to perform other types of testing such as functional or performance testing. Automated testing lends itself well to testing which is repetitive in nature and can be time-consuming if performed manually e.g. functional regression testing. The pre-scripted nature of automated testing can enable increased test coverage to be achieved.

Types of testing: Smoke testingTypes of testing: Smoke / Sanity Testing

Smoke testing checks whether fundamental functionality in a piece of software is working. Smoke testing is typically used at an early stage in the software development lifecycle to determine if the system is stable enough to begin more extensive testing or whether there are any basic issues that would prevent testing or waste time.

Types of testing: acceptance testingTypes of testing: Acceptance Testing

Acceptance testing is focused on users’ requirements from a system and checks whether these are satisfied by the system. To perform acceptance testing a set of acceptance criteria is normally specified to test against, with automated tests often being used alongside unscripted exploratory testing to better-represent a user’s approach to using the software.

Types of testing: performance testingTypes of testing: Performance Testing

Performance testing is a type of non-functional testing (a test level). It can look at the stability, responsiveness and speed of a system amongst other things. Generally performance testing is carried out in a representative test environment replicating the numbers of users – often in the hundreds or thousands – anticipated to be using the system concurrently. There are a number of sub-categories to performance testing such as stress testing, peak/load testing, and soak testing.

Types of testing: accessibility testing Types of testing: Accessibility Testing

Accessibility testing is a form of usability testing. In the UK accessibility testing is used to check websites and software are accessible for people with disabilities including those with disabilities relating to hearing, sight, cognitive understanding and old age. Those with disabilities often make use of assistive technology such as screen readers so accessibility testing checks that the various elements of a page are tagged properly to be read by these technologies.

Types of testing: usability testingTypes of testing: Usability testing

Usability testing checks how intuitive and ‘usable’ software is for the end-users. It is generally conducted by real users (rather than emulators) and is objective-led e.g. find a red jacket on the site and add to your shopping basket, rather than giving a user specific steps to follow to complete a task. Checklists can also be used to test against recognised usability principles. This type of testing is used to understand just how user-friendly a piece of software is.

Types of testing: security testingTypes of testing: Security Testing

Security testing is a category of testing, performed to identify vulnerabilities in a system and related infrastructure, in order to protect customer and organisation data, as well as intellectual property. There are a number of different sub-categories to security testing such as penetration testing, which aims to identify vulnerabilities which an attacker could exploit from external or internal access.

Conclusion

The list above covers the most common types of testing, however it is by no means an exhaustive list. It is also worth noting that many projects will require a combination of types of testing in order to effectively satisfy that the software meets its objectives both in terms of functionality, performance and compatibility, browsers and operating systems.