The self-check is a multiple-choice quiz you can take on your own to check your knowledge of the subjects of software unit testing and test-driven development (TDD). Participants in my training classes on TDD receive email invites to take the quiz on Google Docs. They also receive a document that reviews the answers to the quiz and provides additional information about the topics mentioned in the quiz.
This book comprises the quiz and the review document as a PDF file. These documents do not constitute a complete training course on unit testing and TDD. The material is supplemental to information provided in the training courses. The reader must not expect to learn how to test-drive software just by reading this material.
People who might get value from this material include those who
- are curious about TDD or automated unit testing, but aren’t sure how these techniques might apply to their work context.
- are not sure what forms of value to expect from unit test automation and/or TDD.
- do not understand what programmers mean when they say TDD is not a testingtechnique.
- do not understand what testers mean when they say automated testing is not really testing.
- have attempted to use TDD in the past with poor results or mixed results.
- hold opinions (or reservations) about TDD based on negative past experiences or negative reports from others.
- are not sure exactly what constitutes a “unit” or a “unit test.”
- are not sure whether or how TDD and/or automated unit testing can play a role in different work situations, such as greenfield development, enhancement of existing applications, debugging software during a production support event, or remediating accumulated technical debt.
- are not sure whether or how TDD can be applied to different technologies, such as embedded systems, mobile applications, mainframe systems, or in configuring thirdparty application platforms.
- are not sure whether or how TDD can be applied with different types of programming languages, such as objectoriented, functional, or procedural.
- are not sure whether or how TDD and unit testing can be applied to languages with different characteristics, such as strong type systems, static type systems, or dynamic type systems.