Quality and Testing: Gov.uk Guide
Testing programs using agile methods.
The main approaches of any other software testing system are also applicable in the context of creating applications using flexible agile methodologies, however, the purpose of testing may vary slightly.
It’s important to understand that you are testing to:
- create the most effective quality assurance system;
- ensure that the program meets customer requirements;
- make program development as economical as possible.
Very often, the sole purpose of testing is to evaluate the performance of the product and nothing more. When testing, you should proceed from the following seven concepts:
- initial improvement in quality;
- responsibility of each employee for quality;
- quick receipt of product information;
- testing as a key element of development;
- the quickest commissioning;
- a clear and adequate understanding of testing;
- optimization of the amount of effort and resources used.
Initial Quality Improvement Focus on quality improvement at the very beginning of program development and evaluate it while working on the project - not after the development is completed, when it is already too late to do it.
Define standard eligibility criteria for the user stories you create. You can do this either during the first compilation of user stories, or later, as part of acceptance testing at the beginning of software product development. Testing should confirm the information that you already know and consider true, so that there are no surprises in the subsequent steps.
Responsibility of each employee for quality
Quality of service plays a role not only when testing a software product. The quality of any system is ensured by the people who create it. Your employees should see emerging system quality issues. Each person working on a particular project should contribute to improving the quality and solving problems.
Quick receipt of product information
In order to create a successful project developed in accordance with agile methodologies, it is very important to constantly receive feedback on the work done. Getting feedback in the shortest possible time allows you to provide the very "flexibility" in the work and make adjustments when necessary.
Testing should be able to quickly provide you with such a feedback when necessary. There are automated testing methods that can be useful, but do not focus on their use.
Testing as a key element of development
When you develop a test, do it according to certain standards - this will allow you to effectively use it many times during the work on a project. Proper testing requires good preparation, so you should not create “one-time” tests, which must be re-developed each time you create updates or develop a new project. Scripts for automated testing should be developed as carefully as the software product code.
Testing is an important process when creating a software product, but the amount of time it takes between the end of writing the code and the complete completion of the project should be minimal. Testing should provide you with information as quickly as possible, either that everything is in order, or about the presence of errors that need to be fixed.
When testing, you do not have to receive comprehensive information at all stages, but it should be sufficient in each specific situation. The employees in your team need to determine what really needs to be tested at each stage, based on the requirements of the product owner and the likelihood of errors in the application itself.
Clear and adequate view of testing
Each employee in the team needs to know and understand the following:
- basic approach to testing;
- what they need to participate in;
- what they need to do.
Optimization of the amount of effort and resources used.
If the test is carried out correctly, it will help to understand how to proceed in the best way. It will also tell you what issues you should focus on and help:
- make difficult decisions;
- direct the progress of work in accordance with the complexity of the requirements of each user story;
- prioritize tasks based on system complexity.
Types of Testing
The most significant difference in testing when developing with agile methods is that in this case a lot of emphasis is placed on creating automated tests. These tests are integrated into the development process, they are part of your code, and are executed automatically every time you make changes to the code. You will immediately receive information about the quality of the program code, which will help to eliminate bugs at subsequent stages of development (when fixing them will be more complicated and costly).
Read more about the types of testing at Gov.uk: 1 , 2 , 3 , 4 , 5 .
Such testing is not carried out by any specific group of people (this, in turn, is called outsourcing testing). Instead, various people from different places engaged in various activities are involved in the work. This is a good way to speed up the process of manual testing and / or do more work.
There are organizations that provide such services professionally, however, employees of the GDS (Governmental Digital Service, a department working with digital projects of the British government) carry out its internal organization by:
- attracting as many volunteers from the number of employees as possible so that they allot several hours on a certain day to conduct testing;
- conducting a short digression on what needs to be tested;
- highlighting special directories where you can save information about bugs;
- increasing the motivation of employees conducting testing by creating a “leaderboard”, which shows who tested more code elements.
Our publications based on Gov.uk materials: