With the adoption of Agile, teams are required to work in a shorter release cycle. This means teams must deliver high-quality features rapidly to ensure no functionality breaks and feature adds value to the overall product. Test automation comes as a rescue for this and becomes an important part of Agile development. It is observed that many times test automation efforts go in vain or are not able to realize their full potential. This post looks at the challenges due to which automation suffers in agile teams and the points which can make your test automation success in agile teams.
Why Test Automation Efforts Fail in Agile
So, let’s first look at why test automation efforts are not able to maximize their potential in agile development. What I feel is, generally testing teams gets into a trap in agile development where focus goes to the development of functionality. There could be a lot of unnecessary expectations or lack/no attention to testing mainly to automation. There is a myth that automation will solve all the problems and bottlenecks. Agile teams always try to reduce the number of testers in the team, believing that automation will take care of everything. There is no magic until unless given adequate time and resources.
“Test Automation Support Testers, Test Automation DOES NOT Replace Testers!”
Continuously Changing Requirements adds more to it. Many times, Requirements gets changed during a Sprint sometimes a couple of times. It leads to a rework for test engineers. All the effort you have put in so far must be changed or completely dumped. Continuous testing and regression cycles squeeze most of the time and thus less time to focus on test automation development and maintenance.
Another important point causing the failure is the lack of attention or Inclusion of automation. Test Automation effort is huge and important, which usually not being considered as part of estimation. This impacts drastically in the long run if you don’t have strong automation in place.
Test Automation Success Factors in Agile
I have listed down some of the important test automation success factors, following which should help you achieve better test automation.
1. Use Agile Testing Quadrants to prepare your testing strategy
Use Agile Testing Quadrants to define your strategy, identify which type of testing or automation should be in place and what to focus on. Determine the quality criteria and what to focus on during a sprint. This is not directly related to automation; the strategy should help the overall test automation success.
What are Agile Testing Quadrants?
In 2003, Brian Marick, a software consultant came up with Agile Testing Quadrants (originally known as Marick Test Matrix) in a series of Articles on Agile testing. He came up with this to address criticism of his work. Agile Testing Quadrants are a visual way to determine different testing at different stages of product development. It differentiates between Business and Technology facing tests, and those support the team or critique the product.
Read the book by Brian Marick The Craft of Software Testing: Subsystems Testing Including Object-Based and Object-Oriented Testing, 1e
Quadrant 1: Tests related to code quality, to provide feedback to developers throughout the development cycle. E.g., Unit testing, Component Tests, Integration Tests.
Quadrant 2: Tests focusing on Business aspects of the product. This includes typically functional and automated tests of scenarios.
Quadrant 3: Typically, User Acceptance Testing (UAT) and exploratory testing belong in this quadrant.
Quadrant 4: Non-Functional Testing (NFT) like performance, load including security, compatibility, and resiliency.
2. Automation as part of Development
As stated earlier, this is one of the main factors of test automation success. Generally, Test automation is ignored at the inception, estimation and further maintenance efforts cause failure. Setting the expectation at the beginning is always better, for example – not every case will be automation or test case automation will be based on prioritization. While estimation adds automation efforts as well. This should be given equal importance to software development. To have these done effectively, the best would be to include test automation as part of your definition of Done (DoD).
As stated in Scrum Guides the Definition of Done (DoD) is –
When a Product Backlog item or an Increment is described as “Done”, one must understand what ‘Done’ means. Although this may vary significantly for every Scrum Team, members must have a shared understanding of what it means for work to be completed and to ensure transparency. This is the definition of ‘Done’ for the Scrum Team and it is used to assess when work is complete on the product Increment
3. Dedicated Resources for Test Automation
Assign dedicated resources for automation in your agile team. Make sure that these resources have the appropriate skill set for automation development and maintenance. Assign or divide their effort as such that they are getting enough time on automation. Assign resources and decide the number of dedicated resources based on the size, type and complexity of automation to be developed. Prioritize maintenance over new development and have dedicated focused resources for automation maintenance as well.
4. Right Automation Tool and Framework
Select the right automation tool based on the technology and complexity of the application. Understand the application thoroughly and list down all the possible requirements (as far as possible) that you will investigate the tool. Below are some of the key points to look at while finalizing your test automation tool
- the capability of end-to-end testing requirements
- ease of test automation development and maintenance
- support of technology and platforms
- intuitive Reporting
- capability to support cross-browser, data-driven, API testing etc.
- DevOps integration
- Technical support
5. Design Reliable Robust Test Scripts
Developing an automated test keeping regression test in mind and which is easier to maintain quickly is the key to your test automation success. Make sure your test scripts are modular, Create and use as reusable scripts as possible. Keep your scripts small which will help you plug them as and when required in future, plus such scripts will be quicker to maintain. Enabling code quality check using Sonar or other available tools.
6. Execute Tests in Parallel
In Agile development, it is important to provide quick feedback for each commit. Parallel test execution help teams to become more productive and provide feedback quickly. This also gives the team time to do exploratory testing and improve quality.
7. Adopt Continuous Testing
Testing is a continuous activity. Continuous testing involves continuous review and optimization of the test suite to eliminate redundancy. Integrate your test automation scripts using Jenkins or any other integration tools to enable testing and feedback loop at every stage of development.
Adopt Mode-based Testing
Model-based testing is a modern software testing approach where test cases are generated from the models of application functionality/flow. It helps to expedite the testing and enable developers and testers to create faster and better software.
- Model-based testing optimizes the testing time and costs significantly
- It helps generate test cases automatically from models
- Minimal number of test cases to validate functionality and flow ensuring full coverage
- Enables test coverage improvement
- Help make the overall testing strategy less error-prone and more efficient
I have tried to provide a list of the above possible test automation success factors which should help you plan for better test automation in Agile. These are general tips and tricks and might change as per your project, product, or organization. Please let me know other best practices that you follow to have maximized the potential of test automation in Agile.