Overcoming Top Challenges with In-Sprint Test Automation
By Shreya Bose, Community Contributor - October 30, 2022
As always, before addressing the challenges, let’s begin with the concept itself.
What is In-sprint Test Automation?
In-sprint test automation refers to the practice of testing the business requirements of an application feature within their development sprint. In other words, all aspects of the feature, whether business-relevant or technical, are verified for optimal performance within a single sprint, leaving no test backlog.
The intent is to deliver each functionality, in its entirety, within a single sprint. Since sprints only tend to last a couple of weeks, it is not possible to implement comprehensive test coverage manually. Automation testing is the only way to run enough tests on each feature and improve test coverage so as to be assured of its production readiness. Regression test suites are also updated with every sprint to ensure that changes and new code have not disrupted existing functionalities.
To achieve optimal levels of in-sprint test automation, consistent collaboration must be set up among all involved teams – BA, Scrum Master, Development, and QA. In this case, software quality must be reoriented as the entire team’s responsibility, rather than just being owned by QA.
The process of automating in-sprint tests can be somewhat complicated, especially when a team is just beginning to build it into their CI/CD pipeline. BAs have to create and define user stories specific enough that developers and testers can create code from them. For testers, the challenge is somewhat greater since they are expected to create test scenarios and test cases for features before they are even developed. They must understand user stories and conceptualize possible scenarios that the end-user is likely to face when using said features, and build test cases for that concept.
While developers have to write and put code through unit tests, QAs have to create automated test code, sometimes for parallel testing – all with the assistance of user stories rather than actually developed code.
Also Read: Stages of Development Sprint Cycle
Major Benefits of In-Sprint Automation
In-sprint test automation provides significant benefits that make it worth the time, effort, and resource investment. The most emphatic benefits are mentioned below, but one can harness many more if this approach to testing is applied effectively:
- Eliminates Automation Backlog: In-sprint test automation intends to complete all tests within a single sprint, almost in tandem with product development itself. Unlike traditional testing protocols that defer testing until after the product or feature delivery, in-sprint tests are built based on the user stories rather than waiting for the product code to come through before building the test code. Doing so prevents automation backlog since one can execute all tests simultaneously with software development.
- Facilitates Shift Left Testing: In-sprint test automation is a classic example of shift left testing, as it moves tests earlier in the development pipeline. It also automates tests, which adds to the efficacy, accuracy, increased coverage, and speed that the shift left approach seeks to achieve.
- Facilitates earlier time to market: By aligning tests in tandem with development, the team gets more done within the same time. The time required for testing is noticeably reduced, contributing to faster releases and a higher competitive edge.
- Promotes inter and intra-team collaboration: The fact that software quality should be a shared responsibility has been well-established by now. In-sprint automation testing requires individuals across teams – devs, testers, product managers, sales personnel, customer success experts, researchers, etc. – to work together. To extract the maximum benefits of in-sprint test automation, an organization must invest in creative, collaborative mindsets and mechanisms.
Also Read: Whose Responsibility is Quality Management?
Primary Challenges in In-Sprint Test Automation (and how to overcome them)
If you’re considering the implementation of in-sprint automation testing, it is imperative that you and your team have end-to-end clarity on what challenges might show up in the process.
Here are a few that you will almost inevitably encounter:
Choosing the right automation tool/framework
If a team has already started with automation, they might have an easier time using the same tools to move tests in-sprint. It is possible, however, that the tools and test scripts will have to be recalibrated to match the expectations of speed and accuracy within the sprint.
However, if a team decides to move from a largely manual test setup to in-sprint automation, they will have to spend time researching and trying out tools to understand which one meets their technical, business and industry requirements. Building automation scripts requires a certain measure of expertise, especially when they must be shaped using users stories and not actually finished software. You must also spend time and effort training QAs to use a new tool.
Solution: In all honesty, it is best to hire an expert in this case. It would be prohibitively expensive to hire an entire team of automation experts for most businesses, so hiring a single person with requisite experience can be a compromise. Allow this person to supervise the selection of the right tool, creating a roadmap for adopting automation, and training existing QA personnel.
This will, of course, require an investment of time, money, and human resources. As with most automated testing, the initial increased expenditure will generate significant ROI in the long run by instituting faster and more reliable tests.
Inadequately Detailed User Stories
Testers have to build test scenarios and scripts from user stories, which product managers are responsible for shaping and delivering. However, the PM doesn’t always immediately have comprehensive details on each feature, including customer expectations and industry success standards. If they are not able to provide this data, testers cannot determine acceptance criteria for tests, which defeats the entire purpose of testing.
Solution: Start creating high-level scenarios that can test the feature’s efficacy in the most common real user conditions. Additionally, the shift left practice of including testers in product brainstorming sessions will also give them the context to create more nuanced tests that cover more scenarios.
Accessing a sufficient number of real browsers and devices
When test scripts are shaped off user stories, they can lack the specificity of tests created to match actual software code. In this scenario, verifying product behavior in real user conditions is more important than ever. Otherwise, test scripts just become a product of guesswork, and the results of such tests cannot be taken seriously.
Solution: Use a cloud-based test infra platform like BrowserStack that provides real browsers and devices. BrowserStack Automate, in particular, allows users to access 3000+ real browsers and devices for automated testing via Selenium, Cypress, Playwright, and Puppeteer. To further accelerate in-sprint testing, Automate allows parallel testing – running tests simultaneously on different browser-device-OS combinations.
Estimating test time & dependencies
A user story does not always provide the details necessary from a tester’s point of view. It is quite common for testers to inaccurately estimate the complexity of the feature, and consequently the test. They can also miscalculate the time needed to complete the test, as well as its dependencies – test data, device models, browser versions and the like.
Wrong estimations, especially when repeated, slows down testing and can stretch tests beyond the timeline of a single sprint. This stops test automation from actually being “in-sprint”.
Also Read: 7 Software Test Estimation Techniques
Solution: If a QA team finds itself constantly having to redesign code for performance, security, and validation issues, there is a fundamental gap in understanding between PMs and testers. To address this, QA managers might have to specify what user stories should specify, so they can make better estimations. Regular meetings to update QA teams on product-centric decisions can also keep them on the same page and give them a closer idea of what tests will require.
It is imperative that every team must agree on product requirements and the software’s expected performance in production. Without such consensus, the QA team cannot finalize the acceptance criteria that would qualify tests as passed/failed.
Unfortunately, achieving such a consensus is far easier said than done. Creating seamless collaboration between teams requires a change in not just workflows, but how individuals approach the idea of development and testing itself. Across all teams, individuals must view software quality as a collective responsibility rather than just being QA’s job.
Without such consensus, QA teams will find themselves creating tests that don’t meet customer expectations as well as product requirements (business and technical). Additionally, they might have to deal with changing requirements (often last minute) from different teams. Needless to say, this will slow down tests, confuse and frustrate testing, and result in the delivery of a sub-par product.
Add to that the need to ensure that any new code does not disrupt the software’s existing functionality, and you’ll see how the whole process becomes a nightmare to manage, especially within narrow timelines.
Solution: This problem can only be meaningfully and sustainably solved with a change in culture. Management must take the time to convey the importance of collaborative processes to every team. The company’s reward structure might also need to be restructured to incentivize sustained cooperation and blend it into the everyday fabric of work.
Once again, include testers from the very beginning of product development so that they have complete context on how it is meant to perform. If QAs stay on top of all ideation and industry research (conveyed in team-wide sessions), they naturally gain the insight required to create tests even before product code is complete.
Implementing in-sprint test automation is, by no means, a simple task. But, as explained above, its benefits are worth the investment. The speed with which end-users expect flawless software to be delivered requires in-sprint test automation to be consistently executed, and executed well.
To achieve such streamlining, it is important to understand the in-sprint automation challenges you have to overcome. This article outlines the most common challenges, and lays out the possible solutions to them. It is possible that the solutions will differ based on the nuanced working of specific teams and companies, but for the most part, they will serve their purpose of facilitating smarter, faster and more dependable testing.