This is a guest post from Tirrell Payton, Agile Coach and Founder of Payton Consulting. Learn more about him below.
Unlike traditional waterfall models, where testing was treated as a separate phase by itself with silo’d teams and heavy weight processes built in, agile methodology principles strongly prescribe that testing as a practice that will evolve and involve all development team members of a cross-functional team through the life of the project.
Testers in the team bring in special testing expertise to the team, with constant interaction with other team members to ensure delivering the early business value desired to the customer at frequent intervals maintaining a sustainable pace. Agile roles largely overlap, so early and continuous testing is the key to maintain high quality.
Agile software development emphasizes testing as an integral part of the software development and recommends using the “entire-team” approach to embed quality into the software product development.
Both coding and testing are done iteratively and incrementally to build the business value upwards, until it get full points from the customer. So feedback and collaboration between the developers and testers is the key to make Agile testing successful.
Agile principles replace the need of a dedicated Test Manager with short feedback loops of interactions between the Product owners and team members. Agile testing also influences developers to contribute to testing, since all agile team members are generalized specialists.
Testers also help developers in the team, to design and write unit test cases. Other team members may give the feedback using “Show and Tell” technique before the code being checked in into the repository. In short, developers are encouraged to think more like testers, continually checking their own code for potential errors, and testers are encouraged to think more like developers, tempering their natural destructive tendencies to engage more fully in the creative process itself.
The Definition of Done, also known as the exit criteria, is a checklist we go over before we can call a story “done” The acceptance criteria of user stories may be refined to relate the user stories to a testable outcome.
Extreme Programming (XP) gives set of best engineering practices to introduce quality in Agile development. Test Driven development (TDD) is a test first model. Start development with a unit test case, make it fail, then make it pass, and refractor it gradually. We call these three stages as Red, yellow and green. We can also expand TDD to acceptance testing as well.
Pair programming is another practice, in which a tester can pair up with another developer to test and give feedback on a piece of code.
Agile methodology testing strongly recommends test Automation at every level. Writing automated acceptance test cases that will test business logic using API, hooks, business logic layer and GUI is called Acceptance Test Driven Development. These tests should be implemented as a part of the continuous integration platform. Automating all the test cases gives us an edge to perform quick regression testing at the end of every sprint to make sure that something was developed before was not broken. It is also advisable to check in the automated tests into the repository for future references and modification.
Exploratory testing is another face of Agile testing which involves testing at a broader level uncovering the implicit expectations, without any test documents. It bring outs the critical and innovative thinking, and diverse ideas to make the better software products.
Various tools used for agile testing:
JUnit, Native Groovy, JMETER, SONAR, Selenium, DBUnit, Cucumber, Crucible, Jenkins CI, Hudson CI
This article originally appeared on Payton Consulting and is reproduced here with permission.
About Tirrell Payton
Tirrell Payton is an Agile coach and consultant with experience across industries (Defense, BioTech, Energy, Banking, Manufacturing). He helps companies realize the value of agility and help them smooth the adoption curve and has been working in Agile environments since 2006. Payton Consulting helps software companies improve their performance through training, coaching and consulting.