Next-Gen App & Browser Testing Cloud
Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

Verification-driven development is used in at least three incompatible ways. This covers what each one means, how the AI-codegen version actually runs, and what separates a check that proves something from one that only looks like it does.

Saurabh Prakash
Author

Samyak Goyal
Reviewer
Last Updated on: August 26, 2026
An agent returns four hundred lines that compile, run, and pass the checks it wrote for itself. Reviewing it properly would take longer than writing it did, so it gets approved. Nobody in the loop can say what was actually proven.
Verification-driven development is the name attached to the response, and it is worth knowing before you adopt it that the name is doing three different jobs depending on who says it.
TL;DR
In its current usage, verification-driven development means every change ships with executable evidence that it behaves as intended, generated as part of making the change rather than in a later phase. The proof travels with the diff and reruns on subsequent changes.
That definition is worth stating carefully, because the same three words describe at least two older practices that share almost nothing with it operationally. If you adopt the term without saying which one you mean, two people in the same planning meeting will agree on the label and disagree about the work.
| Sense | What "verification" refers to | Where it is used | Cost profile |
|---|---|---|---|
| Formal methods | Mathematical proof that a model satisfies stated properties, using model checkers and proof assistants. | Safety-critical and cyber-physical systems, where failure is not recoverable. | Very high. Specialist skills, and effort measured in months. |
| Concurrent unit testing | Unit tests written alongside features, tracked through coverage and regression runs. | General engineering practice, long predating current AI tooling. | Moderate, and largely indistinguishable from disciplined testing. |
| AI-codegen sense | Executable behavioural evidence produced by the agent in the same session as the code. | Teams shipping agent-authored changes faster than humans can read them. | Low per change, but requires a human gate on assertion quality. |
The rest of this page uses the third sense, because it is the one driving current interest and the only one where the tooling question is unsettled. The first two are mature and well documented elsewhere.
Writing code got dramatically cheaper. Reading it did not, and reviewing it is bounded by the same human attention it always was. When the volume of change rises and the review capacity stays flat, the constraint moves to whatever confirms the change was correct.
That shift is now being argued in the research literature rather than only in vendor material. In Rethinking Software Engineering for Agentic AI Systems, Alenezi analyses verification as a critical quality bottleneck and argues that code is "transitioning from a scarce, carefully crafted artifact to an abundant and increasingly disposable commodity", concluding that the discipline should reorganise around orchestration, rigorous verification of AI-generated outputs, and structured human-AI collaboration. The paper names verification-first lifecycles as an open research challenge.
Read that as a description of where the expensive step now sits rather than as a prediction. If code is abundant and proof is scarce, the scarce thing governs how fast anything ships safely.
The useful comparison is not against test-driven development, which is where most write-ups start. It is against the two things teams shipping agent-authored code are actually doing today.
Six steps, and the value sits in steps three and six rather than in the authoring.
Step three is where the tooling question lives, because an agent that writes code cannot confirm rendered behaviour without something that drives a real browser. Kane CLI is built for exactly that position: a terminal-native browser agent for developers, AI coding agents, and CI pipelines that validates rendered UI in a real Chrome browser from natural-language objectives, closing the gap between the code an agent generated and evidence that it works. Its Test.md format persists those objectives as markdown files, which is what makes step four produce something reviewable rather than a log.
The claim underneath this whole practice is that a check can run cleanly, report success, and prove nothing. That is usually asserted. We ran it.
Method. Two checks against the same page on the TestMu AI Selenium Playground, in one Chrome session on Browser Cloud. Check A is structural, the kind of assertion a hurried test-after pass produces: the page rendered and the submit control is present. Check B is behavioural: type a message, submit it, and assert the output area shows it. We ran both on the healthy page, then broke the behaviour while leaving the markup byte-identical, and ran both again.
HEALTHY PAGE
A structural PASS 132 ms
B behavioural PASS 2,952 ms
MUTATION: submit handler suppressed (markup unchanged)
BROKEN BEHAVIOUR
A structural PASS 91 ms <-- still green
B behavioural FAIL 9,755 ms timeout waiting for outputThe structural check stayed green through a regression that made the feature completely non-functional, and it ran faster while broken, 91 ms against 132 ms, because it never touched the behaviour in the first place. A reviewer looking at a passing check would have no signal that submitting the form did nothing.
One detail from building this is worth passing on, because it is a trap for generated checks. Our first behavioural check used a programmatic value-set on the input rather than real keystrokes, and it failed on a perfectly healthy page, because the component only updates on genuine key events. A check written that way is a false negative that looks like a product bug, and an agent producing checks without running them against a working build will ship exactly that.
The mutation was applied deliberately in-page rather than observed in production, and this is one page on one account. What it establishes is narrow and sufficient: presence assertions cannot detect behavioural regressions, so a suite built from them reports health it has not measured.
Note: Kane CLI runs natural-language verification objectives against a real browser from the terminal or CI, so an AI coding agent can confirm the change it just made actually works before opening the pull request. Try TestMu AI free!
The measurement above sets the bar. A check earns the word proof when failing it would require the behaviour to be wrong, and nothing else about the system to change.
Coverage deserves a specific warning here, because it is the metric most often offered as evidence. Coverage records which lines executed, not whether anything was asserted about them, so a suite can execute nearly a whole codebase while checking very little of it. Treat it as a map of what was visited, never as a measure of what was proven.
Take one check an agent generated for you this week and break the behaviour it claims to guard. If it stays green, you have learned more about your suite in five minutes than a coverage report will tell you in a quarter, and you now know which of your checks are decoration.
That is the whole practice compressed into one habit. Proof is not what ran; it is what would have failed. Our measurement showed a structurally valid check passing in 91 milliseconds against a feature that no longer worked at all, and nothing in the pipeline would have flagged it.
For the step where an agent has to confirm rendered behaviour rather than assert markup, the Kane CLI getting started documentation covers running a first verification objective from the terminal, and our walkthrough of verifying vibe-coded builds with Kane CLI shows the loop running end to end on a real project.
Author
Saurabh Prakash is an Engineering Manager at TestMu AI (formerly LambdaTest), where he leads engineering on agentic AI development and scalable system architecture for the quality engineering platform. He has also contributed to Test at Scale, the company's open-source test intelligence platform. He brings over 9 years of experience across Node.js, Java, Spring, MVC, data structures, algorithms, and scalable system design, with earlier roles as SDE 2 at Zomato, Senior Software Engineer at LogicHub, and Software Development Engineer at Directi. Saurabh holds a B.Tech in Computer Science and Engineering from Delhi Technological University.
Reviewer
Samyak Goyal is a Senior Member of Technical Staff at TestMu AI engineering Kane CLI, the command-line tool that runs browser automation from the terminal, where a flow described in natural language executes in a real Chrome browser and returns pass or fail with shareable proof. He is a backend engineer with 4+ years of experience, previously an SDE at Innovaccer, where he built APIs, introduced Kafka, and cut deployment from weeks to hours. Samyak also builds multi-agent systems, skill-orchestration frameworks, and a personal copilot that indexes 200+ microservice repositories.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance