Is Automation Successful in Agile?

Agile is a term used for several iterative and incremental software development life cycle methods. Most popular methodologies include extreme programming, scrum etc which are implemented or said to be implemented nowadays by teams. The development cycles have become shorter, crisper with feedback and testing being conducted in these small sprints. The SCRUM model of agile follows iterative sprints, where a part of the product is shipped. And in this sprint, the part has to be developed and tested. With every sprint or iteration, the product is going to be built, the code is going to become larger but the time to test will remain the same. Automation is not a choice in agile methodology, it is a necessity.

All about Automation & Agile

  • Changing Requirement & Tests
We need to be careful with automation when working in agile mode. We have to realize and understand that the product under test is constantly changing with every sprint, and our tests should not break down because of the changing test objects. So the test code should be kept separate from the UI of the application, and as much as a possible modular approach to code should be enforced. With every sprint, the test data will become obsolete, so separate code should be written to quickly generate the test data so that it can be utilized in the current sprint cycle.
  • Automation saves Time
We are also looking at the integration of our test automation cycle to log bug directly to the bug tracking tool during execution, and at the same time mark the user story as the failure in that build, so we are looking for integration with an ALM tool. The regression tests form the ideal candidates for automation, and their count will increase with every sprint cycle. We also have to be careful about the time it is taking for automation to execute the test scenarios. We should apply dynamic waits, data generation without UI usage, modular code approach to our automation scripts.
  • Early Automation
We also need to understand that we do not require a stable build, for automation to begin. Automation activity can get started with the start of the product coding. Identify the common scenarios, data creation prerequisites, and automate them first. Then build a framework, lay down the guidelines for the automation code, so that with every sprint, we can add to this suite and execute the tests to test the build for the regression scenarios.
  • Continuous Integration
We also need to look at the build creation process and acceptance of it for the testing. In the agile model, we cannot afford for the build to be made after 3 weeks of a code being written. We need nightly builds which are created automatically and tested against a test automation suite for build acceptance for testing. This process falls under the umbrella of Continuous Integration. CI is also a must with agile. Tools like Jenkins, Hudson provide many triggers for build creation process and we can attach our test automation suite with the process against which the build will be tested as soon as it is made. So by next day morning, the developer will know whether the changes he made yesterday affected the build in a positive way or has broken the build.
  • Build frequency in Agile
In agile information is the key. We need information, quick. We need to act on that information and derived decision fast. The feedbacks from stakeholders are available in a bat of an eyelid. Automation is not to replace manual testing. We cannot. But it is required to act as an aid, to help derive that decision faster, by taking less time and cost. We can also make use of our manual testing team to better work than the redundant work of regression testing required for every build release. We need to understand that the frequency of these build releases in agile model increases because we have shorter life cycles, called as sprints.
  • Good Planning
Like with all good and necessary things a word of caution is attached, it is also true in this case. Though automation is essential, its implementation is full of caveats. We do not want that with every sprint cycle our automation suite is breaking because of the code change, UI change and the entire sprint cycle which is anyways shorter than the traditional cycle is spent on fixing it. So we have to be careful, start early and start right the first time when implementing automation in agile.
  • Automation has wide scope in Agile
You will note that the automation is not just to shorten the testing process, automation is also needed for the build making process, and automation is also required for bug reporting process. We have to respect that agile method requires information at a speed, and we cannot hinder it by doing processes the manual way when an alternative in terms of automating them is available. The tools for CI, ALM, test automation make an integral part of the agile way of producing products.

If reading the above information, you still have doubt as if it is worth to do automation in agile, try doing agile without automation, it will not be true to the spirit of agile. It is an obligatory activity. It assists both the developers and testers, giving them the necessary support which is required to handle the sprints, and the spirit of agile.