Alice Nodelman, Puppet Labs
Over the past two years, Puppet Labs has developed the open source Beaker acceptance testing tool. Beaker provides ‘write once, run everywhere’ testing. The same test can be run locally or in the cloud, it can exercise Puppet from source, Puppet from package or Puppet from enterprise installation, and it can be executed against all of Puppet Enterprise’s 14 supported platforms which includes *nix, OS X, and Windows.
Beaker is written in Ruby and uses object inheritance to create a host abstraction. Test writers interact with the abstraction, while Beaker manipulates the actual platform under test. Beaker also includes a domain specific language (DSL) which wraps common testing tasks. Combined together, the host abstraction and DSL make test writing cheap and easy.
Building a new testing system is expensive and complicated. It requires the same effort as any other software development project, including designing, developing, documenting, testing and ongoing maintenance. The significant investment that Puppet Labs has put into Beaker has resulted in the creation of over two thousand Beaker acceptance tests – with more added every day by both employees and community members. Any regression discovered is converted into a Beaker test to ensure future behavior. Puppet Labs project builds are now subjected to days of testing effort without any manual intervention. Beaker is central to Puppet Labs’ automation infrastructure and essential to the dependability of Puppet Labs software.
Target Audience: Intermediate