Blog
10 Test Automation Challenges and How to Fix Them

Virtuoso QA
Published on

Table of contents
Lorem ipsum
Lorem ipsum
Lorem ipsum
Lorem ipsum
Lorem ipsum
Most test automation projects start with big plans. Build a framework, automate the regression suite, cut testing time, release faster. A year later, a lot of teams find themselves somewhere else entirely: hundreds of tests that break every release, a handful of people who can fix them, and a regression cycle that still takes days.
The problem usually isn't automation itself. It's the way it's been built. Tests tied to fragile locators, written in code only a few people can read, and maintained by hand will always struggle to keep up with an app that changes every sprint.
In this guide, we'll go through the ten most common test automation challenges, why each one happens, and what actually fixes it. You'll also find a quick self-assessment to see where your team stands, and a practical plan for getting automation back on track.
The 10 Test Automation Challenges
# | Challenge | Main Symptom | What Fixes It |
|---|---|---|---|
1 | Test maintenance | Tests break every time the UI changes | Tests that find elements in several ways, with fixes your team approves |
2 | Slow test writing | New tests take days to build | Plain English tests, and drafting tests from requirements |
3 | Flaky tests | Tests pass and fail with no code change | Waiting for real conditions, stable data and isolated tests |
4 | Skills gap | Only a few people can write or fix tests | Tools the whole team can use |
5 | Limited coverage | Key journeys still tested by hand | Prioritising by risk, and making tests faster to create |
6 | CI/CD integration | Tests run too slowly or too rarely to help | Running tests in parallel, in the pipeline, on every change |
7 | Cross-browser coverage | Bugs only show up in one browser | One test that runs across every browser you support |
8 | Test data | Tests fail because the data changed | Test data kept separate, and created on demand |
9 | Enterprise applications | Each business system needs its own specialists | Reusable test building blocks across systems |
10 | Proving the value | Nobody can show what automation is saving | Tracking the right numbers from day one |
Test Maintenance Takes Over
This is the challenge almost every team runs into. Apps change constantly. A button moves, a class name is regenerated, a page is redesigned. Each change can break tests even though the app still works, and someone has to find and fix every one.
As the test suite grows, so does the upkeep. Before long, the people who should be adding new coverage spend most of their week keeping old tests alive, and the suite stops growing.
Why It Happens
Most scripted tests find each element using one fixed locator, like an ID or an XPath. When that one locator changes, the test fails.
How to Fix It
Use tests that find elements the way a person would, using several clues like the label, the type of element and where it sits on the page. When the UI changes, the tool can usually still find the element, and suggest an updated step for someone to approve.
Keep a person in the loop for those fixes. A test that quietly "fixes itself" might also hide a real bug.
Writing Tests Takes Too Long
With traditional frameworks, a single end-to-end test can take days to write, debug and stabilise. Features now ship weekly or even daily, so test writing falls further behind with every sprint, and manual testing fills the gap.
How to Fix It
Remove the coding step where you can. When tests are written in plain English, testers and business analysts can build them directly. Tools that suggest the next step as you write, or draft tests from the requirements you already have, cut the time even further.
Flaky Tests
Flaky tests pass one run and fail the next, without any change to the code. They're one of the fastest ways to lose trust in automation. Once people start saying "it's probably just flaky", real failures get ignored too.
Common Causes
Cause | What Happens |
|---|---|
Fixed waits | The test waits a set time, and fails if the page is slower than usual |
Shared test data | One test changes data another test relies on |
Test order | A test only passes if another one ran first |
Unstable environments | A slow service or a restart makes tests fail at random |
Fragile locators | Dynamic IDs change from one page load to the next |
How to Fix It
Wait for the thing you need, not a set amount of time. Give each test its own data. Make sure tests can run in any order. And track which tests fail intermittently, so you can fix or quarantine them rather than ignoring every failure.
The Skills Gap
Traditional automation needs programming skills: Java, Python or JavaScript, plus page object models, waits and error handling. People with those skills are expensive and hard to hire.
The result is a bottleneck. When only two or three people on a QA team can write and fix automated tests, everything waits for them. You haven't really automated testing. You've moved the manual work from running tests to maintaining them.
How to Fix It
Choose tools the whole team can use. Plain English tests let manual testers, business analysts and product owners contribute, while engineers focus on the harder problems. The people who know the business rules best can then turn that knowledge into tests directly.
Limited Test Coverage
Despite years of investment, many teams still test their most important journeys by hand. Automated coverage tends to stall at the easy stuff, because the complex journeys are the hardest to script and the first to break.
Limited coverage means limited confidence. If you can't check a release quickly, you can't release quickly.
How to Fix It
Start with risk, not volume. List the journeys where a failure would cost the most, like checkout, payments, claims or onboarding, and automate those first. Then make test creation fast enough that coverage can keep growing as the app does.
CI/CD Integration
Automated tests are most useful when they run on every change and report back quickly. Many teams struggle here. Set-up is complicated, suites take hours to run, and results are hard to make sense of, so tests end up running nightly or weekly instead.
How to Fix It
Run tests in parallel on cloud infrastructure, so a full regression suite finishes in minutes rather than hours. Trigger them from your pipeline on every change. Make failures easy to understand, with the failing step, screenshots and logs attached, so developers can act on them straight away.
To see how regression tests can run on every release without slowing the pipeline down, take a look at Virtuoso QA's regression testing.
Cross-Browser Coverage
Web apps have to work in Chrome, Safari, Firefox and Edge, on desktop and mobile. Testing every combination by hand isn't practical. Automating them with traditional frameworks often means maintaining browser-specific workarounds, which multiplies the upkeep.
How to Fix It
Write each test once and run it across every browser and operating system you support, on a cloud grid. Tests that find elements by what users see, rather than browser-specific details, hold up much better across browsers.
Test Data
Realistic tests need realistic data. Many teams end up with values written straight into their tests, which break when the environment changes, or a homemade data set-up that becomes yet another thing to maintain.
How to Fix It
Keep test data separate from test logic, so the same test can run with many sets of data. Create data on demand rather than relying on whatever's already in the environment. And use AI to generate realistic data for edge cases, without copying real customer records.
If you're comparing options for this, our roundup of test data management tools covers ten of them side by side.
Enterprise Applications
Enterprises don't run one app. They run SAP, Salesforce, Oracle, Dynamics 365, ServiceNow and many custom systems, often all in one business process. Each one has its own quirks, and traditional automation tends to need a specialist for each.
That creates silos. The Salesforce test team can't help with SAP, the SAP specialists can't help with the custom portal, and journeys that cross several systems fall between the gaps.
How to Fix It
Build tests from reusable building blocks, like "create a customer" or "approve a purchase order", that can be shared across teams and journeys. Use one approach for every browser-based system, so a journey that starts in Salesforce and ends in SAP can be tested in one go.
For Dynamics 365 and SAP, Virtuoso QA's composable testing gives you ready-made building blocks, so you start from a foundation rather than a blank page.
And for more on building tests that can be reused across journeys and teams, see our guide to reusable test cases
Proving the Value of Automation
Sooner or later, someone asks what automation is actually saving. Many teams can't answer, because they never measured where they started. Without numbers, automation looks like a cost rather than an investment, and budgets get cut.
How to Fix It
Measure a few things from day one, and keep tracking them:
Metric | What It Shows |
|---|---|
Time to write a test | Whether automation is keeping up with new features |
Time spent fixing tests | Whether upkeep is under control |
Regression cycle time | How quickly you can check a release |
Share of key journeys automated | Whether coverage is going where the risk is |
Bugs found before release vs after | Whether automation is catching what matters |
Flaky test rate | Whether people can trust the results |
A Quick Way to Estimate Upkeep Cost
Here's a simple illustrative calculation. Plug in your own numbers.
Halving that upkeep would free up more than 2,000 hours a year to spend on new coverage instead.
Quick Self-Assessment: Where Does Your Team Stand?
Answer these honestly. The more "yes" answers in the right-hand column, the more your automation is likely to be struggling.
Question | Healthy | Warning Sign |
|---|---|---|
How much of your team's automation time goes on fixing tests? | Less than a quarter | More than half |
How many people can write and fix automated tests? | Most of the QA team | Two or three specialists |
How long does a full regression run take? | Minutes to an hour | Days |
Do people trust a failed test? | Yes, failures get investigated | "It's probably just flaky" |
Are your riskiest journeys automated? | Yes | They're still tested by hand |
Can you say what automation saved last quarter? | Yes, with numbers | Not really |
How to Get Test Automation Back on Track
Step | What to Do |
|---|---|
Measure where you are | Record how many tests are automated, how much time goes on upkeep, how long regression takes and how often tests fail for no reason |
Pick one painful area | Start with the regression suite that breaks most, a journey that crosses several systems, or tests only specialists can touch |
Prove it on real releases | Run the new approach alongside the old one for a few releases, and compare the upkeep, speed and bugs caught |
Build for reuse | Turn common steps into shared building blocks before expanding, so coverage grows without upkeep growing with it |
Expand and keep measuring | Add more journeys and teams, and keep tracking the metrics above to show the value |
How Virtuoso QA Helps with Test Automation Challenges
Challenge | How Virtuoso QA Helps |
|---|---|
Finds elements using several clues, and when the UI changes, suggests a fix for your team to accept or reject | |
Slow test writing | Tests are written in plain English, StepIQ suggests the next step as you write, and Touchstone drafts tests from your specs and stories, with a named person approving each requirement |
Flaky tests | Tests run on a deterministic engine that waits for the page to be ready, so the same test gives the same result every run |
Skills gap | Manual testers and business analysts can write and read tests without code |
Runs from Jenkins, Azure DevOps and GitHub Actions, in parallel, with root cause analysis on every failure | |
The same test runs across 2,000+ browser and OS combinations | |
Test data | Data is kept separate from tests, and AI generates realistic test data from a plain English description |
One approach for any browser-based system, with ready-made building blocks for Dynamics 365 and SAP | |
Existing Selenium tests | GENerator converts existing Selenium tests into plain English, so you don't start from scratch |
Proving the value | Every run records what was tested, against which requirement, the result and who approved the test |
To see how this works on your own applications, take a look at Virtuoso QA's AI test automation.
And when someone asks exactly what was tested before a release, Virtuoso QA's release evidence has the answer ready.
Test Automation Challenges FAQs
Why do automated tests become flaky?
How much time should teams spend on test maintenance?
How can organizations overcome the test automation skills gap?
How does AI improve test automation?
What is the difference between AI native and AI add on test automation?
How do you measure test automation success?
Written by

Virtuoso QA
Guest Author
Written by the Virtuoso QA team or a guest contributor. These pieces draw on platform data, customer outcomes and the team’s work with enterprise QA leaders.












