2 days

Deliver reliable working software sooner, for longer

Test-Driven Development is a foundational discipline for Agile software delivery.

On this course, you will learn how to design high-quality working software using tests as specifications, how to keep your code easy to change with refactoring, and how to scale the technique to complex, real-world architectures.

With an emphasis on the practical, this workshop is packed full of hands-on demonstrations (20%) and exercises (80%). Participants learn together with pair and mob programming.

Available Online & On-Site

High-quality instructor-led training remotely for small and medium-sized groups worldwide and in-person for large groups in the UK.

The TDD Cycle

Learn to design and develop in micro-iterations of 3 steps


Red Light

Write a failing test that describes what you want the software to do


Green Light

Write the simplest code to the pass the test



Improve the code where necessary to ensure it will be easy to change

TDD Good Habits

Make your Test-Driven Development more effective and sustainable

Assert First

Start with the "what", not the "how"

See The Test Fail

Test your test before you make it pass

One Reason To Fail

Write tests that pinpoint errors

What Should We Test?

Learn how to write tests that are better at driving good designs

Meaningful Tests

Write tests that ask questions the user cares about

Test Lists

Organise your thinking and track your progress with these powerful roadmaps

Obvious Implementations

Avoid falling into the "too many tests" trap by knowing when it's okay to take a leap

Duplication & Design

Create better abstractions through refactoring

Duplication vs Reuse

How to discover abstractions in our design by examining duplicate code

The Rule Of Three

How to avoid "leaky" abstractions and leaving refactoring too late

When To Leave Duplication In

How to balance removing duplication against other design needs

Approaches To TDD

Learn the two different styles of Test-Driven Development

Inside-Out TDD

Test-drive pieces of your internal design and then wire them together at the top

Outside-In TDD

Start on the outside and let the internal design emerge through refactoring

Pros & Cons

The advantages and disadvantages of both approaches

Scaling TDD With Test Doubles

Learn how to test-drive complex, multilayered architectures using stubs and mocks


Write fast-running unit tests for modules that need data from external dependencies


Write unit tests about interactions with external dependencies

Outside-In With Test Doubles

Test-drive multi-layered designs with external dependencies using stubs and mocks

Video Demo

Check out our free video series on TDD in Python, JavaScript, C# and Java


This course is available in JavaScript, Python, C# and Java versions


Prices are per person, and do not include travel expenses and VAT.

Pricing Band £
First 4-6 people* 800
Next 7-12 people* 550
Next 13-20 people** 300
Additional people on the day 800

* Maximum number for online training is 12

** UK only. Minimum number for on-site training is 12


This training workshop is aimed at JavaScript, Python, C# and Java developers with at least six month's experience programming in their chosen language. It's often attended by technical leaders who wish to keep their code craft skills up-to-date, too.

You will need a suitable computer with your favourite JS, Python, C# or Java editor/IDE installed. On-site courses will require a room large enough to comfortably accomodate all participants, good, reliable Internet access (Wi-Fi), and a data projector or suitably large TV (with HDMI input) that will allow participants to read code from the back of the room. You will find a pen and paper handy.

Online training is available whereever you are, pretty much. (There are a few countries it's sadly not possible to do business with, of course.) Onsite training is available across the UK. Ask us.

9/10 times, the trainer will be Codemanship founder and course author Jason Gorman. Jason has 38 years' programming experience and three decades of professional experience as a developer, technical lead and software architect. He's run hundreds of code craft training workshops over the last 20 years, and is a very experienced teacher and mentor. If, for any reason, Jason isn't available for your workshop, we'll inform you well in advance and offer you a trainer of similar industry seniority.

Yes. You will most definitely be writing code in this workshop. Business analysts, testers, project managers etc may find it useful to sit in and observe -at no charge - if they want to gain an understanding of Test-Driven Development and how it fits into the overall software development cycle, but this is 100% a hands-on workshop.

Since 2009, we've delivered training for developers working in C++, Swift, Go, Kotlin, Groovy, Ruby and many other languages. If your teams don't know JS, Python, C# or Java, ask us about customised courses.