Posted by johnsmart
on August 7, 2013 at 12:19 AM PDT
Over the next few months, I will be running a new advanced TDD/BDD workshop
in cities around Australia, including Sydney, Melbourne, Perth, Canberra and Brisbane (I also travel internationally a lot, so if you are interested but not in Australia, get in touch!). Here is the outline of the new course:
Learn TDD/BDD from the author of BDD in Action
Test Driven Development (TDD) is an essential technical skill for any modern development team. But TDD is notoriously hard for teams to adopt effectively without experienced guidance. The first steps are the hardest, and can decide whether TDD adoption will succeed or fail within the organisation. Don't leave it to chance! Let an expert practitioner put you on the right track!
Test Driven Development (TDD) is a core agile practice that underlies Agile development methodologies such as Scrum and XP. Behaviour Driven Development takes TDD further, making it more effective and easier to use. Some of the benefits of TDD/BDD include:
- Fewer defects! Teams practicing TDD regularly report 90% or more fewer bugs, significantly reduced maintenance costs, as well as higher quality, easier to understand, more flexible code.
- For developers, Behaviour Driven Development is a form of Test Driven Development that makes TDD easier to learn, easier (even fun!) to practice, and that results in higher quality, more focused, and more effective tests.
- Teams also experience a significant reduction in manual testing effort, especially when combined with automated acceptance testing.
- BDD encourages developers to write tests in the form of executable specifications. The unit tests act as comprehensive regression tests, making the code much easier and safer to change, and also provides illustrated examples of how to use the services and APIs in your application.
This course is a practical and hands-on introduction to Test Driven Development and Behaviour Driven Development. Students will learn how to write high-quality unit tests, or more precisely, "executable specifications", to write better designed, more maintainable and more reliable code. Students will also discover how BDD helps keep development focused on the real requirements, resulting in a higher quality product for the end user. These are skills that every developer needs to master.
Day 1 - BDD/TDD principles and fundamental practices
- Principles of Agile Requirements Gathering
- Discovering and defining requirements, BDD-style
- Writing high-level executable specifications
- Test Driven Development basics
- Introducing Test Driven Development
- BDD and TDD: discovering what tests to write
- Writing high quality unit tests using JUnit and Spock
- Writing unit tests as executable specifications
- Unit tests as living technical documentation
- Pair programming
- Coding exercises and code katas
Day 2 - Advanced Test Driven Development
- Data-driven tests
- Principles of interaction-based testing
- Types of mock objects: stubs, fakes and doubles
- Mocking with Mockito and Spock
- London-style TDD: discovering system design using mocks
- Refactoring strategies
- TDD for legacy code
- More coding exercises
To ensure an optimal learning experiences, class sizes are limited. Book early!