Course Objectives:

Dave Farley shares his expertise, advice and real-life examples, so you can:

  • Learn the skills of Test Driven Development.
  • Adopt TDD as an approach to software Design rather than focus on “after-the-fact” unit-testing
  • Adopt a Behaviour Driven Development (BDD) approach to the use of TDD.
  • Learn skills and techniques to enhance the quality of your work and drive the creation of higher-quality software.
  • Learn the skills and techniques that significantly reduce defect-rates in production code.
  • Learn how to “listen to the code” and use the feedback from test creation to modify designs for the better.

Course Duration

The course is programmed to take place over 3 weeks, and is a combination of self-paced study of on-line video lessons, reading material and practical exercises, with a weekly LIVE session with Dave Farley.

There are 3 Modules comprising a number of video lessons by Dave Farley, with accompanying detailed course notes, which you can study at a time that works for you. 

Each module includes Practical Exercises where you can apply what you have learned and practise the skills and techniques.

At the end of each module there is an assignment which you will complete before you start the next module. There is a LIVE session each week to review these assignments and get feedback on your progress from Dave Farley.

Course Content

Part One

TDD is really more about Test Driven Design than it is about testing, and is is one of those very rare software engineering practices that can make a real difference to the quality of your code.

We commence with an introduction to the benefits of TDD and the principles of “How Test First Improves Design”, and "Red, Green, Refactor”. 

TDD encourages an iterative way of working, an incremental approach to design, and a continuous learning approach, which helps us to write Better Software Faster.

Part Two

We then dive into the technical details of "How to Write Great Tests": 

  • What are the properties of a “Good Test”?
  • What makes code "testable"?
  • How do we keep tests isolated and atomic?
  • What is Dependency Injection, and how best to use it?
  • What is Mocking, and how best to use it?
  • What are the patterns and anti-patterns in TDD?
  • When not to test?

Part Three

In the final module, Dave Farley explores “What is BDD?” and how it helps us improve our software engineering practices. 

  • What is BDD?
  • Where to start with a Test?
  • How does Naming affect the code that we write and its readability and expressibility.
  • Why is Naming important for software testing? 
  • What constitutes good names? (we give examples of both good and bad naming)
  • How do I ‘Listen to the code’?

We also provide a list of useful References and Links with suggestions for further reading and exploration, so you can extend your learning.

When You Complete the Course, You Will:

  • Get a Completion Certificate
  • Understand the benefits of TDD and BDD
  • Understand the design principles that underpin the effective use of TDD as a practice to create high-quality software
  • Have hands-on experience of TDD in practice
  • Use TDD and BDD techniques to improve the quality of your software
  • Know how to use feedback from your tests to improve the design of your software

About Your Instructor - Dave Farley:

Dave is:

  • Pioneer and expert practitioner in CD, DevOps, TDD and software development in general.
  • Author of the award-winning "Continuous Delivery" book
  • Inventor of Deployment Pipelines 
  • Creator of the CD YouTube channel

Dave has spent 25+ years developing world class software, and is passionate about helping software developers around the world to improve the design, quality and reliability of their software, by sharing his expertise through his consultancy, YouTube channel, and training courses.

Dave has reconfigured his successful live courses, into an on-line learning format, so you can study and practise these techniques at a time and a place that fits around your busy schedule.

What People Say About Dave's Training Courses:

“I'm still trying to process all of the knowledge but I can tell you now that it was invaluable to my professional development in DevOps! Thank you!”
      - Developer

"If your current project or software engineering approach in general does not match your team's or your business' expectations for any reason, I highly recommend to deep dive into the details and taking all the advice presented during this course seriously. Chances are that it will reveal very important aspects that you might want to focus on in order to improve your overall experience."

         - Principal Software Engineer

"It has helped me to know what great looks like and come up with a plan to get there. It's well put together. The worksheets encourage doing, rather than just consuming."
      - Co. Founder

“The fact that Dave is one of the creators of the discipline and had successfully implemented it gives him huge credibility.”
      - Senior Developer

"As busy team lead, I found that being able to pick up the course at times that suited me and the ability to work at my own pace was a much better learning experience than travelling to a live course."
      - Software Team Lead