The Reality of Software Testing in an Agile Environment
10 Agile / Quality Assurance (QA) Myths Blown Apart
The definition of agile testing can be described as follows: "Testing practice for projects using agile technologies, treating development as the customer of testing and emphasizing a 'test-first' design philosophy. In agile development, testing is integrated throughout the lifecycle, testing the software throughout its development." *
Agile is a methodology that is seeing increasingly widespread adoption as a quality and it's easy to understand why - especially if you consider the user and developer points of view as follows:
Users: Don't want to spend ages being quizzed in detail about the exact requirements and processes for the whole system and then have to review a large specification which they know could come back to 'haunt' them.
Developers: Don't want to have to follow a tight specification without any expression of their own imagination and creative talents - especially if they can see a better way.
Yet for the Quality Assurance professional, an agile approach can cause discomfort. In an ideal world, they'd have a 'finished' product to verify against a finished specification. To be asked to validate a moving target against a changing backdrop is counter intuitive. It means that the use of technology and automation are much more difficult and it requires a new approach to testing in the same way that it does for the users and the developers.
All the agile methodologies have (at least) one characteristic in common in that they impact the role of the QA professional. This in itself is not a bad thing when the outcome is a step change for the better.
He that is good with a hammer tends to think everything is a nail.
However, when decisions are made on the basis of an invalid paradigm, change is not always analogous with progress. When a new paradigm is proposed for software development, by software developers, it's no surprise that it is developer-centric. The responsibility of the QA profession is not to bury its head and pretend that agile development will go away, it's our responsibility to engage in discussions to ensure that someone with a hammer is not pounding on a screw!
With the emergence of Test Driven Development**, some suggest the role of QA is now questionable citing Test Driven Development (TDD) as the key to testing. But, what is most important, is that QA is directly involved in the agile scrums all the way through to be an integral part of the team designing the tests, at the same time as the requirements and solutions evolve.
Quality Assurance teams need to know the real impact of an agile methodology as there are boundless myths circulating within the industry.
This whitepaper is our response to 10 of those myths:
- You only need to unit test - TDD testing is sufficient
- You can re-use unit tests to build a regression test suite
- We no longer need testers or automation tools
- Unit tests remove the need for manual testing
- User Acceptance Testing is no longer necessary
- Automation is impossible
- Developers have adequate testing skills
- The unit tests form 100% of your design specification
- TDD is applicable on every project
- Developers and Testers are like oil and water
* Definition taken from The Glossary of Software Testing Terms from Original Software
** Defined on Wikipedia as "A software development technique consisting of short iterations where new test cases covering the desired improvement or new functionality are written first, then the production code necessary to pass the tests is implemented, and finally the software is refactored to accommodate changes."