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. However, they can all be broken down into two broad categories: Solitary and Sociable tests. These can be seen as the equivalent of tests that either run very fast, and tests that have a wider variety of slowness.
When zooming in further on Solitary 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 workshop we’re going to discover why it’s important to find a balance in TDD and how to accomplish this.
- What are the characteristics of Solitary and Sociable tests.
- How to have a healthy mix of different kinds of tests.
- What is State Verification and Behaviour Verification. Learn about how and when to apply these types of verification.
- Learn about the anatomy of automated tests.
- Which techniques can be used to decouple tests from production code.
- Learn about the differences between Inside-Out TDD and Outside-In TDD, and how to apply both techniques.
- What are Contract Tests and how can they help with integration tests.
- What’s the impact of a Clean Architecture or a Functional Architecture on automated tests.
Why you should 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.
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.).