A worry-free guide to developing software with confidence using Claude Code and Test Driven Development.
TDD with LLMs
Subhomoy Haldar
A worry-free guide to developing software with confidence using Claude Code and Test Driven Development.
Hint: Press Space to go forward. Shift + Space to go back.
In The Past
- Ship Fast → Skip tests
- Save time (short-term)
In The Past
- Code review = read + manual test
- Verify it works → Spot issues/smells
In The Past
- Requires 100% focus
- Merge conflicts, typos, bad assumptions
- Technical debt compounds silently
What’s The Solution Here?
- Guarantee correctness?
- Make reviews repeatable?
Enter:
Test-Driven Development
- Business logic → Code
- Executable
- Repeatable
- Never forgotten
Why Now?
- What changed?
- “Too much work”?
- “Ship first”?
Answer: Claude Code
- Natural language → Code
- Describe needs → Get output
- Massive time savings
Do We Still Need Tests With Claude?
“The fastest code is the code which does not run.
The code easiest to maintain is the code that was never written.”
- Robert Galanakis
Untested Code is a Liability
- My code = unproven until tested
- LLM output = trust even less
Good Thing About Claude…
- Automates menial code generation
- Use time savings for tests & guardrails


Traditional TDD
- Write tests [Hard]
- Run → Compilation errors [Easy]
- Stubs → Tests fail (Red) [Easy]
- Implement → Tests pass (Green) [Medium/Hard]
- Iterate
LLM Assisted TDD
1. Dictate business requirements in detail [Medium/Hard]
LLM Assisted TDD
- Dictate business requirements in detail [Medium/Hard]
- Claude writes tests [Easy]
LLM Assisted TDD
- Dictate business requirements in detail [Medium/Hard]
- Claude writes tests [Easy]
- Review tests → Add missed edge cases [Medium]
LLM Assisted TDD
- Dictate business requirements in detail [Medium/Hard]
- Claude writes tests [Easy]
- Review tests → Add missed edge cases [Medium]
- Claude: Run → Stubs → Implement [Easy]
LLM Assisted TDD
- Dictate business requirements in detail [Medium/Hard]
- Claude writes tests [Easy]
- Review tests → Add missed edge cases [Medium]
- Claude: Run → Stubs → Implement [Easy]
- Manual review [Medium/Hard]
LLM Assisted TDD
- Dictate business requirements in detail [Medium/Hard]
- Claude writes tests [Easy]
- Review tests → Add missed edge cases [Medium]
- Claude: Run → Stubs → Implement [Easy]
- Manual review [Medium/Hard]
- Refine requirements [Medium]
LLM Assisted TDD
- Dictate business requirements in detail [Medium/Hard]
- Claude writes tests [Easy]
- Review tests → Add missed edge cases [Medium]
- Claude: Run → Stubs → Implement [Easy]
- Manual review [Medium/Hard]
- Refine requirements [Medium]
- Loop or done
Practical Example
Upgrading Chart.js
Practical Example
- Requirement: Upgrade Chart.js
- Success criteria: Charts keep working
- Regression tests → Nothing breaks
- Iterate until pass
- Ready to refactor
Practical Example
- Upgrade versions
- Re-run regression tests
- Manual testing (high confidence)
Practical Example
- Code review (auto + manual)
- Resolve comments → Merge
- Done
Discussions