In a traditional software development environment, the development team first builds a feature and then passes it onto QA for testing. The advent of agile software development has however, ushered in a new era of fast paced design, development, and shipping of new features and products. As such, the classic model of separation does not hold sense anymore. For a product or feature to meet the acceptance criteria within the specified time constraints, it is essential that the QA team work continuously in collaboration with the development team to ensure that quality is directly "built into" the product rather than the product being tweaked for improvements *after* completion.
In order to launch quality product to the end users in an agile environment, there are numerous functions that a tester needs to assume responsibility for. Some of the key functions are as follows:
1. Perform Requirement Analysis and ambiguity detection
The QA is generally involved with a product or feature from an end user perspective. It is thus well equipped to perform requirements analysis and review. Testers must meet with product stakeholders to gather and analyze the contents of their story card. They must detect any ambiguities in requirements and resolve them even before development and testing begins. In cases where required, QA must also assume the role of a proxy product owner so acceptance criteria for user stories can be developed.
2. Attending planning sessions
It is the responsibility of a QA team member to regularly attend planning sessions in order to ensure synchronization between developers and QA right from the stage of inception. The early participation will allow for the QA team to estimate the level of testing efforts they may need to employ and will further allow it to identify potentially problematic issues early on.
3. Perform Continuous Testing
Unlike traditional testing, the QA team in agile environments cannot wait for the whole development process to be completed before moving on to testing: QA must continuously keep testing throughout the duration of the sprint. The continuous testing allows for better collaboration between both teams in identifying and resolving issues in the product, resulting in quality being directly built into the product.
4. Act as bridge between end users and developers
In an agile environment, the QA team needs to assess a product from multiple perspectives belonging to the various stakeholders involved. End user feedback along with general testing feedback needs to be continuously communicated to the development team by QA.
5. Participate in demos
QA must participate in two kinds of demonstrations:
6. Automate, automate, automate
It is a major bonus if testers possess automation skills. User stories can be converted to automated test scripts during development. This not only helps in reducing manual efforts but also increases coverage and speed of testing. Helping agile projects with short sprints receive adequate testing within their specified time constraints.
Owing to agile development, the role of a tester has long transcended traditional boundaries. The multi-stage and multi-level involvement of QA during development means that QA is very much a part of the development team rather than separate from it.