Ghinda iconGhindaAug 24, 2026 ~2 min source read

Exhaustive Testing Remains Impossible Even as LLMs Find More Bugs

Large language models are surfacing bugs in mature codebases, but they don’t change the fundamental limits of testing. Risk-based testing, human judgment, and external context still determine whether software is correct and fit for purpose.

Exhaustive Testing Is Still Impossible, Even with LLMs

Share this story

Send the public story page.

Useful takeaways from this story.

LLMs can surface new defects in long-stable software, but that confirms exhaustive testing was never feasible.

Verification (did we build it right?) and validation (did we build the right thing?) depend on context outside code and cannot be fully automated by LLMs.

Teams must preserve decision-making and risk assessment when adopting LLM-generated code to keep learning and steer outcomes.

# What the author observed LLMs are already finding bugs in mature, stable software. That shows exhaustive testing has always been impractical. Generative models accelerate discovery of faults, but they do not remove the fundamental constraint: you cannot observe every possible input, state, or interaction of a nontrivial system.

# Why exhaustive testing is impossible

# What LLMs actually add LLMs help by generating test cases, surfacing unfamiliar failure modes, and suggesting fixes. They are effective with text, so they can accelerate generation of hypotheses about what might go wrong. They do not, however, verify by themselves that a solution is correct in the real-world sense: they lack the external context necessary to answer whether the product fits the customer problem or whether the delivered behavior matches requirements.

# Two distinct challenges remain

  • Verification: confirming the system implements the specified behavior. This is partly addressable with tests and automated checks, but it still requires selecting what to verify.
  • Validation: confirming the system meets user needs and solves the intended problem. Validation requires business and market context outside the code and cannot be delegated to models alone.

# Practical implications for teams Adopting LLM-generated code at speed without accompanying mental models and risk assessment erodes the human learning loop. If developers and product people defer decisions to models, the team loses the ability to steer, prioritize risk, and interpret trade-offs.

Risk-based testing remains the right approach. Decide which behaviors and scenarios matter to your product and market, and generate or run tests that align with those priorities. Treat LLM outputs as accelerants for hypothesis generation, not as final authorities.

# Recommendations

  • Keep humans in the loop for decision-making about what to test and why. Developers, product managers, founders, and testers all participate in this work.
  • Define risk profiles tied to business goals and use those profiles to prioritize test generation and execution.
  • Use LLMs to expand coverage where they suggest plausible failure modes, but require human review of proposed changes and mental-model validation before merging.
  • Maintain feedback loops: when a model-produced test or fix finds a bug, capture the reasoning and update the team's understanding of system risks.

# Bottom line

More context around this story.

Generating test cases is the easy part
Dev iconDevAug 31, 2026

Generating test cases is the easy part

There is a ceiling on your test coverage and it is not technical. Running tests has been a solved problem for a long time. Runners are fast, parallelism is cheap, CI is a commodity. None of that touches the actual limit, which is that somebody has to sit down, read the requirement, work out what could go wrong, and wri

Keep reading in the app

Open the app view to save this story, compare related coverage, and continue from the same source.

Open in app