Modern large-scale software design often requires ever-growing team sizes. As team size scales up, so does the amount of churn (and number of bugs introduced) to a code base in a release. Unfortunately, the amount of manual developer or QA testing necessary to find those bugs scales quadratically (or worse) as N features are tested by hand in M configurations. The solution is to keep coders, not QA, responsible for maintaining the quality of their individual components, and to make it trivial and fast to run just the right tests that cover the code the coder changes. D comes pre-baked with lots of tools to make this easier, including a standard unit testing harness, but there'smuch more we can build on top of that to help write not only tests for code, but code that can be tested in an automated fashion.
We'll discuss techniques and tools for designing large-scale testable code in D, including unit testing, mocks, fakes, inversion of control, and dependency injection.
Ben Gertzfield is a mobile engineer at Facebook. He's designed and shipped testability and dependency injection frameworks for Objective-C and C++, and is a huge advocate for freeing engineers from the burdens of manual testing.