This document discusses test-driven development (TDD) with Puppet. It explains why testing is important, such as having confidence to change code without breaking things. It covers what to test, like parameters, resources, and conditional logic. Tools for testing like rspec-puppet are also presented. The document demonstrates writing tests first, then code to pass the tests, for a sample MOTD module. It encourages testing all parameters and provides examples for validating values. Finally, it discusses integrating tests with Travis CI for continuous integration.