Quality assurance and testing
Continuously ensuring that a product or system does what it's supposed to do to meet the user's needs efficiently and reliably.
Quality assurance and testing involves continuously assessing services and providing feedback to ensure they’re reliable, of a high standard and meet user needs. Effective testing should make it possible to create new services and products quickly while maintaining a focus on quality.
Some relevant roles: tester, test engineer, quality assurance leads, technical architects, developers
Using user stories and clear acceptance criteria in testing strategies.
Development lifecycle from discovery to live
Service creation stages
Knowing the stages through which services are created - from discovery through to live.
Service maintenance and improvement
Understanding how services can be maintained and continuously improved over time until they are retired.
Defining and implementing a test strategy
Developing a test strategy
Developing a test strategy tailored to the size and scope of the project.
Delivering a test strategy
- transforming the design of the test strategy into actual delivery
- ensuring that the capability to deliver the strategy is realised
Understanding and advising on testing levels
- understanding the objective of testing levels (from Unit to Acceptance)
- advising the team on a cohesive testing strategy, including what to test and what is not required
Performing quality assurance and testing in an environment of continuous integration practices.
Building testing suites
Building useful, robust, automated testing suites (as well as preview and staging areas) to support a continuous deployment environment.
Using testing results
Developing actions based on the results of testing activity.
Testing systems and software
- understanding exploratory testing (described as simultaneous learning, test design and test execution) and scripted testing approaches
- knowing when to apply the best approach
Performing exploratory testing
- understanding how exploratory testing is specifically used in an agile environment
- understanding how to perform unscripted testing
- developing and implementing test charters to give exploratory testing sessions a mission without being prescriptive
Exploratory testing of incomplete functionality
- engaging in exploratory testing of partially-completed functionality
- understanding what is a defect and what has not been implemented yet
- providing constructive feedback to developers
- performing accessibility testing to make sure a product or service is easy to use for users with a range of disabilities
- being familiar with a range of assistive technologies
- using a variety of accessibility testing methods such as screening, code review and user testing
Equalities Act requirements
Understanding individual and organisation-wide duties under the Equalities Act 2010 in relation to testing products and services.
- carrying out performance tests to ensure that the service remains stable and responsive at more than the projected volumes of traffic
- considering and testing (where applicable) the software running on the site as well as the networks, proxies and caches involved in serving traffic over the internet
Operational acceptance testing
Perform operational acceptance tests to check, for example:
- backup/restore facilities
- disaster recovery procedures
- the arrangements for performing maintenance tasks before releasing your software
Cross-browser and cross-device testing
Testing for cross-browser and cross-device compatibility, to ensure that the product is accessible to the widest possible number of users.
Moving code to local environments for testing
‘Checking out’ particular versions of code onto a local environment on machines and starting/stopping the system.
Having a strong understanding of system architecture at a high level, including concepts such as application servers, databases, middleware, web services.
Reading and understanding code
Reading code at a high level (eg finding tests in a codebase and understanding their intent).
Code repositories and version control
Understanding code repositories, commit process (trunk concept) and version control.
- managing the defect lifecycle
- being able to advise on tests to put in place after fixes are made
- interpreting the results of individual test sessions
- testing more generally to provide a clear and consistent view of quality to communicate to the team and key stakeholders
The Service Design Manual has a section on testing code to make sure it does what it’s supposed to do.
The Service Design Manual has an extensive range of guidance on testing in an agile environment.
The Government Digital Service blog has a post on agile testing at the Home Office.
The Service Design Manual has a section on vulnerability and penetration testing for identifying possible security risks in your service.