TDD Self-Check

Unit Testing and TDD Self-Check on LeanPub.

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 third­party application platforms.
  • are not sure whether or how TDD can be applied with different types of programming languages, such as object­oriented, 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.