Test Driven Development – Deep Dive Workshop
By now Test-Driven Development (TDD) is a well-known and appreciated practice exercised by many development teams around the globe.
Unlike the name suggests, TDD is not a testing technique but a development technique that results in cleaner, high-quality code. Implementing effective and useful TDD is a complicated task that requires developers to have both discipline and familiarity with a set of test automation tools.
This 2-day workshop explains the TDD as a design methodology, briefly introduces the tools, and then dives into complex issues of real-world problems: APIs, complex integrations, TDD in legacy code, and more. It includes hands-on exercises (about 50% of the workshop’s duration). Attendees will practice the needed techniques to start testing both new and existing code.
The workshop is intended for: Software developers and software team leaders.
Workshop length: 2 days.
Workshop goals
Following the workshop, attendees will be able to:
- Describe where unit testing fits in the quality process
- Decide which tests to write for what
- Break down requirements into test cases
- Use TDD to develop new code
- Use TDD on legacy code
- Use characterization tests for locking legacy code
- Refactor code to make it more testable
- Refactor tests to make them more maintainable
Workshop agenda
- TDD, ATDD and BDD – what are the differences between approaches
- Simple design and TDD
- Coding by intention
- TDD as a design methodology
- Clean architecture and testability
- Writing TDD with code using frameworks (e.g. Java’s Spring)
- Using TDD in legacy code pictures
- Programming APIs and end-to-end scenarios with TDD
- Refactoring for testability as preparation for TDD
- Characterization tests and approval tests
Prerequisites
- Familiarity with unit testing is required. The basics can be covered in the TDD Basics workshop.
- Attendees need to have their own laptops ready and download the exercises beforehand.
- The training materials are targeted to either Java, JavaScript, Python, C, C++ or C# developers.