Continuous improvement with quality assurance and testing

In quality assurance and testing, we’re using new technology, platforms and ways of working to help development teams meet user needs and make the delivery of services even better. We’re setting high standards and changing the way we test digital services in the Home Office.

Quality assurance and testing

Quality assurance and testing (QAT) is really at the centre of the Home Office mission and we have a skilled team that makes sure it’s delivered effectively. This means getting fast feedback, understanding how a service performs and helping the development team make informed decisions.

We automate as much of the testing as possible and run our test suites as part of continuous integration. By running tests every time we make a change, we find defects more quickly. We also use knowledge and experience to check systems manually, using experienced quality assurance testers or specialist users as part of exploratory testing.

We test services regularly as part of quality assurance to make sure they:

are easy to use, on all devices

are stable, secure and work quickly, regardless of how many users are accessing them

can be iterated quickly to meet changing user needs or the political environment

It’s about testing the usability of the service, as well as the technical parts. This helps to get faster feedback, allowing teams to make quick decisions about their services.

Test engineering

Test engineering is an important part of our quality assurance approach. During development our test engineers help us check that:

code works the way it’s expected to

changes to code haven’t broken existing functionality

services are protected against security threats

Using the right tools

Our approach to test automation needs different tools. We often use open source tools such as Selenium for front-end automation and RestAssured for testing APIs. We automate builds to help us control dependencies and configuration of our frameworks.

Our tools for test automation are increasingly integrated with the deployment train, which means working closely with developers to make sure we’re doing the right things.

Writing code

Our test engineers often have experience writing test automation libraries or frameworks using object-oriented development in languages such as Java, C# and Scala.

It’s important that our automated tests are treated as part of the project code base, so the standards need to be the same. It also helps that our test engineers are familiar with the development language, which can make the process of development and testing much quicker.