Understand the differences between the types of software testing available
Testing is all about providing information to stakeholders about the quality of a system. Several types of testing can be used to explore and test a system, each of them with individual uses, advantages, and approaches to ultimately improve your system. The type of testing you should use depends on a variety of factors, including:
- Are you testing a new unit/feature of a system, or are you testing the system overall?
- Are you changing what a system fundamentally does, or ensuring it works in different environments/platforms?
- Are you carrying out these tests manually or setting them up to be automated?
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.
Common types of testing
Types of testing: Functional testing
In software development, functional testing relates to the testing of a system’s functionality. The testing of each function is typically performed independently, and functional testing is generally performed against a specific requirement, providing a check as to whether it works as it should. For example: does the system do ‘x’ when ‘y’ is pressed? You’ll receive a clear yes/no answer.
Types of testing: Regression testing
Regression testing is used to determine if software continues to work after an update or change has been made. Changes can vary from an update to the actual software (such as a new version launch or patch release) or this testing 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 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. For this testing to be effective, always perform compatibility testing on real devices and environments rather than using emulators. Compatibility testing is growing in importance thanks to the increasing focus on digital transformation initiatives, particularly when considering user experience and customer satisfaction.
Types of testing: Smoke/Sanity testing
Sanity/smoke testing checks whether fundamental functionality in a piece of software is working. It 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 any basic issues would make the testing a waste of time.
Types of testing: Acceptance testing
Acceptance testing is focused on user 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 scripted tests often being used alongside unscripted exploratory testing to better represent a user’s approach to using the software.
Types 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 among other things. Performance testing is generally 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 many subcategories within performance testing such as stress testing, peak/load testing, and soak testing.
Types of testing: Accessibility testing
Accessibility testing is a form of usability testing. In the UK, accessibility testing is used to check whether websites and software are accessible for all potential customers, including people with hearing, vision or cognitive difficulties. Users 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.
Learn more about the benefits of prioritising accessibility, including examples of best practices, in this guide from one of our principal consultants.
Types 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 (for example: find a red jacket on the site and add it to your shopping basket) rather than instructional (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 testing
Security testing is a category of testing performed to identify vulnerabilities in a system and related infrastructure to protect customer and organisation data, as well as intellectual property. There are many subcategories to security testing such as penetration testing, which aims to identify vulnerabilities which an attacker could exploit from external or internal access.
Types of testing: Automated testing
Automated testing refers to a type of testing that uses independent software to test the system being tested. It can be used to perform other types of testing such as functional or performance testing. Automated testing lends itself well to repetitive testing which can be time-consuming if performed manually. The pre-scripted nature of automated testing also means that increased test coverage can be achieved.