Chef, Puppet, and other tools that implement “infrastructure as code” are great for configuration management and automated deployments, but it is difficult to test these infrastructure scripts before putting them into production. Since infrastructure as code is a relatively new technology, methodologies for its testing are not yet standardized. Glen Buckholz shares a way to solve the two major problems with testing Chef scripts—[1] capturing a start state similar to your target environment, and [2] rolling back to the starting state when your script fails. Development techniques are typically ad-hoc with most developers creating a personal method of testing in their own environment or circumstance. Glen shows how to use established continuous integration (CI) techniques to allow an automated platform to more quickly generate test results and automatically stage the code to the Chef server. By linking together established CI and testing techniques, we can hold Chef code development to the same mature standard as application programming.