Now a day’s, agile development and testing are growing broadly and smart QA/Testing team always keep themselves with current trends and technology. Automation is a critical component to maintain agility. Continuous integration/builds, unit, functional & integration test execution and automated deployment are common examples of applying automation.
While working in SCRUM/XP, you’re splitting up your work into iterations and one of the conditions here is that by the end of each iteration code needs to have production-like quality and it needs to be ready to be put in production. This means that if you’re working on a project that requires 4 sprints, the second sprint needs to be built on top of the first one, the third on top of the second one and at any given time by the end of each sprint you should be ready to put your code into production.
You need to continuously and repetitively execute functional tests over and over that validate that you have a certain functionality developed and that it works. You need to have engineers gain knowledge on Automation methodologies and allow them to learn about ways to test functionality without having to manually check that functionality. In other words, they need to be able to automate the tests they’re currently doing. Hence, they’ll have the chance to provide much more value to the software delivery life cycle (SDLC).
By definition, TDD is a developer coding practice (using unit test framework), not an agile tester practice. Developer will write a failing unit test, add the associated code to satisfy the test, then re-run those tests to ensure success. Subsequent refactoring/redesign of the resulting code is done whilst keeping the unit tests running “Green”. The standard TDD mantra is Red-Green-Refactor.
However, the same concept i.e. test-first is definitely applied to higher-level functional and acceptance testing, whether automated or executed manually. Essentially, detailed requirements for a user story are expressed in the form of acceptance tests, which can then be captured in advance in a test automation environment such that they will eventually run “green” once the functionality is in place.
The testing process begins at the same time as development – Day One. Automated tests can provide faster feedback than a manual test, reducing rework and long feedback cycles.
Automation testing is very useful when it comes to the more stable and less frequent types of requirements. Thus by definition automation testing does not lend itself well to various types of frequent changes in requirements which comes alongside the adoption of any agile methodologies.
Also a deep understanding of the domain and features under development is essential to developing tests that provide meaningful feedback. Testers may also work on several stories or features at one time, so tools to organise and re-arrange multiple testing activities are critical. They will have adapted to a more collaborative, team-based approach to the iterative/continuous delivery of high-quality, working software as a measure of progress.