In the current market scenario, agile methodology for development and testing is growing in popularity. This is the reason that many testing teams are upgrading to the agile management. There are many good agile testing tools from project management to automated testing tools.
In my opinion, no matter which methodology we consider, automation is a crucial candidate in reducing testing efforts drastically. If practiced through the use of established disciplines and with an intended focus on continuous improvement and agility, automation tools will benefit the testing team and overall product development a lot. In contrast, it is seen that projects which were driven using waterfall model were not inclined towards automation with a sense of priority. The main reason for this used to be the mindset of the teams and people involved used to be very static and the roadblocks created due to phase approach. Not much of the tests were repeated unless there is a retest cycle which for a major bug fix. At best, some builds used to adopt automation, but it used to be very rare to find automation in waterfall project. Though we cannot say this with much more confidence about the scope of automation. It is only that the teams used to ignore doing automation testing.
While following any of the established models under agile testing there is n number of iterations which needs to be followed and the use of a wide variety of tools becomes necessary. This makes automating necessary for a wide area of tests. Unlike waterfall model, the agile testers are an integral member in the day to day activities of the development team, participating whole heartedly in the development process, from design through delivery & deployment. It is very essential for the test team to have a deep understanding of the domain and features under test to developing tests that provide meaningful feedback for the clients. Due to the overlapping model of the stories, our testers may have to work on several stories or features at a given time, so tools are required to organize and manage all the testing activities. It becomes a critical part of the deal and success of any test team and the project on the whole largely depends on it.
Most people who work on agile methodology already know that automating system test is important, but they do not always realize that in most of the cases it becomes very difficult to automate tests in agile. The test objects are constantly changing in this model as defied gradually over sprints. This makes automating a difficult task. This fact scares many automation testing engineer in from taking a project which follows the agile methodology. Constant changes in the sprints directly mean more effort needs to be spend in maintaining the test suits.
Despite these hurdles, fact is that without automating test scripts it is not possible to work Agile. Though both the statements might seem contradictory but it is true. Considering the high number of frequent deployments. The scope of automation comes from the fact that in an agile development model the number of test cases executed at the system testing level will always increase as new and new functionalities are added with each new sprint. This also increases the total functionality which needs to be tested in every sprint, as new code is added the old code still needs to be regression tested for any defect injection in growing the application.
Now, I come to a point where it is safe to ask my readers the all-important question of what should go first in my automation radar when I follow agile testing. You must already be attempting to answer this question based on the discussion till now in the article. Let me tell you, your thinking is almost correct and quite close to the answer. When many novice agile testers (or new to agile testing managers) draft their test automation strategy they think it mandatory to automate all regression tests, and increase the number of automation tests from sprint to sprint. They also give emphasis that it should be done immediately. Of course this is not justifiable to the effort it requires. It is a very bad strategy to automate everything right away, because manual testing will continue to play a major role in agile.
Points To Be Considered First Before Automating Agile Project:
There are some factors which need to be considered to determine what should be automated first in an agile project. Some of the probable candidates in the playing eleven (do you follow cricket?) are:
- Functionalities which hold the business. E.g. for an e-retail store whether a prospective customer can add items to his cart and shop for that item successfully using all the options for payment provided by the merchant is an important flow which needs to be automated first.
- Functionalities which are used frequently by application users e.g. In a review site like tripadvisor.com checking the suggestions which one user get if he selects a particular city , should be relevant to his choice and budget is essential.
- Testing with different configurations e.g. if an application gives access to various predefined roles should be automated and is eligible as a candidate of automation in the very first sprints.
In addition to the points stated above, it is very important to know when and when not to automate tests. This analysis needs to be conducted irrespective of the methodology used whether Agile or waterfall. Care should be taken by the test manager or lead in choosing test such that if a test is only performed once or twice then it is highly recommended that we should omit that test from being a possible automation candidate. In addition, one timers and exploratory tests should never be considered for automation. The reason for this is that it is very difficult to justify the effort required to automate these test cases. Also, normally exploratory tests are random tests based on tester experience done to gain knowledge or break the system and then tweak or revise the testing effort based on the new knowledge gained.
Lastly we should always discuss on the benefits we get from automating scripts in an agile testing environment. There are various benefits of automating scripts in terms of effort, time and money saved. The time which is saved in executing tests via an automation tool instead of manually executing scripts one by one is an obvious advantage which shows up in the project timelines and happy faces of the clients. Another distinct advantage of including automation is that test automation will definitely lead to more exhaustive testing because with automation, there are very less limitations in executing test several times with varied test data in different test environments with various different roles. However, the main benefit which we get from automating tests in agile environment is the confidence in the system. Its quality is increased due to the comprehensive nature of tests which are performed. This trust makes it possible to improve and customize the system to the needs as required in an agile project.
Additionally, resources become available for other tasks. Instead of retesting existing functionality, testers can put their energy into testing areas of new functionality where a human feeling is really needed. Developers also become more confident with the help of automation. There will be fewer errors left as developers quickly see the consequences of a code change, thus saving the team’s (and your organization’s) time and money!
Challenges Doing Automation In An Agile Process:
There are many challenges while doing automation in an agile process. While most of the challenges would be new and unforeseen. We have tried to address the most common ones here.
- The most common challenge which one can foresee is the availability of people with the right skills, and an understanding of domain. Remember our discussion on right candidates to automate. Finding the correct candidates means people who know which functionalities to automate and which to leave for manual testing.
- Sometimes automation leads do functional tests on a story-by-story basis which may not provide higher-level coverage which is desired from it. So, in order to be more effective teams should write user stories so that they can prioritize and schedule testing effort.
- Many a times the automation team faces issues with changing functionalities in iterations which have to be reworked specially, if the applications are volatile and need to be changed according to the trends. One solution to carter to this issue is by identifying the constants and designs your tests accordingly. E.g. in any case for an ecommerce store, logins, payments and product data will remain the same. So, we can aim at designing our tests based on these roles. In case there are any changes, we just have to revise the intermittent modules instead of drafting complete automation suits.
To sum up using automation in agile methodology is a must for gaining speed, good quality, creating an efficient product in no amount of time.
About Author: This article is written by Sakshi Dewan, STC team member.
Sharing your own testing experience, tips or testing secrets in comments below will definitely make this article more interesting and helpful!!
If you are not regular reader of this website then highly recommends you to Sign up for our free email newsletter!! Sign up just providing your email address below: