Test-driven development (TDD) and Behavior-driven development (BDD) are becoming common in the development world but really haven’t been adopted in the ops world. In the ops world most teams are still writing stuff and running it directly it in production. The fundamental philosophy of TDD- first add a test that fails because the feature isn’t yet developed, then develop the feature until the test passes – provides the same value to operations teams that it provides to development teams. Additionally, moving to an “always ship trunk” model for branching in source-code control means that you can now deploy most operations changes as soon as they pass the (now robust) test suite, rather than waiting for a group of unrelated changes to all be ready for deployment. Lookout has a complex operations infrastructure that includes data center operations, public cloud operations, and local development. In this presentation we’ll show how Lookout’s move from a conventional operations model to a test-driven model with automated deployments has reduced cycle time and improved reliability. We’ll cover the tools we use (RSpec, Chefspec, and Cucumber for TDD/BDD support, Chef for config management, Capistrano and Rundeck for orchestration, AWS, OpenStack and Vagrant/VirtualBox for virtualization, Jenkins/Gerrit for test automation, deployment, and code review, and several home-grown tools), our deployment pipeline. We'll show Cucumber, RSpec, and Chefspec snippets that support a sample cookbook. We'll also cover a quick overview of TDD/BDD and terminology. After this session, you should be able to start developing simple tests for your Chef cookbooks.