Test@agile software development - a case study
Agile software development is the state-of-the-art procedure in project management. What role does testing play in the agile world? In the Scrum methodology, however, the terms QA or testing does not apply. How can we ensure the quality of our product through testing processes within agile development? Learn how testing drives our agile project development to deliver value.
The initial situation
Mimacom implements a web portal application for a large mechanical engineering company that combine several departments all in one place and accesses different systems via different interfaces. The project is developed agile using Scrum. The scrum process places higher demands on quality management.
- Every sprint delivers a new release of the product. Because of the constant delivery of releases, new and previous functionality must be constantly checked.
- The requirements can be changed permanently. Therefor the tests must be adjusted accordingly.
- Constant reviews in retrospectives ensure efficiency. Tests must fulfill this efficiency checks.
By integrating test processes into the agile development process, it was possible to ensure a consistently high quality.
There are 3 key objects in Scrum, the roles, artefacts and events. By adding test objects to these three areas, we improve Scrum framework by the meaning of quality
2 new scrum roles
The Scrum framework defines the three roles product owner, scrum master and development team. We extended the Scrum roles with the roles tester and test manager
The tester is a member of the Scrum team. The role may be occupied by a developer performing technical component testing (i.E.unit test or code review), or by a separate person, who tests functionalities. The critical external perspective of the seperate tester prevents from becoming routine-blinded. Only if testing is firmly integrated into the development process problems can be solved early and reliably. The test manager serves as interface between testers, development team and product owner. It is highly recommended that the test manager/tester is integrated in the requirements engineering process as early as possible. Specification and prioritization of test cases performed by the test manager in close consultation with the requirement engineering guarantees quality and at least cost reduction.
1 new artifact
The artifacts include by default the product backlog, the sprint backlog and the productincrement. Often the definition of done and the definition of ready are added. We extend the articfacts by testreports.
The test reports describe the testcases and record the results of the tests. For each type of test, we have created individual report templates that meet the specific test objectives. Moreover we have used a Bug Template to report bugs in a uniform way. Requirements in agile projects are written as user stories. The test cases and the bugs point to the acceptance criteria, which are part of the user stories. Of course, the prerequisite for this is that the acceptance criteria is worked out in as much detail as possible.
Bug Template:
3 new events
The Scrum framework specifies the events sprint, sprint planning, daily scrum, sprint review and sprint retro. We enhanced the events by three test events.
Within the development team, it is already common to process component testing (unit test and code reviews). These tests look at the developed functionality, but complex tests of the entire product are not provided in the Scrum method. We have added three tests as seperate events in sprint.
- acceptance test
- smoke test
- regression test
The acceptance test verifies the functionality based on the acceptance criteria. We have two times for acceptance testing. Once within the sprint, where the tester can check all the already implemented functionalities. The other after the development phase, where all functionalities are tested for their integrity and accuracy before the demo of the increment to the customer. The smoke test ensures that all interfaces are reachable after deployment to the test environment. It does not check content and thus does not last long. In regression test previous tests are repeated to ensure that modifications in parts of the software do not cause new errors.
As different projects follows different priorities, some other projects will need other test events. Here it is important to select suitable tests according to the needs.
Integration of test events in sprint
This is the chronology of the test processes into a sprint, how we lived it in our project. That may be adjusted for other projects.
The tester should have a professional test environment available as early as possible. The sooner the tester gets an environment that closely matches the production environment, the better. The test data used should meet exactly the test cases.
With using a structured test process, we can meet the requirements the scrum methodology demands for quality purpose.
Lessons learned
What did we learn about testing in agile projects? It is especially valuable from our experience
- to have a structured test process which is integrated in a sprint
- to have a separate test person
- to create test cases in close consultation with the requirement engineering
- to start the test process as early as possible in the development process on a professional test environment
All in all, adding testing to our Scrum process has turned out to be very valuable. How do you handle testing in your Scrum process? Share your experiences and leave a comment below!