SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Sunday, April 7, 13
testing!



                                 www.nedap.com
Sunday, April 7, 13
testing!
                         before production
                          not in production




                                          www.nedap.com
Sunday, April 7, 13
whoami

                      •   Daniele Sluijters
                      •   @daenney: irc, twitter, github, ...
                      •   mail: daniele.sluijters@nedap.com
                      •   XMPP / Jabber: ☝



                                                                www.nedap.com
Sunday, April 7, 13
www.nedap.com
© Ines Hegedus-Garcia | https://secure.flickr.com/photos/miamism/8446238376/
Sunday, April 7, 13
consequences

           exec	
  {	
  ‘first-­‐run-­‐reboot’:
           	
  	
  command	
  =>	
  ‘touch	
  /tmp/first-­‐run	
  
           	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  &&	
  reboot’,
           	
  	
  creates	
  =>	
  ‘/tmp/first-­‐run’,
           }


                                                                     www.nedap.com
Sunday, April 7, 13
avoid latest
                      class	
  mysql	
  {
                      	
  	
  package	
  {	
  ‘mysql-­‐server’:
                      	
  	
  	
  	
  ensure	
  =>	
  latest,
                      	
  	
  	
  	
  notify	
  =>	
  Service[‘mysql’],
                      	
  	
  }
                      }

                                                                  www.nedap.com
Sunday, April 7, 13
structure



                                  www.nedap.com
Sunday, April 7, 13
params
                 class	
  acme::params	
  {
                 	
  	
  case	
  $::osfamily	
  {
                 	
  	
  	
  	
  ‘Debian’:	
  {	
  $founder	
  =	
  ‘Marvin’	
  }
                 	
  	
  	
  	
  default:	
  {	
  fail(“No	
  can’t	
  do.”)	
  }
                 	
  	
  }
                 }

                                                                     www.nedap.com
Sunday, April 7, 13
params
                      class	
  acme::package	
  {	
  
                      	
  	
  package	
  {	
  ‘marvin’:
                      	
  	
  	
  	
  ensure	
  =>	
  $::acme::version,
                      	
  	
  }
                      	
  	
  ...
                      }

                                                                  www.nedap.com
Sunday, April 7, 13
configurable
                      class	
  acme(
                      	
  	
  $version	
  =	
  ‘1.6’,
                      	
  	
  $enable	
  =	
  true,
                      )	
  inherits	
  acme::params	
  {	
  
                      	
  	
  ...
                      }

                                                               www.nedap.com
Sunday, April 7, 13
users are crazy
                      class	
  acme(
                      	
  	
  $version	
  =	
  ‘1.6’,
                      	
  	
  $enable	
  =	
  true,
                      ){	
  
                      	
  	
  validate_string($version)
                      	
  	
  validate_bool($enable)
                      }

                                                          www.nedap.com
Sunday, April 7, 13
data sources

                      • Don’t couple modules to data
                      • Pass in data through params
                      • Use a profile to configure the module

                                                       www.nedap.com
Sunday, April 7, 13
profile
                      class	
  profile::acme	
  {
                      	
  	
  class	
  {	
  ‘acme’:
                      	
  	
  	
  	
  version	
  =>	
  hiera(‘version’)
                      	
  	
  	
  	
  ...
                      	
  	
  }
                      }

                                                                  www.nedap.com
Sunday, April 7, 13
misc


                      • Write docs
                      • Include a README + license


                                                      www.nedap.com
Sunday, April 7, 13
www.nedap.com
© elycefeliz | https://secure.flickr.com/photos/elycefeliz/4649829000/
Sunday, April 7, 13
www.nedap.com
© a200/a77Wells | https://secure.flickr.com/photos/aiwells/4672742619/
Sunday, April 7, 13
rspec-puppet



                                     www.nedap.com
Sunday, April 7, 13
setup
                      • Setup:
                       • use puppetlabs_spec_helper
                       • https://puppetlabs.com/blog/the-
                          next-generation-of-puppet-module-
                          testing/

                      • Read the tutorial:
                       • http://rspec-puppet.com/tutorial/
                                                        www.nedap.com
Sunday, April 7, 13
setup

                 source	
  :rubygems
                 gem	
  'puppet'	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ,	
  '~>	
  3.1'
                 gem	
  'facter'	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ,	
  '~>	
  1.6.18'
                 gem	
  'puppet-­‐lint'	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ,	
  '~>	
  0.3.2'
                 gem	
  'puppetlabs_spec_helper'	
  ,	
  '~>	
  0.4.1'



                                                                                                           www.nedap.com
Sunday, April 7, 13
data

                • let	
  :params	
  do	
  {}	
  end
                • let	
  :facts	
  do	
  {}	
  end
                • let	
  :pre_condition	
  do	
  {}	
  end




                                                             www.nedap.com
