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.