The adoption of Agile methodologies and Agile frameworks in software development projects has become common practice over the last few years. This new software development process brings many of the key development areas into focus, and one of the areas that must be considered is Quality Assurance and Test (QA). QA in Agile methodologies will not succeed if addressed as it has been during traditional Waterfall processes, i.e., as a separate activity during the development process. QA is something that must be integrated into the process from the start, rather than be added as an afterthought.
The Agile approach fosters collaborative and proactive behaviors by team members: test, development, product owners, etc. Everyone is responsible for the eventual quality of the product, everyone has ownership.
However, that doesn’t mean that in an Agile project the QA engineer has no role to play! It is actually the opposite. An Agile team benefits tremendously from having QA personnel as team members. The QA engineer will be integral in the definition and clarification of acceptance criteria, as well as in refining the requirements.
Although the product owner (PO) is initially responsible for creating and prioritizing the requirements, as well as writing the initial acceptance criteria for them, the whole team should work together, with the PO, to review and document the acceptance criteria for each of the requirements. The QA Engineer can ensure QA is part of the project DNA. A good Agile technique that helps in documenting acceptance criteria clearly is behavior driven development.
The QA role in Agile methodologies is not restricted to testing the software being built. In fact, the underlying idea behind an Agile team is that none of the members are specialists. That means that QA will eventually help put together automated testing environments, and will also work on exploratory tests, which are usually manual. Development will see increased quality gains if a test driven development (TDD) process is used. This will guarantee a good automated unit test coverage, which is usually, but not exclusively, created by the developers with aid from QA engineers. Additional improvement in quality can be achieved by simple and common techniques, such as peer reviews. There are a couple of Extreme Programming techniques that can also improve the quality of the code, which usually eases testing times.
In order to increase automated testing, it is essentially mandatory that a continuous integration test environment be running. This environment will not only run TDD unit tests, but also extra automated tests, usually devised by QA engineers, such as service layer testing, acceptance criteria validation, and integrated testing.
Bottom-line: QA in Agile methodologies is not what it has been known to be in the past; there must be more integration, more collaboration, more proactivity, and essentially more team work from the start to ensure a successful and high quality deliverable.
At Daitan Group we foster Agile techniques and Agile culture, with a belief in continuous never ending improvement.