Digital and technology skills

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

User stories

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

This involves:

  • transforming the design of the test strategy into actual delivery
  • ensuring that the capability to deliver the strategy is realised

Testing levels

Understanding and advising on testing levels

This involves:

  • 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

Continuous integration

Performing quality assurance and testing in an environment of continuous integration practices.

Testing

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

Testing approaches

This involves:

  • 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

This involves:

  • 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

This involves:

  • 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

Accessibility

Accessibility testing

This involves:

  • 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.

Performance testing

This involves:

  • 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.

Architecture concepts

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.

Defect lifecycle

This involves;

  • managing the defect lifecycle
  • being able to advise on tests to put in place after fixes are made

Reporting outcomes

This involves:

  • 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

Learning resources:

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.