A software developer at Murex Systems, blogger, speaker and squash player.
Passionate about software engineering and technology. Spend most of my free time reading books and articles or writing code for fun and exploration.
Philippe Bourgau, Ahmad Atwi, Christophe Cadilhac, Damien Menanteau, Patrice Dalesme
“Remember to add tests before you fix any bugs!” That’s very nice in theory, but a lot more tricky in practice.
We know we need to add tests, but it’s easier said than done. In legacy codebases, just setting up the objects for the test is most often an unjustifiable nightmarish 2 weeks of work. Mocks are a common workaround, but mocking legacy codebases usually makes them more difficult to change, not less!
In this hands-on mob programming code retreat, you will combine the Mikado Method with test data builders to build a baby-step plan to add your first test to an open-source legacy codebase. We'll draw a graph of nested test data builders so that we can instantiate test data, without mocks.
In more details:
* Test Data Builders simplify and factorize test data initialization
* The Mikado Method is a technique to split a large refactoring in a graph of baby-steps
* These baby steps remain deployable at any time and don’t block other development
* When we combine these 2 techniques together, we get an incremental plan to create test data builders
* At every step, test data is easier to initialize, the overall testability improves, helping everyone to add more tests
* Driven by usage, critical code parts naturally get testable first
* By making reuse and extend the easiest option, these techniques snowball
* Relying on a visual Mikado graph, these techniques are collaborative by design
During the session, every mob will choose to experiment with test data builders, the Mikado Method, or both, thanks to self-service guides. By the end, we will all compare the different techniques to identify the best ways to apply them.
After this session, you will be able to inject these contagious testing techniques into your team!