Test-Driven Development (TDD)

Read more about CodemanshipIn co-operation with Codemanship Ltd, we are proud to present this training performed as a hands-on workshop. It covers the key elements of Test-Driven Development (TDD), a vitally important development discipline, with maximum opportunity for practice.

As an attendee You will learn about the TDD process, about good habits that make TDD more effective and sustainable, and how to refactor code to eliminate quality issues that will make continued development easier.

You will work on your own computer using your own development tools, and gain practical experience of the TDD discipline in a programming environment you know. Preferably, You work in pair with another participant.

The exercises are designed to be just challenging enough to stretch You, without being too difficult to complete within the training. You can tackle them in any object oriented programming language.

You can chose to attend two days or add-on a third day to get even more extensive training.

Day #1

Why Do TDD?

  • Building the right thing
  • Keeping the design simple
  • Making code easy to change
  • Software that always works
  • Sustaining the pace
  • Reliability vs. Productivity

Introduction to TDD

  • Red-Green-Refactor
  • The Golden Rule

Working Backwards from Assertions

Testing Your Tests

  • Fluent Assertions

One Reason To Fail

Writing Self-Explanatory Tests

  • Choosing good test names
  • Naming test data
  • From examples to rules

Speaking The Customer's Language

  • Requirements word clouds
  • Conceptual correlation

Triangulating Designs

  • Triangulation patterns
  • Obvious implementation & TDD “gears”


  • Code smells
  • Design clues in code duplication
  • The refactoring discipline

Design Principles

  • Simple design
    • Make it work
    • Make it readable
    • D.R.Y.
    • Simple parts
  • Tell, don’t ask
    • Feature envy
  • S.O.L.I.D.

Day #2

Test Doubles

  • Stubs
  • Mocks
  • Dummies
  • Dependency inversion
  • Dependency injection

TDD with External Dependencies

TDD with the Customer

  • Specification By Example
  • ATDD & BDD
  • User Stories
  • Test completeness & test scope
  • Tests we didn’t think of
  • Definitions of “done”
  • Vertical slicing
  • Executable specifications

Driving Design from Customer Tests

  • Starting with a failing customer test
  • Outside-in TDD
  • Identifying the work
  • Identifying the data
  • Assigning object responsibilities
  • “Wiring” objects together with collaborations
  • Classic TDD vs “London” School

Day #3

The Testing Pyramid

  • System tests
  • Integration tests
  • Unit tests
  • Optimising test execution

TDD & Continuous Delivery

  • Continuous Integration
  • The check-in “dance”
  • Trunk-based development
    • Feature toggles vs Feature branches

TDD & Legacy Code

  • What makes code “legacy”
  • Change points
  • Inflection points
  • Breaking dependancies
  • The Boy Scout rule

Mastering TDD

  • Why some teams fail at TDD
  • Building habits
  • Under the radar
  • Under-promising & over delivering
  • TDD adoption timescales

Beyond TDD

  • Data-driven & property-based tests
  • “Load-bearing” code
  • Mutation testing
  • Test-driving the “untestable”
  • Non-functional TDD
  • Clean Code & Continuous Inspection


You can choose between taking the two first days or the complete three day training.

Length: 2 days
Price: 18 000 SEK (excl. VAT)
Length: 3 days
Price: 24 000 SEK (excl. VAT)


Date: June 11-13,  2019
Time: 09.00-17.00
Location: Softhouse, Campus Gräsvik, Karlskrona
Language: english

  • You can work with the OO language of your choice during the training.
  • You need to bring your own laptop with the appropriate IDE for your chosen OO language.
  • You also need a unit testing tool and a mock object framework, and be familiar with their basic use.
  • Please be advised, we do not provide training in the use of specific unit testing or mock object frameworks.


Profile Photo

Jason Gorman

Ask me about the training




Profile Photo

Hannah Cole Tugendraich

Ask me about practicalities


+46 (0)761 832 464