heisenbug Heisenbug 2021 SPb (06.04.2021 — 09.04.2021)

Structure and interpretation of test cases

img

This talk takes a deep dive into unit testing, looking at examples and counterexamples across a range of languages and frameworks, from naming to nesting, exploring the benefits of data-driven testing, the trade-offs between different styles of testing, how to get the most out of the common given–when–then refrain and knowing how far to follow it.

Throw a line of code into many codebases and it’s sure to hit one or more testing frameworks. There’s no shortage of frameworks for testing, each with its particular spin and set of conventions, but that glut is not always matched by a clear vision of how to structure and use tests — a framework is a vehicle, but you still need to know how to drive.

The computer science classic, Structure and Interpretation of Computer Programs, points out that "Programs must be written for people to read, and only incidentally for machines to execute". The same is true of test code.

This talk takes a deep dive into unit testing, looking at examples and counterexamples across a range of languages and frameworks, from naming to nesting, exploring the benefits of data-driven testing, the trade-offs between different styles of testing, how to get the most out of the common given–when–then refrain and knowing how far to follow it.