Workshop: Well-Balanced Test-Driven Development

Nothing makes a system more flexible than a suite of tests. Nothing.
— Robert C. Martin (Uncle Bob)

Why attend?

Are unit tests causing you pain? Are they constantly failing whenever you make changes to your production code? Do you spend a lot of time fixing them when they break? Are they difficult to set up and run? Do you have a hard time maintaining or structuring your test code? Are they causing you headaches from time to time? Are you on the brink of giving up on writing tests altogether or have you already done so? Are you struggling with how to write tests before production code?

By the end of this workshop, participants will have gained the foundational knowledge necessary to build loosely coupled, highly maintainable and robust tests that are trustworthy and improve the overall code quality of your software applications. Attendees will be able to universally apply this knowledge throughout the rest of their careers as software developers, continuing their journey to mastery using Test-Driven Development.

Course content

  • Solitary and Sociable Tests
  • The Test Pyramid
  • State and Behaviour Verification
  • Exercise 1
  • Arrange, Act, Assert
  • DRY & DAMP
  • AAA Per Test Method
  • AAA Per Test Class
  • Naming tests
  • Exercise 2
  • Test Data Builder
  • Exercise 3
  • Single Assert per Test
  • Procedural vs Object State Verification
  • Exercise 4
  • Indirect Inputs & Outputs
  • Test Doubles
  • Fixture Object
  • Exercise 5
  • Inside-Out TDD
  • Outside-In TDD
  • Exercise 6
  • Test Boundaries
  • Hexagonal Architecture
  • Exercise 7
  • Integrated End-To-End Tests
  • Contract Tests
  • Abstract Test Cases
  • Parameterized Test Cases
  • Exercise 8
  • Functional Programming
  • Functional Core, Imperative Shell
  • Exercise 9

Target audience

This workshop is for developers who already have experience writing automated tests and want to improve upon their existing skills using Test-Driven Development. Although the exercises used in this workshop are using C# or Java, the principles and guidance are also broadly applicable to other platforms and programming environments as well (Python, JavaScript, C++ etc.).

Having a good understanding of the following topics will definitely make the most out of this workshop:

  • A decent understanding of an object-oriented programming language, preferably C# or Java.
  • At the very least some first experiences writing unit tests for production code.
  • Basic or intermediate knowledge of an xUnit test framework.
  • Basic or intermediate knowledge of a mocking framework (Moq, NSubstitute, Rhino Mocks, Mockito, etc.).

Details

Duration 2 full days
Maximum attendees 14
Location Online, on-site or a venue near Antwerp
Availability 2 months notice
Test-Driven Development (TDD) isn’t something that comes naturally. It’s a discipline, like a martial art, and just like in a Kung Fu movie, you need a bad-tempered and unreasonable master to force you to learn the discipline.
— Harry Percival ("Test-Driven Development with Python")

Contact me at infonull@nullprincipal-itnull.be or call +32 496 38 00 82

About

Thank you for visiting my website. I’m a professional software developer since Y2K. A blogger since Y2K+5. Author of Writing Maintainable Unit Tests. Provider of training and coaching in XP practices. Curator of the Awesome Talks list. Thinking and learning about all kinds of technologies since forever.

Contact information

(+32) 496 38 00 82

infonull@nullprincipal-itnull.be