Developers seem to spend almost as much time debating what defines a "unit test" as they do define unit tests. The term "unit test" dates back to the 1960s, but has meant different things to different people from then until now. In the absence of a fixed definition, we should look for useful definitions: definitions that help us understand the code structure of the system, our relationship to the code, and the claims we can make about it.
The purpose and style of unit testing are just as often discussed, and ranges from treating it as an activity that developers should not do to one that is intimately tied to their other activities, from merely checking code to understanding and defining it, from something that should be left until late to one that is interleaved with the act of writing production code.
This talk will explore the unit-testing landscape, highlighting the role of unit tests, which makes for a good unit test, the lifecycle of unit tests, and the role of developers.