A Cynical Introduction To Testing ================================= Don't Feel Bad -------------- - You might feel bad that you write fewer tests than you "should". - "Testing is the dental floss of development" -- Ned Batchelder - Don't get mad, get even. All Code Is Terrible --------------------- - All code is terrible. - There is no shame in writing terrible code. - There is only shame in having more code than is strictly necessary for a purpose. - It's costly for both the originator and a future reader. How Do I Avoid Shame? --------------------- - Test everything. - It's an entirely mechanical process. Use no judgment. - Accept that it will make you "slower". - Requiring healthy test coverage of your code tends to mean you write less domain code. This is a good thing. I Mean Everything ----------------- - Wrap your brain around it, roll it around on the tongue: everything. - No function too small. - Code that is proven to work repeatably is beautiful. Even terrible code. - Not unusual to have 2X more test code than "real" code in a given project. Proving It Works Isn't The Goal ------------------------------- "It's silly to prove that a function that does "return 1+1" always returns 2." - Not the only goal. It's at best a distant third reason. - The first and second goals are: - detect regressions caused by future maintenance ("return 1+2"). - use testing as a thinking tool for improving code in real time. But It Makes Me Slower ---------------------- - Yup. This is on purpose. - I'm not a superstar developer. You aren't either. None of us are. - Writing tests for everything might make you go slower "in the small" but the organization as a whole will go faster. Don't Be Afraid To Throw It Away -------------------------------- - I use testing as a way to think about code. I write something terrible quickly, then I start to write some tests for it. The act of writing tests reveals how terrible it is, and I throw some of it out, and write something better. Rinse, lather, repeat until code is good. - TDD? Not so much me. If it works for you sure.