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.