For many people, including those who play an important role in testing, the relation between testing and Agile projects can be seen as something theoretical and difficult to implement in real life. The problem could go further if we try to introduce a structured test process, in which all activities are planned and divided in perfectly known phases, into the SCRUM world, that sometimes is wrongly seen as an unorganized and undisciplined development approach.
However, as the experience has told us, there is nothing further from the truth. Testing can be integrated into Agile projects in such a way that is no longer a separate phase, but included as a continual activity that has its influence in almost all Agile events, from daily scrums to sprint plannings. In fact, testing can be the driving force behind the quality of the project, something that is difficult to achieve in more traditional development approaches, in which test execution is only performed in latest stages of the process.
Agile, a new chance for structured testing
As it can be seen in several real projects, regardless of the business or size of the software under construction, new development approaches are becoming more and more important. One of their main advantages is that they can be easily adapted to ever-changing circumstances, as they’re 100% focused in satisfying the customer. This means that methodologies like Agile are prepared to face all kind of situations, so that development can be altered without sacrificing quality. Furthermore, Agile makes the quality a must from the outset.
But, how testing can be included in this idea? As it is known, Agile manifesto  does not make any reference, neither in any of their four values nor in any of their twelve principles, to test activities. In spite of this, it would be incorrect to misprize the importance of testing in Agile development processes. In fact, testing participates in the project from the scratch, adding value and influencing the developed product, as it can help “to deliver value to the business as soon as possible” (1st principle of the Agile manifesto). This will help to understand that the product can only truly be regarded as done when testing is finished.
And what about to mix a structured test approach in the Agile idea? As we mentioned previously, Agile could be seen as something unstructured and even chaotic. This misconception is quickly replaced by the idea that the structure and the definition of well-known concepts are simply essential. An Agile project will not be a success if structure and discipline are lacking.
Benefits from include a structured test approach into Agile
Although it could seems contradictory, in regards of testing, a structured approach would the appropriate one for the following main reasons:
Estimation and prioritization of tasks is better defined. Two tests products coming from the test planning phase in any structured test process strongly benefit planning for agile projects:
Product risk analysis (PRA): it will help to have a better picture of the potential risks the project will have to face during its lifecycle. In other words, a PRA will told us the needed risk coverage and the parts of the software that requires a deeply attention from testing side (see table 1). This may result in changes in the prioritization of the items to be developed during all the Agile project.
|Part of the system||Quality characteristics||Damage||Chance of failure||Risk class||Intensity|
Note: B subsystem requires more attention than rest of items, as its quality characteristic (Detailed functionality) needs a bigger degree of coverage of its risks. This should also affect the resources, time and effort invested in this subpart of the system.
Table 1: Product Risk Analysis (PRA)
Test planning schedule: despite in SCRUM projects, test planning do not include any fixed due dates (as all tasks may change daily), it’s an essential task to plan all test items to be done during each of the sprints that are included in an agile project.
A structured test approach improves the quality of the developed project right from the beginning. One of the greatest advantages for structured testing is that it’s able to influence in the Agile project from the scratch.
As is advisable, testing must be involved in the process as early as possible in order to gain insight into the quality of the test object. In case of Agile projects, testing is included almost from the start of the project. Test professionals are taken into account when the SCRUM teams are being set up, so, they’re able to show the testing point of view right from the planning of the project, in such a way that the entire process is benefited from some improvements that come up:
- Revision (and improvement) of test basis and product backlog items can be started during the planning phase of the project: one of the greatest improvements of a structured test process is that defects could be prevented by doing testability reviews. Obviously, the earlier this activity is done the better for the product under development, as defects discovered can be managed as soon as possible.
|Example – Revision of test basis in a real Agile projectObtain and review test basis is used in some real projects as an input for two important activities :
- Set-up of test infrastructure is started at the beginning of the project: one of the most common (and annoying) problems that came up in a project is that test environment does not work as expected. This turns out this phase of a structured test process in a critical success factor.
- Risks will be known by all team members early in the project. As mentioned previously, a PRA is an input for project planning, so their conclusions will be available during what is called “Sprint 0”
Individual items are better tested due to a robust and high-performance test case design. Undoubtedly, one of the biggest strengths for applying structured testing in an Agile project is the possibility to include a well prepared test design process for testing of individual items spread among all different sprints. There are several advantages that can be summarized in a few points:
1. It’s easy for the whole SCRUM team to get an overview of the test coverage for each developed item: product backlog items are analyzed one per one deciding which test approach will be applied. In this way, the SCRUM team will receive the test overview in an early stage of the agile process (risk and test intensity will become available with test strategy). Furthermore, a structured test design approach will help stakeholders to gain faith in the product.
2. Test cases can be reused during the same or future projects: nowadays, the increasing complexity of IT systems shows that any functionality being developed in an Agile project could last for several sprints or even for more than one version of the product. Also, some projects in an organization could have functionalities with common behaviors. All these situations make the reusability of test cases a must.
3. Set up and maintenance of a regression suite becomes easier: the last, but not least benefit for reusability of test cases mentioned above, is that the configuration of regression tests is easier than with other testing approaches.
As the experience told us, work for any developed item does not finish when the deployment of the product has been done. Maintenance activities are important to keep the quality up to the standard. For this reason it’s advisable to perform a well-planned regression testing. Test cases designed for testing of product backlog items are used as an input for creation of regression test suite.
These three main benefits remark the importance of structuring the test process in Agile projects. This way of performing a test work it’s not indicated only for traditional development approaches.
Agile and structured testing, a great team to face future challenges
At first glance, and as we mentioned in the introduction of the present document, the interaction between structured testing and Agile development approach could be seen as something difficult to achieve with success. The main two reasons mentioned are that this way of performing testing could require extensive processes and a fixed planning, when in fact Agile needs to adapt constantly what needs to be done (“Responding to change”) and prefers interaction and communication over strict rules (“Individuals and iterations”).
However, a structured testing process can be integrated into Agile and obtain even better results than with more traditional approaches: test professionals are involved in the development process from scratch, leading the construction of quality and not only testing it. Moreover, SCRUM projects would receive more benefits with this testing approach than with other ones: for instance, the continuous improvements of products to be developed and the better insight into the quality of every single item.
Isaac Álvarez Diz – Test Lead – Sogeti España
 Agile manifesto is an approach that is considered as the start of Agile software development. Their four values and twelve principles have a neutral attitude towards testing.
 During the so called, Sprint 0 (not defined in the formal theory of SCRUM), the setting-up of the process is done.
 Responding to changes over following a plan is the fourth value of the Agile manifesto.
 Individuals and iterations over processes and tools is the first value of the Agile manifesto.