DevOps Zone is brought to you in partnership with:

Aleksey Savkin is a founder of AKS-Labs, vendor of BSC Designer software and tools for software engineers. His areas of expertise are remote team management and Balanced Scorecard as well as general info-business development and marketing. Aleksey is author of a number of articles and books on Balanced Scorecard, he runs Balanced Scorecard seminars in the Moscow Business School (MBS). Aleksey has posted 5 posts at DZone. You can read more from them at their website. View Full User Profile

Automation Testing for Agile Application Development

07.27.2013
| 4054 views |
  • submit to reddit

Agile application development is a software development methodology in which software is developed in several iterations or in simple words, repetitions. Initially an application is developed which performs the most basic functionality. Early iterations focus on providing user with an application with most crucial functions. Development teams consistently collaborate with each other and also with the user of the application to refine the product which is being developed. 

Hence as a result of several iteration and with the continuous feedback of the customer an application is developed which is robust, verified and validated against the customer’s requirements. This is unlike waterfall development approach where requirements and specifications are gathered in the beginning of the development and cycle and cannot be changed easily at the later stages. Automation testing plays a vital role in agile application development which is our topic of discussion in this article.

Automation testing for Agile Application

As aforementioned, in case of agile applications, development and testing is done in small iterations unlike waterfall approach. Automated testing can help reduce the iteration cycle. Consider the traditional example of manual testing, where testing is done manually by the tester. In such cases tester writes the test cases, tests them and gives his feedback to the developer. This takes lots of time and in the meantime developers have made many changes in the code. Hence the feedback received from the tester is often outdated and faulty.

Automation testing is really suitable in agile development as in agile development code is rapidly being updated. Automation testing is quick and test case once written can be executed and application can be tested again and again as soon as any change in the code occurs which leads to in time and efficient testing of the application. In this context, it can be easily said that automation testing has become an integral part of agile application development with several advantages such as consistency, repeatability, efficiency, and robustness. However manual testing is still required in some scenarios in agile development yet, automation testing covers most of the testing task in agile application development.

Agile application development is quite flexible and nothing is properly planned in the initial iterations. Product is consistently evolving with the help of user feedback. Due to this loose design of development it is often very complex to write automation scripts as automation testing is a very planned and organized activity which requires the application to be well planned as well. This problem can be solved to some extent. While the application development team is working on application design in the meantime testers should plan automation testing by designing automation test metaphors. There is always a small planning meeting before the start of every iteration cycle in which design goals are finalized, automation testers can also extract a planned approach from these meetings and develop their automated test scripts accordingly.

Main idea of agile application development is to quickly cop up with the changes in the requirement of an application. Similarly, automation tester should also quickly respond to the change in the requirement and should modify its test cases accordingly. For this purpose reusable test scripts can be used which with slight modifications can be adopted to test any new feature immediately. In agile software development, development teams consistently collaborate with each other and the customer, in the same way automation testing team is also involved in these interactions which lead to efficient scripts and ultimately effective automation testing.

Automation testing results in better documentation of important assets in agile application development like test cases, test design documents etc. As agile application is all about interaction between teams and modifying the product quickly in subsequent iterations, automation testing being fast, efficient, reliable and robust testing methodology plays an important role in agile application development.

When to use Automation Testing in Agile Development?

This is the most challenging question that when we should adopt automated testing approach in agile development. There are several factors which are taken into account while taking this decision like time constraints, how critical the application is, cost constraints, management style and standard operating procedures of the company. However automation testing should be done in agile application development in several scenarios some of which have been described as follows scenarios:

  • Functional testing in agile development should be automated like regression and smoke testing.
  • If user interface of an application is not constantly being modified, it is a good strategy to automate testing of user interface.
  • Whenever we want to test the robustness of application by putting load on it or in simple words when we want to test application with large amount of input data which needs extensive processing, we can automate this test case because manual testing can take days for load testing in agile environment.

When to avoid Automation Testing in agile Development

There are few scenarios where automation testing can be expensive and should be avoided:

  • While testing a compiler, it is not suitable to use automation testing because compiler will be busy executing the test cases which might affect the processing speed of the compiler.
  • It is fine to test simple GUI based applications with automation testing but in case of complex graphical user interfaces (GUI) which are consistently being modified it is not a reasonable approach to write automated test scripts as this approach can be much more expensive than the manual testing.

Overall, it can be concluded from the above discussion that agile application development has embraced automation testing technique as primary testing approach owing to its advantages. For the same purpose companies are developing large number of automation testing applications. 

“Routine Bout” is one of those applications which can efficiently and effectively test any software application developed using agile development approach. It yields result in the form of reports which are easy to read and comprehend. The details of this tool can be found at http://www.routinebot.com/. This is a GUI based automation test tool which can be used to test a wide variety of applications. Wish you very best of luck in your development and testing tasks. 

Published at DZone with permission of its author, Aleksey Savkin.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)