By Vipul Gupta
The Agile Enterprise: Adaptive, Innovative, Sustainable And Dynamic!
Organizations across the globe are adopting the Agile development methodology for enhanced collaboration and faster delivery. Agile development revenue is growing more than 20% over the past three years while the annual Forrester Forrsights Software Survey had 69% percent of respondents showing interest, planning to implement, or having already implemented Agile for their custom development. Agile is a set of software development principles that lays emphasis on individuals over processes and tools, working software over documentation, collaboration over contracts and responding to change over following the plan. Through Agile, organizations can collaborate with their customers by delivering live and working software to them.
In the Agile approach, developers and testers are seen as two sides of the same production coin, two parallel lines that should always meet and compare notes daily. In a recent survey by Forrester, close to 93% respondents said that Agile testers and developers collaborate more than traditional development teams.Agile suggests that these two essential functions be merged—not necessarily in terms of people, but in terms of time and processes—thus bridging the illusory divide between code creators and code breakers, and even reducing the need for robust testing teams, while still respecting the necessity of both roles. 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.
Despite its benefits, embracing Agile in the Testing practice is not an easy task and is often fraught with challenges.
Challenges in adopting Agile in Testing
Along with the issue of selecting appropriate tools that are usable as well as flexible, encouraging the entire team to contribute towards the tests, enabling open-source integration and promoting test-driven development are some concern areas in Agile testing.
Agile also brings with it a few technical problems including difficulties due to the presence of distributed teams and the obstacles faced by individual testers within the Agile team. In the case of Agile development methodology, it often becomes tough to keep track of the speed and frequency of changes in user stories, requirements or the code.
Frequently changing requirements resulting in the re-factoring of code is also a perennial issue with Agile. Agile testing can be further bogged down by the fact that the testing team has to continuously collaborate with other cross-functional and geographically scattered teams.
The Necessity of Test Automation
With increasing complexity of systems in the software industry along with the evolution of ways in which the end user uses them, organizations are increasingly focussing on delivering the product right in the first go. The onus of quality lies mostly in the hands of the product team and they keep on innovating the ways of quickly testing the products before making them available to the market. The idea is to test the components as soon as the developer does a code freeze. To reduce repeated efforts, test automation becomes imperative, be it at any layer i.e. database, API/services and/or UI. Test automation plays an important role in increasing the coverage of the tests by focusing at the right layer of application at the right time.
How Test Automation can help
Test automation can assist organizations in resolving the challenges associated with Agile testing i.e. how to test quickly and keep up with the momentum of development team. It ensures that the application is and continues to be in a good shape with each new sprint. Test automation enables on-demand execution of tests and running these tests over and over again gives the development team an assurance that the newly added code has not broken or destabilized anything. It also certifies that the system is working and the new code is doing what it is supposed to do. As Agile teams need to test continuously, test automation provides the required speed, and helps ascertain that the feature implemented during a given iteration or sprint is actually deployed.
Think, before starting
Overall, test automation is useful in addressing and fulfilling critical testing demands and essential for Agile projects due to their need for frequent regression testing. At the same time, while test automation may be needed, just deploying an automation tool is not the solution for an organization. What companies also need is a proven automation testing strategy and a skilled test team. This involves designing an effective automation solution that supports quicker maintenance, faster ramp-up time and distributed ownership.
About the Author
Vipul Gupta is the CoE Practice Lead at IGT Solutions Testing Practice. He has been a coach, consultant and blogger in the field of software testing for the last 15 years. His passion is innovating test engineering methodologies and designing accelerators to simplify testing overall. He has given numerous lectures in test forums and presented several papers at international and national testing conferences. Vipul established the Testers Monthly Meet concept, popularly known as ‘NCRTMM’, along with Indian Testing Board and Testing Circus in India in 2010. Vipul had also been a fellow member of technical review committee for Step-Auto conference for the years 2010 and 2011. Connect with him on twitter @vipsgupta or on email firstname.lastname@example.org