advanced 2 min answer

A platform's quality is poor despite a large test suite. What does quality architecture address that more tests do not?

qualityarchitecturetestabilityfeedbackatlassiandebugging
Show the full answer Hide the answer

What more tests do not address

Testability is a property of the architecture, not of the test suite. A system where components cannot be tested in isolation forces broad tests, and broad tests are slow, flaky and owned by nobody — so the suite grows without the confidence growing.

Adding tests to an untestable architecture produces more of what is already not working.

What quality architecture addresses

1. Boundaries that permit isolated testing. A component with a clear interface and its own data can be tested with stubs. One reaching into shared state cannot, so testing it requires the world.

2. Determinism. Code depending on wall-clock time, random values, ambient configuration or network state produces tests that fail for reasons unrelated to the change. Injecting these dependencies is an architectural decision that determines whether a fast reliable suite is possible at all.

3. Where correctness is enforced. Invariants enforced by the database — a conditional update, a constraint — need far less testing than invariants enforced by application code that reads, decides and writes. Moving the invariant to where the data is removes a class of race that tests find only sometimes.

4. Observability, which is the production half of quality. Some properties can only be verified in production, and the ability to verify them depends on instrumentation designed in rather than added later.

5. The feedback loop's speed, which determines change size, which determines defect rate. Pipeline speed is a quality control, not merely a convenience.

The shape that follows

A large fast layer plus a deliberately tiny slow one: unit tests for logic, component tests for one service with its real database and stubbed collaborators, contract tests replacing most cross-service integration tests, and a small number of end-to-end tests for critical journeys — not to catch interface breaks, which contracts handle, but to catch integration assumptions no contract expresses.

The diagnostic question

"What would have caught this defect, and why did it not exist?" asked for each escaped defect. The answer is frequently not "a missing test" but "the code could not be tested that way" — which is an architecture finding, and the one that actually reduces escapes.