Failures are re-run rather than investigated
The suite has enough intermittent failures that a red result no longer means anything. At that point it costs maintenance and provides no signal.
A test suite is only valuable if a failure means something. Most suites reach a point where failures are routinely re-run rather than investigated, and from then on they cost more than they protect. We are engaged to design suites that stay trustworthy.
Quality engagements are commissioned when releases have become events rather than routine.
The suite has enough intermittent failures that a red result no longer means anything. At that point it costs maintenance and provides no signal.
Each release requires a manual regression pass that takes days, so releases are batched, which makes each one larger and riskier than the last.
A high percentage is reported while the paths that actually carry business risk are exercised by nothing, because coverage counted lines rather than behaviour.
A run takes long enough that developers stop waiting for it, so defects are found after the context in which they were introduced has been lost.
Setting up a scenario takes longer than testing it, so tests share state, become order-dependent and fail for reasons unrelated to the code.
Testing sits at the end of delivery, which is the point at which a design problem is most expensive to correct and most likely to be worked around.
What changes when testing is designed rather than accumulated.
Trust is the property that makes a test suite valuable, and it is fragile.
A suite accumulates. Tests are added against defects, against features and against audit requirements, and each is reasonable in isolation. What accumulates alongside is duration, flakiness and maintenance cost.
There is a threshold past which a red result no longer prompts an investigation, because experience says re-running is faster. From that point the suite provides no signal while still consuming maintenance, and the organisation is paying for confidence it does not have.
Recovering from that state is rarely a matter of adding tests. It usually means removing them: identifying the small set that genuinely detects regression, making that set fast and reliable, and deleting the rest.
Four commitments that shape every quality engagement.
Testing concentrates where a defect would be most costly. Uniform coverage targets produce thorough testing of code nobody depends on.
A smaller reliable suite is worth more than a large intermittent one. We will recommend deleting tests, which coverage-target thinking cannot.
Suite duration is a design constraint, not an outcome. Beyond a certain run time developers stop waiting, and the suite stops influencing behaviour.
Tests maintained by a separate function drift from the code they cover. We design suites the people changing the code can keep working.
Strategy answers what is tested, at which level, and what evidence a release requires. Without it, tests are written at whichever level is most familiar, which is usually the most expensive one to maintain.
We work from business risk: which failures would be most costly, which paths carry them, and what would have to break for the failure to reach production. That determines where the testing effort goes.
Automation architecture determines maintenance cost, which is where most suites fail. A suite coupled to the user interface breaks on every visual change; a suite with duplicated setup requires the same fix in fifty places.
We design layering, abstraction and shared fixtures so a change to the application is a change in one place in the suite. That property is what makes a suite survivable past its second year.
The same defect can be caught by a unit test in milliseconds or by an end-to-end test in minutes. The level is an economic decision, and pushing everything to the highest level is the most common and most expensive error.
We place logic tests at unit level, integration boundaries at contract or component level, and reserve end-to-end tests for the small number of journeys where the value is in the journey itself.
Flakiness is the single largest threat to a suite's value, because it converts a signal into noise and the conversion is irreversible once the team has learned to re-run.
We treat an intermittent test as a defect in the test, not as an inconvenience: quarantined, diagnosed and either fixed or deleted. The common causes are timing assumptions, shared state and dependence on external systems, and each has a structural fix.
Test data is the usual reason tests share state and become order-dependent. Where creating a scenario is slow, engineers reuse fixtures, and the suite acquires coupling that produces failures unrelated to the code under test.
We design data creation to be cheap so each test can own its state, and we handle production-like data through masking or synthesis rather than copying, which is both a privacy and a stability problem.
Tests that do not run on every change are documentation. Which tests gate which stage is a deliberate design: fast checks on every commit, broader suites before merge, and the slowest before release.
Gate thresholds are set so a failure is actionable. A gate that is routinely overridden is worse than no gate, because it also produces false assurance. This runs alongside platform engineering.
Most integration defects are contract defects: a field changed meaning, an error case was handled differently than documented, or a version was assumed compatible.
Contract tests catch these at the boundary, quickly, without requiring both systems to be running. For estates with many services this is usually the highest-value automation available and the most commonly missing.
Performance testing is only meaningful against a stated objective. Testing at an arbitrary load produces a number with no interpretation.
We establish the load profile the business expects, test against it, and look for the point at which behaviour degrades — which is more useful than confirming the system handles a load that was chosen to be comfortable.
Automated accessibility checking detects a meaningful but limited portion of WCAG failures. Reporting it as full conformance is a claim the tooling does not support.
We integrate automated checks into the pipeline for the failures they reliably catch, and define the manual assessment — keyboard operation, focus order, screen reader behaviour — that covers the remainder. Both are necessary, and we are explicit about what each provides.
Static analysis, dependency scanning and secret detection belong in the pipeline where they apply to every change. Their value depends entirely on threshold tuning: a scanner reporting everything it recognises produces a queue nobody triages.
We configure them to fail on what is genuinely actionable and report the rest. Broader assessment is cybersecurity consulting.
The most common engagement is not building a suite but recovering one. The instinct is to fix every failing test, which is expensive and frequently misdirected.
We start by establishing which tests have ever caught a real defect. Suites typically contain a large proportion that have never failed for a genuine reason and a smaller set doing all the work. Making that set fast and reliable — and deleting a great deal — usually restores trust faster than repair.
Where quality is a separate function, it becomes a stage that delivery passes through and defects become someone else's finding. Where it belongs to the delivery team, testing informs design.
We design suites the delivery team can maintain and establish the practices that keep them maintained: tests written with the change, flakiness treated as a defect, and suite duration owned by someone.
Strategy, automation architecture and a working reference implementation your team extends.
Engaged before significant code exists, when structural decisions are still cheap to change. Produces the target-state architecture, the technology selection rationale, and a sequencing plan the delivery team can execute.
Engaged when delivery has slowed, costs are rising, or a design that fitted the original problem no longer fits the current one. Diagnostic first: we establish what is actually causing the drag before recommending change.
A named architect available as the system evolves, covering design review, technology decisions and course correction. Delivered under a subscription rather than a fixed project scope.
How a quality engagement runs.
Your release process, current suite and where confidence is actually lacking.
Suite duration, flakiness rate, coverage of business-critical paths and which tests have ever caught a real defect.
Risk-weighted strategy and automation architecture, with the maintenance cost of each choice stated.
A representative slice automated end to end and running in CI, so the design is proven rather than described.
Your engineers extend the suite while we review, so the practice transfers rather than the deliverable alone.
Documentation, conventions and the maintenance practices that keep the suite trustworthy.
Chosen against the application, the team and the maintenance cost of the resulting suite.
The idiomatic framework for the language in use, because an unfamiliar one reduces the tests written.
Playwright, Selenium and equivalents, applied to the small number of journeys that warrant end-to-end cost.
Device and emulator automation for iOS and Android, including the fragmentation that drives real failures.
Boundary verification without requiring both systems to run.
Load generation and analysis against a stated business volume.
Automated WCAG checks in the pipeline, scoped honestly to what they detect.
Code and dependency scanning with thresholds tuned to be actionable.
Generation, masking and synthesis so tests own their state.
GitHub Actions and equivalents, with gates placed by stage.
Failure trend, duration and flakiness tracked over time rather than per run.
Sector determines the regulatory evidence testing must produce and the consequence of a defect reaching production.
Validation evidence and defects with clinical consequence.
IndustryRegulatory evidence and calculation correctness that must be demonstrable.
IndustryComplex rules engines where combinatorial coverage must be reasoned about.
IndustryCheckout and payment paths where a defect has immediate commercial effect.
IndustryIntegration with equipment and systems that cannot be exercised freely.
IndustryScale and provisioning flows with many interacting systems.
IndustryAccessibility obligations and long-lived platforms.
IndustrySeasonal peaks and broad accessibility requirements.
IndustrySafety-relevant systems with formal verification expectations.
IndustryTracking and routing correctness across partner integrations.
Coverage-target thinking cannot produce that recommendation, and it is frequently the fastest route back to a suite the team trusts.
Every automation choice carries a maintenance cost. We state it when the choice is made rather than letting it be discovered in year two.
Your engineers extend the suite during the engagement while we review, so the practice stays after we leave.
A named lead owns the technical outcome and remains the point of contact for the engagement.
Not by fixing every failure. Start by establishing which tests have ever caught a real defect — suites typically contain a large proportion that never have, and a smaller set doing all the work. Making that set fast and reliable and deleting a great deal usually restores trust faster than repair.
None. A percentage measures lines executed, not behaviour verified, and optimising for it produces thorough testing of code nobody depends on. The useful question is whether the paths carrying business risk are exercised, which is assessed rather than counted.
No. Automation has a maintenance cost that recurs for the life of the test. Exploratory testing, one-off validation and areas changing rapidly are frequently better done by a person. We are explicit about where automation is poor value.
Short enough that developers wait for it. Beyond roughly that threshold they stop, and the suite loses its influence on behaviour. Duration is a design constraint we work to rather than an outcome we report.
The delivery team. Tests maintained by a separate function drift from the code they cover, and defects become someone else's finding rather than an input to design. A specialist quality role is valuable for strategy and hard testing problems, not as a stage delivery passes through.
Usually yes, and usually we recommend it. Framework migration is expensive and rarely the actual constraint — the problems are typically architectural: coupling to the interface, shared state, and setup duplicated across the suite. Those are fixable without changing tooling.
No, and any tool claiming otherwise is overstating. Automated checks detect a meaningful but limited portion of failures. Keyboard operation, focus order and screen reader behaviour require manual assessment. We integrate both and are explicit about what each provides.
By making creation cheap enough that each test owns its state, which removes the shared fixtures that cause order dependence. Production-like data is masked or synthesised rather than copied — copying is both a privacy exposure and a source of instability when the source changes.
It verifies that two systems agree on the interface between them, at the boundary, without requiring both to be running. If you operate several services and most integration defects are found late, it is usually the highest-value automation available and the most commonly missing.
That is generally the point. Where regression confidence is automated, releases stop needing a multi-day manual pass and stop being batched — and smaller releases are less risky than larger ones. The lengthening version of testing is the one applied as a stage at the end.
Software development builds the system and includes testing within it; this is a quality engagement for systems built elsewhere. Platform engineering owns the pipeline; this defines what it should run and where.
Typically a fixed-scope assessment and strategy, then a reference implementation, with optional ongoing support through a subscription while your team extends the suite. Pricing is transparent and includes GST. The first consultation is free.
Request a test suite assessment
A free first consultation covering your release process, your current suite and where confidence is actually lacking — followed by an assessment that says plainly what to keep, what to make fast and what to delete.
No cost, no obligation. Pricing is transparent and includes GST.