The job of software testing at Rally is different than any other testing job I’ve had, in a very positive way. As with all software organizations, we want to safely reduce the amount of manual testing and continuously improve our regression test suite so we can shorten the time it takes to qualify release candidates. At Rally, the developers write automated unit, integration, and GUI tests as part of each story so we improve our test coverage with each commit, which will lead to less manual testing, more reliable software, and shorter cycle times.

Testers, by profession, are not a trusting bunch. We want to prove or see proof that whatever is being tested is really working properly. One of the biggest areas many testers have problems with is trusting that the automation is doing the right thing (especially when we didn’t write it).

To help us sleep better at night, we’re trying an experiment to see whether we can improve our automated tests and expand further into the TDD universe. Or, in our case, the ATDD (Acceptance Test Driven Development) universe.

As developers are ready to work on a story, we (the developer(s) and the tester on the team) walk through the implications of the story in terms of the system as a whole and figure out what needs to be tested and the appropriate type of test to use. This gives the developers insight into both the happy and cranky path tests to cover, as well as making sure that the testers are comfortable with the quality of the automated test coverage. For small stories, we add the list of tests into the Acceptance Criteria of the story or bug. For large stories, the list may be in the form of an attached spreadsheet that is updated as the tests are implemented.

The desired result of early and additional planning is that testers will feel the need to run only a subset of the tests manually because the rest have been automated and because we have confidence in the automation and the coverage it provides. In practice, we’re finding areas where our automation isn’t quite doing what it should be doing, so as testers we have to do some risk analysis and figure out where we need to poke, just to make sure that things are behaving correctly. So there’s still some refining to do, but it feels like our approach is sound. As more tester-validated automation is implemented, we feel safer in reducing the amount of manual testing, our regression test suite keeps growing bigger and more reliable, and our cycle times are growing shorter. Seems like progress.