TDD with C++, February 21-22, 2013
TDD in C++
Join this hands-on workshop to learn how to do incremental design with TDD while taking advantage of the strengths of C++. The two days will be interactive, featuring lots of exercises with feedback from the trainer, discussions and lectures on the theoretical topics.
Why TDD?
Test Driven Development (TDD) is a tool for obtaining simple & flexible designs in an incremental way. TDD can help you:
- if you work in an environment where requirements change often and you need to implement them as fast as possible.
- if you want to keep your skills up to date with the industry trends
- if you want to learn more about design
What’s special about TDD in C++?
C++ is a complex language, allowing developers to take advantage of power and effectiveness of the system. Unfortunately, refactoring and writing tests is more complicated in C++ because there are less tools for it than for Java or C#. We therefore need to learn how to effectively refactor and how to write tests in the given context.
You will need a laptop with the development environment for C++ installed and working. It is highly recommended to have git (msysgit for Windows) installed.
Who this course is for
Software C++ developers
Learning outcomes for this course
- What TDD is about
- The real TDD cycle
- How to start doing TDD on a new system
- How to figure out the tests you need to write: behavior slicing
- How to write tests so that your system is correct every 5-15 minutes
- How to use refactoring to emerge designs
Depending on the audience, we might discuss:
- How to use stubs and mocks to isolate tests
- How to test an arbitrarily large system effectively
- Basics of dealing with legacy code
- Architecture and TDD – when does architecture end and when does design start?
This course will not teach you how to use TDD on an existing system. We might discuss it for a short while, but we won’t get into details. If you would like to attend such a course, ask us for the legacy code workshop.
You will receive the slides and code samples after the course ends. The trainer will also recommend you learning resources – trainings, books, blogs etc. – to help you continue learning after the course ends.
Prerequisites
For best results, you should be a software developer who can easily write C++ programs containing: concrete and abstract classes, inheritance, pointers and reference types.