I was on the beach in Atlantic City today reading an excellence tome a throwback from 2003(!). This book, Test Driven Development by Example, was penned by Kent Beck himself. In the first paragraph of chapter 25, "Test-Driven Development Patterns", he talks notes the difference between the word "test" and a verb and as a noun.
Test, the Verb
The dictionary definition for the verb meaning of test is, "to evaluate". By this definition, everyone "tests" their code. When you make a change, you open it up and use it to make sure you didn't break anything, any if it looks good then you set it live! However, as Kent Beck notes, "Although you may test your changes, testing changes is not that same thing as having tests. Test is also a noun: a procedure leading to acceptance or rejection. Chrome inspector console debugging, relying only on 'gulp serve' (or the equivalent with your favorite task runner), and having a department of manual testers are all examples of testing, the verb. What we are really after in TDD, BDD, and UGAT are the noun tests.
Test, the Noun
The noun form of tests is referring of course to automated tests. These are things that you can point at, you can hold them in a directory and execute them on a whim. There is still action involved and a ton of moving parts, but each test itself is a noun. Remember Kent Beck's definition of noun tests, "a procedure leading to acceptance or rejection". The green tests should in theory lead you to acceptance of the code, NOT manual testing. You can still do exploratory testing but only to expose what tests you are missing! As a side note, tests that are nouns also lead to reports (also nouns) which you don't get with testing, the verb. Of course once you start using the noun form test of test enough, you might want to use "testing" to refer to running the tests. Try not to do this, as it can get confusing for everyone. It's unfortunate how many various forms the word "test" can take, and that's why I like to refer to them as just "automated tests" and get more specific if appropriate in the situation. So, keep all that in mind when you're developing, and good luck with your tests. :)
The posts on this site are written and maintained by Jim Lynch. About Jim...