Testing – The Agile way
In tried and true Waterfall models, the testing phase was singled out as a complicated process with teams working at it intensely for a certain period of time (before the project’s release). The agile strategy on the other hand, suggests that testing process should incorporate all of the development team members while sustaining a cross-functional team for the duration of the project.
Due to their immense testing expertise, testers will still have to take the main responsibility for the project’s outcome. It doesn’t mean, however that they shouldn’t communicate with other team members on a frequent basis to make sure value for the client will be provided as early as possible. All Agile roles have a lot in common, so frequent testing is crucial for sustaining high quality of project’s outputs.
Agile software development methodology emphasis testing as a integral element of the software development process and requires using the “entire team” approach to implant quality into the software product development.
Communication as a key to Agile testing
Coding and testing should be intertwined to gradually generate the business value until in meets all the expectations of the client. Mutual understanding and communication between developers and testers is the true secret of successful Agile testing.
In Agile methodology, there’s no need for a dedicated Test Manager. Frequent feedback and communication between the product owners and team members is enough. Agile testing also gets developers on board. Since all the crew members are generalized specialists, everyone has something to contribute.
Everyone should be involved in testing
Testers and developers can work together to design and create unit test cases. The rest of the team might contribute feedback using “Show and Tell” technique before the code is finally stored in the repository. Agile allows developers to think more like testers and constantly check their work for potential errors which may be looming in the shadows of the code. Likewise, testers should try to wear the developer’s hat for a while and engage more fully in the creative process.
Tools for agile testing
Extreme Programming (XP) provides the best set of engineering tools to ensure high quality in Agile development. Test Driven development (TDD) is a model that encourages testing at the very beginning of the project. Start the development process with a unit test case, let it fail, repair it, and gradually make it move in the right direction. Those three stages are usually called Red, Yellow and Green. TDD may also be included into acceptance testing.
Another practice, which may be used to connect testing and development to give feedback about a piece of code is called “pair programming”.
In Agile, testing automation is imperative at every level of product development process. Creating an automated acceptance test cases which will test the logical validity of the project using API, hooks, business logic layer and GUI is called Acceptance Test Driven Development.
Those tests should be used as an integral part of the continuous integration platform. Automatization of the test cases allows us to get an edge and perform regression testing at the end of every sprint to ensure that all parts of the backlog have been completed properly.
For all the strategies mentioned above, you can use the following testing tools:
Hudson CI, Cucumber, JUnit, Native Groovy, Crucible, Jenkins CI, JMETER, Selenium, DBUnit.