Agile lifecycle and methodology of developing software are terms that have gained a lot of popularity in the last 5 years or so. Everyone has come to accept the iterative development cycle, short release cycles, focus on collaboration between teams with lower emphasis on documentation across disciplines. One of the associated areas in Software Testing is how much emphasis should be given to formal test designing and should it be done any differently in Agile than in traditional waterfall development models. An associated read would be one of my recent blogs on Test Strategy.
Let’s look at a few different ways in which tests can be designed in an Agile model:
Test Driven Development (TDD) – If your team is one that takes the route of TDD, where tests are written even before product code is in place, the test team gets a head start into the overall discussions, product features and is able to get robust tests in place to enable the coding process. Greater emphasis is placed on automated tests in such cases than manual tests.
Scenario/Story based test designing –
since detailed specifications are often times not available unlike in the traditional development model, tests are designed to guide the team through specific scenarios and stories rather than being a strict set of cases that need to be executed. With the over-arching umbrella of the scenario based test, the tester has his creative zone wide open to cover varied tests that may not be necessarily documented. This gives him the advantage of scenario based coverage at the same time, not spending too much time documenting every single test case.
Continue building on your regression suite –
Typically, a large portion of the tester’s time goes into exploratory testing in the Agile model. While exploratory testing has its own benefits, what is important to keep in mind is the bugs found from such test efforts. Test cases should definitely be added for valid bugs found through exploratory testing, so that they form part of the regression test suite to be executed in future test cycles.
Test Milestone between releases –
Test case maintenance is a very important effort, especially in development models like Agile, where features are changing rapidly, and a lot of variables are very dynamic. Unless care is taken to ensure the tests in place are optimized, up-to-date and relevant, very soon they will affect the product quality adversely. Although the team may not have time during the release to focus on test maintenance, they need to work with the rest of the product team to build in a day or two every quarter, to allow for test case maintenance and clean-up. Such times can also be used to add new tests based on feedback from customers on field, other disciplines such as marketing, business, development, design etc.
The point to keep in mind, is with evolving development models, the ways in which tasks are done will continue to change. One has to understand the underlying purpose of the task (in this case, designing tests) and look for ways to accomplish that underlying purpose as opposed to sticking with their old and rigid methods that have been used all along. There may be other interesting ways in which you design tests in an Agile model. If so, I would love to hear from you. Please leave a comment on this blog post or write to me at firstname.lastname@example.org