A better way to reason about software testing terms

I was recently in a discussion between developers about improving the test coverage of a major software project. They needed guidance about what kind of tests to write, and how to write them.

The discussion quickly became confusing: the topic was too large, too general, and it turns out that there wasn't even a well-defined shared vocabulary for testing concepts! The latter turns out to be a wider problem in the software development community: it simply doesn't have well-defined testing terms!

In this post, I'd like to provide some guidance w.r.t. this matter. I'll discuss:

  • An overview of the most common testing terms.
  • A new way of reasoning about testing concepts: reiterating what actually matters, and categorizing tests based on "size" and "approach".
  • How the existing testing terminology fits in this new model.

Read more »