An Introduction to Developer Testing: 2 Days

Day 1


Code exercise to make sure that everybody’s development environment is working and to assess the group’s knowledge of unit testing and testing techniques.

A dive into the core competencies in study groups of 2-5 people.


The landscape of developer testing

  • Background, concepts and motivation
  • Relation to traditional testing and agile testing

Unit testing

  • Naming
  • Arrange/act/assert
  • Lifecycle
  • Matchers

The first exercise is revisited and the test code gets improved.


Testability and its drivers

  • Observability, controllability, smallness ()
  • Indirect input/output
  • Temporal coupling, state, domain-to-range ratio

Fundamental testing techniques:

  • Boundary value analysis and equivalence partitioning
  • Truth tables and state transition testing.

Programming by contract (if time permits)

Day 2


Test doubles and dependencies

  • Stub, Mock, Spy, Fake, Dummy
  • Mocking frameworks
  • Dependencies: Constructor injection/Setter injection/factory method override

Exercise to practice the above adjusted to fit each study group’s level. 


Classic test-driven development

  • The TDD cycle: Red-Green-Refactor
  • Red to green patterns
  • Test order

Exercise that can be remade to fit London school  TDD for advanced participants 


Wrap up and air cushion if some part of the training took an unusual amount of time.

Remaining participant questions.

If time permits, optional topic like SOLID, BDD, London school TDD, duplication, more complex tests, etc.


Exercise in study groups  Hands-on coding exercise