The testing world is undergoing a huge transformation process. Continuous delivery is the key word. Both the velocity and volume of changes required to achieve this is quite mammoth. Moving from traditional “Waterfall” development methodology to “Agile” has created both challenges and opportunities for a professional tester.
To effectively contribute, it is very important that a tester understands what Agile really means. A comprehensive understanding of methodologies such as BDD, TDD, Kanban will ensure that the organization goes through a smooth Agile transformation.
The Agile Method advocates adaptive planning, early delivery and continuous improvement, while encouraging rapid and flexible response to change. This challenges the testers to ensure good quality under tighter timelines.
What is Agile Testing? It’s a collaborative, flexible and adaptive approach that demands early participation of testers to deliver working code faster. It is very important that the requirements are prioritized and the build is automated wherever possible. As features and requirements can change significantly between sprints, it becomes important for the team to adapt to the changes. This demands that testers have broader cross-functional skillset to enable collaboration with the developers.
Scrum: This is a lightweight Agile project management framework used for software development. It describes an iterative and incremental approach for project work. Scrum testing is driven by a requirement (also called a user story) that defines how features should perform and should be tested in an iterative mode to ensure we deliver the maximum value.
Kanban: Kanban is similar to waterfall in the creation of key stages with gates that are sequential, but specific phases are tracked on a feature level rather than on release level. This could be the best choice particularly when your organization is moving from a waterfall to Agile model. Irrespective of the model you choose, a close developer/tester interaction is needed for TDD, ATDD, and BDD methodologies.
Test Driven Development (TDD): Here, code is developed against automated unit tests rather than time-consuming and often misunderstood requirements. Proper implementation of TDD requires the developers and testers to accurately anticipate how the application and its features will be used in the real world. Problems are approached in an incremental fashion and tests intended for the same unit of code must often be done many times over. The methodical nature of TDD ensures that all the units in an application have been tested for optimum functionality, both individually and in synergy with one another.
Behavioral-Driven Development (BDD): As a subset to Test-Driven Development (TDD), Behavioral-Driven Development (BDD) uses an initial requirement that’s driven from end-user behavior, rather than a technically facing unit test. BDD is different from TDD as it focuses on collaborating with business people. It relies on the use of a very specific (and small) vocabulary to minimize miscommunication and to ensure that everyone is on the same page and use the same words.
Acceptance Test Driven Development (ATDD): ATDD is a very Agile approach where tests are designed in advance and code is written to comply with the test. But these tests are more customer-facing acceptance tests than technically facing unit tests. This is a practice in which the whole team collaboratively discusses acceptance criteria, with examples, and then distills them into a set of concrete acceptance tests before development begins. While it may seem challenging to define the application behavior in the early stages, building the product with the end user’s needs in mind will result in a higher adoption rate than software developed under contrary methods.
Agile Testing – Next Steps: Testers cannot be expecting to write test case and execute them all the time. They need to broaden their skills like others and provide a holistic test strategy while focusing more on test automation. Testers must become highly collaborative, integrated members of their team and should be ready to don any role. Leveraging exploratory testing helps us to understand the customer’s key needs and concerns with the application.
Conclusion: Agile development is based on new values and Agile testing should be aligned with that. Traditional test techniques do not fit in an Agile environment. Agile test techniques are simple, give rapid feedback and are easy to understand for any team member involved in the project.