Skip to content


BDD in Action: Advanced TDD/BDD Master class

New Testing and TDD Workshop 

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.

Course Overview

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.

This workshop focuses on the approach as much as the tools themselves, and will discuss TDD tools for both JAVA and .NET. Students will have the option of doing the labs either in Java (JUnit, Mockito, Spock) or .NET (NUnit, Moq, Specflow).

Course Outline

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
  • Using mocking libraries
  • 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!

John Ferguson Smart is a leading international expert in the domain of behaviour driven development, automated testing and software life cycle development optimization. John is a renown speaker at international conferences and events. John is the author of BDD In Action, “Jenkins: The Definitive Guide”, and “Java Power Tools”. John is also the founder and lead developer of the Thucydides project, a new open source library that helps teams organize and implement more effective automated acceptance tests.

This is a hands-on, practical course designed to teach specialised skills for real-world development situations. It is thus primarily aimed at a developer audience:

  • Java developers
  • Software architects
  • Technical project managers

This is above all a practical, hands-on workshop. We believe that the best way to learn BDD and TDD is by doing. So the course contains approximately 60-70% lab work. For scheduled public courses, we will provide a fully configured computer for your use during the labs.

The course is fully catered, with a tasty lunch as well as morning and afternoon snacks.

We also frequently run this workshop as a tailored on-site session adapted to your specific environment and requirements. Many clients prefer the flexibility of these on-site sessions. For more information, please contact us.

Since 2007, over a thousand students have benefited from John's on-site and public workshops. Here is what some students have been saying about John's workshops:
  • "Best development course I have been on in a very long time. Will seriously improve our development/build/test lifecycle." - Neil, Software Developer
  • "One of the best and most useful courses I have attended. And they didn't even try to sell me anything!" - Jonathan, Developer
  • "Greatly enjoyed the course. Provided many useful insights on how to introduce improved ways of working and how to incorporate new technology with new and 'legacy' projects." - Derek, Technical Team Leader
  • "Probably the best training course I've been on...ranges from a good overview to a detailed coverage, depending on need or preference. Was an excellent course." - Peter, Analyst Programmer
If you aren’t able to make your course date the following options are available to you:

You can send one of your colleagues in your place at no charge provided you inform us up to 10 working days prior to the course date. This allows us the time to make the adequate adjustments.


You can reschedule for another class up to 10 working days from the original course date.


You may request a full refund up to 30 business days from the course date. Cancellations made within 28 days from the course date will not be eligible for a refund.