I did a bit of reading about test-driven development (TDD), which led me to behavior-driven development (BDD). I started out by looking at some slides on TDD by Andrzej Krzywda which provide a nice overview:
TDD (at a high level) is about visualizing goals
Software developers are responsible for the visualization of other people’s goals
Guidelines:
write tests [...]