TDD for iOS Workshop

Test-Driven Development (TDD) is one of the core agile programming practices. Yet few companies practice it, and fewer still apply it to Apple platforms.

Like riding a bicycle, TDD isn’t something you can learn from just reading a book. In this workshop, we’ll learn by doing! If you’re a programmer with basic familiarity of the Swift programming language and iOS development, you’re ready. Your trainer will be Jon Reid of Quality Coding. Jon has been practicing TDD on Apple platforms for 18 years.

Click to email for pricing / scheduling
Interested in remote coaching instead?

Jon Reid teaching TDD in Italy

Jon Reid teaching TDD in Italy. Photo courtesy of #Pragma Conference.


The TDD Workshop was excellent! I appreciated Jon’s approach; having us work through TDD problems really solidified the material in a way that just lecturing would not have. He also made writing tests fun and enjoyable. We’ve significantly increased our test coverage after his workshop.


Anyone who cares about unit testing for iOS would benefit from this workshop. It's a great way to get through the hard part of writing the first few tests and starting to think about writing tests first.


Jon did a fantastic job covering the various topics and techniques on unit testing, TDD, and even pairing/mobbing specifically on the iOS platform. I love how the workshop was very hands-on and collaborative. After the workshop, the entire team came away energized and ready to apply all the learnings to our day-to-day work. I would highly recommend this workshop if your team is looking to learn more about TDD in iOS.

Workshop details

Duration: 2 days
Capacity: Up to 20 people
Location: Client site
Programming Language: Either Swift or Objective-C
Course content:

  • Why do TDD?
  • Recommended tools
  • The Three Laws: Growing test code and production code in parallel
  • The Three Steps: Red, Green, Refactor
  • Writing focused, readable tests

  • Emergent Design: Evolving a solution that meet your needs
  • Refactoring: Changing the design in small, verified steps
  • How to TDD view controllers
  • Test doubles (stubs, mocks, fakes)
  • How to add tests to legacy code


Before this workshop, I was concerned that TDD required a lot of extra code and time. But I learned a lot of tips and tricks while gaining confidence and the desire to write better code. I learned that a lot of UI code can be tested in unit tests, which is much faster that in UI tests. I loved Jon's enthusiasm for the topic, and his kindness! I recommend this workshop to any developer that is serious about quality of code and having confidence in the code that they write.

Nick Kohrn
iOS Developer

I was very interested in doing TDD but didn't really have a good idea about how to do it in practice. It turns out, it's not as hard as I had built it up in my head to be. It was really helpful to go through examples of things that we would actually do. I recommend this workshop to anyone who wants to understand how to do TDD in iOS. Jon Reid teaches with energy, thoughtfulness and passion.

Miles Wright
Independent Software Consultant

I benefited from immersion learning and mob programming with *the* TDD expert, with advice and guidance based on real-world experience. I knew TDD was "a good thing" but it seemed just that little bit too hard to start doing it. I learned exactly what it means to write just enough code to make the test pass. I recommend this workshop to developers who are grappling with the usual questions about unit testing — how much is enough? what to test? how to test this hard-to-test thing? — and want to develop high-quality code when they add the next feature or develop their next app.

Audrey Tam

My experience with refactoring in the past had been more like: tear everything out, refactor it, pray that everything works and all of the logic was maintained between the refactors. TDD and having unit tests to lean on was a night-and-day difference in refactoring. There was no fear or uncertainty, just refactoring and running tests. It was brilliant! I also found it very insightful we were able to test many different UIKit elements using unit tests. That is super powerful, because unit tests are much faster, more reliable, and cheaper/easier to implement than UI tests.

Ben Patch
iOS Developer
Click to email for pricing / scheduling

Interested in remote coaching instead?