Testing, TDD and Catch2


As the original author of the C++ test framework Catch, now Catch2 as well as the Swift test framework front-end, Swordfish, I have a long history with automated testing in C++ and other languages.

Since 2018 I have been offering coaching and training in TDD and good test practices. I have run a two day TDD course at conferences such as CppCon, NDC TechTown, ACCU and others, as well as onsite for teams at companies within various industries - including gaming, video streaming and audio. During the coronavirus pandemic I continued to offer these courses remotely and feel that this can still be a very effective approach.

I can also provide more customised training based on this material - tailored to your needs.

Topics covered (depending on time and preference) include:

  • What is a test, and what different roles can it play?
  • What is TDD?

    • The TDD Cycle
    • The art and craft of TDD
    • The psychology of TDD and maximising mental flow states
  • Code coverage

    • 100% code coverage (and it’s not enough)
    • Beyond 100% code coverage
  • TDD is a design tool, rather than a complete testing strategy

  • Other forms of testing

    • Property Based Testing
    • Mutation and Fuzz Testing (high level)
    • Mocking and Faking (pros and cons)
    • Integration/ system/ acceptance testing
    • BDD
  • Testing at the right level

    • Fast feedback cycles
    • Avoiding slow, flakey or brittle tests
    • Testing implementation details
      • Why you usually shouldn’t
      • When it might be OK, and how to do it properly
  • Working with legacy code

    • Techniques and practices for getting (some) legacy code under test
    • Approval tests
    • Working with singletons
  • Exercises

    • We'll do at least three (usually four) exercises


If you'd like to book something, or to find out more, please send me an email