This document discusses functional testing for configuration management using Puppet. It provides examples of functional tests for the ntp module and testing for idempotency. It also discusses how to approach functionally testing each Puppet module and role. The document recommends testing roles by setting up one system as a package repository, seeding a package, and having another system install it from the repo to validate the role's configuration.