Quality & Engineering Leadership
Test architecture
for faster feedback and dependable releases.
I help engineering organisations design testing around their product risks, system boundaries and delivery model. I find where coverage is missing, where tests duplicate effort and where unreliable feedback slows teams down, then define the target architecture and a roadmap for implementing it.
The real question
What does a green build actually give you confidence to release?
Answered in the exampleTest architecture for one journey
Delivered work
From my employment: work delivered in roles I held, not consulting engagements. Selected roles
4–5 days → 1–2 hours
Regression before releases of a global news publisher’s flagship app, with automation across the testing layers and on physical devices. The end point is automated test execution time.
Read the case study100% of endpoints
Automated API coverage at a UK property-technology company, from a Playwright framework introduced alongside desktop testing. It describes endpoint coverage, not every input, permission combination or failure scenario.
Read the case studyThree in four
Eval pass rate within a month at an AI-native language-technology platform, up from just over half, after unstable tests and assertions were improved. The failures left were known product issues.
Read the case study
01Questions
The questions
it answers.
How verification is designed, built and maintained: which risk is checked where, and what a pass proves. Quality strategy sets the priorities; CI/CD runs the checks in delivery.
What does a passing test prove?
Each check is reviewed for its scenario, its assertions and how it fails. A tag records intent, not the ability to detect a violation.
Which checks run when?
On a change, before a release or on a schedule. Selection follows change impact, dependencies and risk, and widens when the impact is uncertain.
Where is coverage missing, and where is it duplicated?
Checks trace to requirements and risks, so you can see what nothing would detect and what is verified twice at a costlier level.
What gets automated first?
Ordered by failure impact, defect likelihood, how late a failure would surface, cost and signal reliability. A payment or permissions flow that rarely changes can still come first.
02Decisions
Six decisions
shape the architecture.
Each is a trade-off. These are the ones I make with your engineers, and how.
Which risk is tested at which boundary?
Each risk sits at the lowest level that can detect it: rule variations in unit tests, interfaces in contract and integration tests, only the assembled journey end to end.
In practice: checks at each layer, and integration tests where the apps met their platformReal service, substitute or isolated environment?
A real dependency buys confidence at the cost of speed and stability; a substitute, the reverse. I choose per dependency, and back a substitute with a contract test.
How do tests stay repeatable and safe to run in parallel?
Each test creates its own data and cleans up, or runs against an isolated copy. I look first for shared accounts and suites that depend on running in order.
What makes a pass evidence?
A test asserts the outcome: the state that changed, the record written, the message sent. I look for tests that pass without checking what happened.
In practice: AI evals that test the featureWhat runs on a change, before a release and on a schedule?
Fast checks on every change; slower, wider ones before a release or on a schedule. An unchanged feature can still break when shared code, configuration or an integration changes.
Who owns a failing test, and how fast is it explained?
Every suite has an owning team, and a failure says where to look. Unreliable tests are quarantined with an owner and a date; checks tied to no live risk are retired.
03Example
One journey,
worked through.
An illustrative architecture for an invented document-processing product. Yours would start from your system and your risks.
- UploadThe customer sends a document through the web app.
- ValidationRules decide whether it is accepted.
- ProcessingA service converts it, calling storage and a third-party engine.
- Agent summaryAn AI agent reports what was done.
- DownloadThe customer collects the result.
A validation rule accepts or rejects the wrong document
- Where it is verified
- Unit and component tests.
- Why there, and what a pass shows
- Fast and precise across every rule variation. A pass shows each one accepted or rejected for the right reason.
- When it runs
- On every change.
Two services disagree about an interface
- Where it is verified
- Contract tests, plus integration against the real service.
- Why there, and what a pass shows
- A contract holds each side to what the other expects. A pass shows the consumer’s expectations met by the provider’s actual responses.
- When it runs
- Contracts on every change to either service; integration before merge.
The journey from upload to download breaks
- Where it is verified
- A few selected end-to-end tests.
- Why there, and what a pass shows
- Only the assembled system shows what the customer gets. A pass shows the download is the processed version of the upload, not just a success response.
- When it runs
- Before a release, and on a schedule.
A dependency is slow or fails part-way
- Where it is verified
- Failure and recovery tests, with the dependency substituted.
- Why there, and what a pass shows
- A substitute can time out or fail on demand; a real service cannot. A pass shows the job ends in a known state, with nothing duplicated or half-written.
- When it runs
- On changes to the integration, and on a schedule.
The agent says the work is done when it is not
- Where it is verified
- State assertions, plus a behavioural evaluation of the reply.
- Why there, and what a pass shows
- What the agent says is not evidence. A pass shows the stored result matches what the reply claims; the evaluation judges the reply over repeated runs.
- When it runs
- On changes to the prompt, the model or the tools, and before a release.
What a green build means here: each of these risks was checked where a failure would show, and the gaps are named.
What it assumes
Interfaces that can be put under contract, dependencies that can be substituted in a test, and a deployed environment close enough to production to trust.
What it leaves open
Performance under load, the security of uploaded content, accessibility and cross-browser behaviour. How many end-to-end tests are enough depends on where your incidents have come from.
04Scale
One architecture across teams,
repositories and stacks.
What changes when the architecture has to hold across teams, repositories and technology stacks.
Shared conventions
One definition of each test level, one vocabulary for product areas and risks, and results in one shape, whatever the framework underneath.
Team ownership
Every suite, shared fixture and environment has an owning team. A journey that crosses teams has a named owner too.
Adoption in steps
Reference patterns a team can copy into its own repository. New tests follow the conventions first; existing suites migrate where it pays.
From my employment
Modernising quality engineering at a UK property-technology company.
With QA leads across the UK and EMEA I set a shared direction for automation and tooling, then worked with them and the engineers to turn it into working frameworks for desktop and API testing.
05Approach
How I work
on it.
Diagnose the current system
I look at the architecture, the critical journeys, recent incidents, the suites you have, how they run and what they cost to maintain.
Design the target architecture
With your engineers I define the test boundaries, how dependencies, data and environments are handled, what the tests assert and who owns what.
Prove it on one workflow
I build or guide a pilot on a representative workflow, then judge it on feedback speed, reliability and how well a failure explains itself.
Roll out in steps
I order the migration and set up patterns your teams can reuse. Existing suites and frameworks stay unless the diagnosis shows they are the problem.
What you leave with
- A current-state assessment: coverage gaps, duplicated checks, unreliable tests and costly dependencies.
- A target architecture: test levels, system boundaries, and the strategy for environments and test data.
- Decision records: why each approach was chosen and what it trades off.
- A reference implementation: one representative workflow built to the agreed patterns, where included.
- A migration roadmap: the changes in sequence, with their owners, dependencies and effort.
- A measurement plan: feedback time, unreliable failures, investigation effort and defects that escape the targeted areas.
06Evidence
Delivered work,
from my employment.
Case studies of changes that were delivered and in use, not proposals. Each says what my part was and where its evidence stops.
Case studies
Sustaining quality across two mobile apps and their content delivery platform.
4–5 days → 1–2 hours of automated test execution
Lower-level checks, integration tests and end-to-end coverage validated components, the interactions between systems and key user journeys; a device farm extended automated testing to a broad range of physical devices.
Modernising quality engineering at a UK property-technology company.
15 hours → 1–2 hours of regression execution
Desktop automation moved from TestArchitect to FlaUI, and a Playwright API testing framework added service-level verification alongside desktop testing, covering 100% of endpoints.
Clearing the way for a release train at an AI-native language-technology platform.
Playwright test packs were measured on whether each run passed without a retry, not only on whether it passed in the end. A common cause of timing failures was fixed, with an automatic check against its return, and tests came back from quarantine once they passed first time, so more of the suite checked each build. The share of runs passing without a retry roughly doubled, though changes to the shared test environment likely did much of the work.
Making AI evaluations trustworthy at an AI-native language-technology platform.
AI evals were reviewed to make sure they tested the feature, not just the judges’ criteria. Tests that brought no value were corrected, and improving unstable tests and assertions raised the pass rate from just over half to three in four within a month.
Where is the feedback slow,
unreliable or missing?
Describe the system, how it is tested today and what gets in the way. A first conversation establishes whether to start with a diagnosis or a pilot on one workflow.