The world of automated tests can be quite overwhelming. Tests exist in a wide variety of flavours; like unit tests, integration tests, API tests, database tests, acceptance tests, UI tests, performance tests, regression tests, smoke tests, etc. … All of these have their usefulness for the specific purpose that they are serving. When zooming in further on unit tests specifically, we find that there are generally two different types of verification: state verification and behaviour verification. How and, most importantly, when should we apply these types of verification?
Then there are also two different approaches to TDD. Which of these should we choose? There’s a lot to learn about a seemingly simple practice as Test-Driven Development. In this talk we’re going to discover why it’s important to find a balance in TDD and how to accomplish this.