Sunday, April 7, 13
matchers
                • should ⬌	
  should_not	
  
                • include_type
                • with_attr(‘value’)
                • ‘value2’})
                  with({:attr1	
  =>	
  ‘value1’,	
  :attr2	
  =>	
  


                • with_content(regex)
                                                          www.nedap.com
Sunday, April 7, 13
example
                      describe	
  'acme'	
  do
                      	
  	
  it	
  'should	
  declare	
  itself'	
  do
                      	
  	
  	
  	
  should	
  contain_class('acme')
                      	
  	
  end
                      end


                                                                     www.nedap.com
Sunday, April 7, 13
example
           context	
  ‘on	
  Debian’	
  do

           	
  	
  let	
  :facts	
  do	
  {	
  :osfamily	
  =>	
  ‘Debian’	
  }	
  end

           	
  	
  let	
  :params	
  do	
  {	
  :ver	
  =>	
  ‘1.2’	
  }	
  end

           	
  	
  it	
  ‘should	
  install	
  mysql’	
  do

           	
  	
  	
  	
  should	
  contain_package(‘mysql’).with_ensure(params[:ver]})

           	
  	
  end

           	
  	
  it	
  ‘should	
  not	
  install	
  redis’	
  do

           	
  	
  	
  	
  should_not	
  contain_package(‘redis’).with_ensure(‘present’)

           	
  	
  end

           end
                                                                                         www.nedap.com
Sunday, April 7, 13
success

                      module	
  git:master	
  ›❯	
  rake	
  spec
                      .............


                      Finished	
  in	
  2.43	
  seconds
                      13	
  examples,	
  0	
  failures


                                                               www.nedap.com
Sunday, April 7, 13
www.nedap.com
© Colin Fahrion | https://secure.flickr.com/photos/headlouse/1484615917/
Sunday, April 7, 13
automate

                      • Generate module structure
                       • init, install, config, services, params
                      • Generate tests
                      • Generate README
                      • CI
                                                           www.nedap.com
Sunday, April 7, 13
behaviour



                                  www.nedap.com
Sunday, April 7, 13
options

                      • Deploy to a testing environment
                      • Monitor your testing environment
                      • Test with rspec-...?

                                                           www.nedap.com
Sunday, April 7, 13
environment

                      • Jenkins + vagrant
                       • Can’t run on slaves
                       • Can’t run concurrent builds

                                                       www.nedap.com
Sunday, April 7, 13
monitoring

                      • Any tool you want to:
                       • nagios / icinga
                       • zabbix / zenoss / sensu
                       • ...

                                                   www.nedap.com
Sunday, April 7, 13
www.nedap.com
© Kristina Alexanderson | https://secure.flickr.com/photos/kalexanderson/5421517469/
Sunday, April 7, 13
q?



                           www.nedap.com
Sunday, April 7, 13

Contenu connexe

Similaire à How and why you should test (8)

Puppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worldsPuppet and AWS: Getting the best of both worlds
Puppet and AWS: Getting the best of both worlds
 
Silex: From nothing to an API
Silex: From nothing to an APISilex: From nothing to an API
Silex: From nothing to an API
 
Ruby 2.0 / Rails 4.0, A selection of new features.
Ruby 2.0 / Rails 4.0, A selection of new features.Ruby 2.0 / Rails 4.0, A selection of new features.
Ruby 2.0 / Rails 4.0, A selection of new features.
 
Ruby 20th birthday
Ruby 20th birthdayRuby 20th birthday
Ruby 20th birthday
 
Ember and containers
Ember and containersEmber and containers
Ember and containers
 
Rspec group
Rspec groupRspec group
Rspec group
 
Rails Intro & Tutorial
Rails Intro & TutorialRails Intro & Tutorial
Rails Intro & Tutorial
 
spring3.2 java config Servler3
spring3.2 java config Servler3spring3.2 java config Servler3
spring3.2 java config Servler3
 

Plus de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

Plus de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

How and why you should test

  • 2. testing! www.nedap.com Sunday, April 7, 13
  • 3. testing! before production not in production www.nedap.com Sunday, April 7, 13
  • 4. whoami • Daniele Sluijters • @daenney: irc, twitter, github, ... • mail: daniele.sluijters@nedap.com • XMPP / Jabber: ☝ www.nedap.com Sunday, April 7, 13
  • 5. www.nedap.com © Ines Hegedus-Garcia | https://secure.flickr.com/photos/miamism/8446238376/ Sunday, April 7, 13
  • 6. consequences exec  {  ‘first-­‐run-­‐reboot’:    command  =>  ‘touch  /tmp/first-­‐run                            &&  reboot’,    creates  =>  ‘/tmp/first-­‐run’, } www.nedap.com Sunday, April 7, 13
  • 7. avoid latest class  mysql  {    package  {  ‘mysql-­‐server’:        ensure  =>  latest,        notify  =>  Service[‘mysql’],    } } www.nedap.com Sunday, April 7, 13
  • 8. structure www.nedap.com Sunday, April 7, 13
  • 9. params class  acme::params  {    case  $::osfamily  {        ‘Debian’:  {  $founder  =  ‘Marvin’  }        default:  {  fail(“No  can’t  do.”)  }    } } www.nedap.com Sunday, April 7, 13
  • 10. params class  acme::package  {      package  {  ‘marvin’:        ensure  =>  $::acme::version,    }    ... } www.nedap.com Sunday, April 7, 13
  • 11. configurable class  acme(    $version  =  ‘1.6’,    $enable  =  true, )  inherits  acme::params  {      ... } www.nedap.com Sunday, April 7, 13
  • 12. users are crazy class  acme(    $version  =  ‘1.6’,    $enable  =  true, ){      validate_string($version)    validate_bool($enable) } www.nedap.com Sunday, April 7, 13
  • 13. data sources • Don’t couple modules to data • Pass in data through params • Use a profile to configure the module www.nedap.com Sunday, April 7, 13
  • 14. profile class  profile::acme  {    class  {  ‘acme’:        version  =>  hiera(‘version’)        ...    } } www.nedap.com Sunday, April 7, 13
  • 15. misc • Write docs • Include a README + license www.nedap.com Sunday, April 7, 13
  • 16. www.nedap.com © elycefeliz | https://secure.flickr.com/photos/elycefeliz/4649829000/ Sunday, April 7, 13
  • 17. www.nedap.com © a200/a77Wells | https://secure.flickr.com/photos/aiwells/4672742619/ Sunday, April 7, 13
  • 18. rspec-puppet www.nedap.com Sunday, April 7, 13
  • 19. setup • Setup: • use puppetlabs_spec_helper • https://puppetlabs.com/blog/the- next-generation-of-puppet-module- testing/ • Read the tutorial: • http://rspec-puppet.com/tutorial/ www.nedap.com Sunday, April 7, 13
  • 20. setup source  :rubygems gem  'puppet'                                  ,  '~>  3.1' gem  'facter'                                  ,  '~>  1.6.18' gem  'puppet-­‐lint'                        ,  '~>  0.3.2' gem  'puppetlabs_spec_helper'  ,  '~>  0.4.1' www.nedap.com Sunday, April 7, 13
  • 21. data • let  :params  do  {}  end • let  :facts  do  {}  end • let  :pre_condition  do  {}  end www.nedap.com Sunday, April 7, 13
  • 22. matchers • should ⬌  should_not   • include_type • with_attr(‘value’) • ‘value2’}) with({:attr1  =>  ‘value1’,  :attr2  =>   • with_content(regex) www.nedap.com Sunday, April 7, 13
  • 23. example describe  'acme'  do    it  'should  declare  itself'  do        should  contain_class('acme')    end end www.nedap.com Sunday, April 7, 13
  • 24. example context  ‘on  Debian’  do    let  :facts  do  {  :osfamily  =>  ‘Debian’  }  end    let  :params  do  {  :ver  =>  ‘1.2’  }  end    it  ‘should  install  mysql’  do        should  contain_package(‘mysql’).with_ensure(params[:ver]})    end    it  ‘should  not  install  redis’  do        should_not  contain_package(‘redis’).with_ensure(‘present’)    end end www.nedap.com Sunday, April 7, 13
  • 25. success module  git:master  ›❯  rake  spec ............. Finished  in  2.43  seconds 13  examples,  0  failures www.nedap.com Sunday, April 7, 13
  • 26. www.nedap.com © Colin Fahrion | https://secure.flickr.com/photos/headlouse/1484615917/ Sunday, April 7, 13
  • 27. automate • Generate module structure • init, install, config, services, params • Generate tests • Generate README • CI www.nedap.com Sunday, April 7, 13
  • 28. behaviour www.nedap.com Sunday, April 7, 13
  • 29. options • Deploy to a testing environment • Monitor your testing environment • Test with rspec-...? www.nedap.com Sunday, April 7, 13
  • 30. environment • Jenkins + vagrant • Can’t run on slaves • Can’t run concurrent builds www.nedap.com Sunday, April 7, 13
  • 31. monitoring • Any tool you want to: • nagios / icinga • zabbix / zenoss / sensu • ... www.nedap.com Sunday, April 7, 13
  • 32. www.nedap.com © Kristina Alexanderson | https://secure.flickr.com/photos/kalexanderson/5421517469/ Sunday, April 7, 13
  • 33. q? www.nedap.com Sunday, April 7, 13