Last year I had the amazing experience of giving my OOP: You're Doing It Completely Wrong talk to a standing room only crowd at CodeMash (and later at Stir Trek). It was a crazy experience standing at the side of the room and watching people come in, my reaction going from, "oh this is a good crowd" to "wow, this a big crowd" to "holy crap!!!".
The idea for the OOP talk came from a question I found myself asking a lot, which was basically, "I know what objects are, but am I using them right"? Then I went and did a bunch of research and tried to coalesce all that into a coherent presentation of OO. So when I set out to think of a talk for this year I found myself starting in a similar place, but this time thinking about testing. The question is basically, "I know what tests are, but am I using them right?" Testing is such a big and contentious subject that I was pretty nervous to tackle it, but I like the idea that you should give the talk you wish you could attend. So I wrote it up, and CodeMash accepted it, and here's the abstract for my talk at CodeMash this year!
Imagine diagramming your application like a map. The methods might be like cities and the classes like states. The more coupled two methods or classes are, the closer their cities or states may be to each other. Let's spread this map out before us and ask, "how do we best deploy our tests across this landscape"? There are many different kinds of test (unit, acceptance, etc.), each serving a different purpose. What mix of these will best cover the terrain? Well positioned tests can give us confidence in our code, document business rules, support refactoring, and make building new features easier. But poorly positioned tests can just as easily undermine all these goals. How do you find the right balance and test deployment strategy for your application's landscape? In this talk, we will look at the trade-offs in the different kinds of tests and survey recommendations for deploying them effectively.
Hope to you see at the Kalahari in January!