Testing Trophy
A distribution weighted towards integration tests rather than unit tests, appropriate where most of the risk lives at boundaries rather than in logic.
The pyramid assumes the risk is in the logic, so most tests should be small and fast. That assumption held for systems with substantial internal computation. It holds much less for a service whose job is to validate a request, call two dependencies and write a row — where nearly every plausible defect is at a boundary and a unit test with everything mocked proves only that the mocks were configured to agree with the code.
The trophy reweights accordingly: a thin base of static analysis and types, a modest set of unit tests for genuine logic, a heavy middle of integration tests that exercise real adapters against real infrastructure, and a small tip of end-to-end tests.
What makes it viable now is that containers made real dependencies cheap to start, which was the original reason the pyramid pushed work downwards. The shape is a consequence of where risk and cost sit, not a fashion — and a system with complex domain logic should still be a pyramid. Choosing the shape by architecture rather than by convention is the actual practice.