Testing Legacy C++ Code with Approval Tests

You have inherited some legacy C++ code: it is valuable, but it doesn’t have tests, and it wasn’t designed to be testable, so you need to start refactoring. But you can’t refactor safely until the code has tests, and you can’t add tests without refactoring! How can you ever break out of this loop?

Whether Legacy code for you means “old code”, “code without tests”, or “code you wish to redesign for new features or unit-tests”, this talk enabled you to become productive and work safely, quickly. The simplicity, convenience, ease-of-use, power and flexibility of Llewellyn Falco’s “Approval Tests” approach has long been proven in a dozen programming languages. And now all this is now available to C++ developers too!

Clare Macrae presents a small but surprisingly effective C++11 library for applying “Approval Tests” to cross-platform C++ code – for both legacy and green-field systems, and with a range of testing frameworks. She describes its use in some real-world situations, including how to quickly lock down the behavior of legacy code. This talk shows how to quickly achieve good test coverage, even for very large sets of inputs. You will leran some quick, practical techniques to use for common challenges, such as testing outputs containing dates and times, that can be applied very easily using Approval Tests.

Video producer: http://cppcon.org/

Further reading: Approval Testing: Agile Testing that ScalesApproval Testing: Agile Testing that Scales