Advanced BDD/TDD Masterclass
John Ferguson Smart
This two day 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). This is above all a practical, hands-on workshop and we believe that the best way to learn BDD and TDD is by doing. The course contains approximately 60-70% lab work.
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.
To ensure an optimal learning experiences, class sizes are limited. Book early!
If you are interested in attended this course but would first like to see a taster of John in action then an online introductory course to web testing is available here.
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
Coding exercises and code katas
Day 2 - Advanced Test Driven Development
Principles of interaction-based testing
Types of mock objects: stubs, fakes and doubles
Using mocking libraries
London-style TDD: discovering system design using mocks
TDD for legacy code
More coding exercises
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:
Technical project managers
One year's experience developing software using Java
Ability to program in Java using Eclipse or IntelliJ
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).
This is above all a practical, hands-on workshop and we believe that the best way to learn BDD and TDD is by doing. The course contains approximately 60-70% lab work.
Overall the course was excellent - the training exercises were great to help explain the concepts.
Ciaran Diviney | Software Engineer at AIB