Continuous Integration  Continuous QualityContinuous Delivery
Who is this guy, anyway?               Consulta                       nt               Trainer              Mentor        ...
Training and Consulting Services in   TDD, BDD and ATDD   Automated Acceptance and Regression Testing   Build Automation a...
Continuous DeliveryGetting value to the business.            Fast.            Often.              Continuous Delivery: eve...
But Continuous Delivery is impossiblewithout Continuous Quality                 Quality must be built in to the process   ...
So how do you deliver?
Goals   Capabilities     Features      Stories     ExamplesAcceptance Criteria
Successful projects start with a shared vision“We are going to build an online classifieds website”
You define goals to achieve your vision                              “Let’s increase advertising                           ...
Features help deliver these goals              “Let’s get more sales for our advertisers by              making the ads ea...
We use examples and stories to explore the featuresSearch for online ads“Searching by category”  “Searching by keyword and...
We use examples and stories to explore the featuresSearch for online ads Searching by keyword and location Given	  Sally	 ...
We automate the acceptance criteriasearch_by_keyword_and_location.story Scenario: Searching by keyword and location Given ...
And we implement the acceptance criteriasearch_by_keyword_and_location.storyScenario: Searching by keyword and locationGiv...
We can now execute our automated acceptance tests            “Searching by keyword and            location” is now a pendi...
...and implement the application code for that feature                  When it is implemented, it will                  b...
...and implement the application code for that feature                          And the corresponding feature             ...
What’s so important aboutautomating the Acceptance Criteria?
So why automate your acceptance criteria?                             They define your goals
So why automate your acceptance criteria?                             They keep you on track
So why automate your acceptance criteria?                       They provide better visibility
So why automate your acceptance criteria?                    They allow faster release cycles
So why automate your acceptance criteria?                                     Reduce Risk
So why automate your acceptance criteria?                                     Reduce Costs
Jenkins - it’s how we automate stuff, boss.    Compile and Test Quality GatewaysRelease CandidatesReporting and Documentat...
Build Pipelines       T EST              UAT                                      PROD               Getting your code int...
A simple build pipeline Build	  and	  Fast	  Tests             Slower	  Tests                    Acceptance	  Tests       ...
Build and initial tests Build	  and	  Fast	  Tests                                                       Fail fast        ...
Build and initial tests Build	  and	  Fast	  Tests                                                       Fail fast        ...
Build and initial tests Build	  and	  Fast	  Tests                                                       Fail fast        ...
Build and initial tests Build	  and	  Fast	  Tests                                                       Fail fast        ...
Automated Acceptance TestsBuild	  and	  Fast	  Tests                                                      Progress reports...
Automated Acceptance TestsBuild	  and	  Fast	  Tests                                                      Progress reports...
Automated Acceptance TestsBuild	  and	  Fast	  Tests                                                      Progress reports...
Automated Acceptance TestsBuild	  and	  Fast	  Tests                                                      Progress reports...
Checking Code QualityBuild	  and	  Fast	  Tests                                                      If a metric matters, ...
Checking Code QualityBuild	  and	  Fast	  Tests                                                      If a metric matters, ...
Checking Code QualityBuild	  and	  Fast	  Tests                                                      If a metric matters, ...
Checking Code QualityBuild	  and	  Fast	  Tests                                                      If a metric matters, ...
Generating a release candidate Build	  and	  Fast	  Tests                                                       Build a re...
Generating a release candidate Build	  and	  Fast	  Tests                                                       Build a re...
Generating a release candidate             SCM	  commitSCM server                Build	  and	  Fast	  Tests               ...
Generating a release candidate      What about maven?             SCM	  commitSCM server                Build	  and	  Fast...
Generating a release candidate      What about maven?         Strategy 1 : The Maven Release Plugin                but not...
Generating a release candidate      What about maven?             Strategy 2 : Just set the version  1.0.0-SNAPSHOT       ...
Generating a release candidate Build	  and	  Fast	  Tests                                                       Build a re...
Generating a release candidate Build	  and	  Fast	  Tests                                                       Build a re...
Automated DeploymentBuild	  and	  Fast	  Tests                                                      Automate your deployme...
Automated DeploymentBuild	  and	  Fast	  Tests                                                      Automate your deployme...
Visualizing the build process Build	  and	  Fast	  Tests             Slower	  Tests                    Acceptance	  Tests ...
Build	  and	  Fast	  Tests            Slower	  Tests                   Acceptance	  Tests                         Code	  Q...
Visualizing the build process Build	  and	  Fast	  Tests             Slower	  Tests                    Acceptance	  Tests ...
So how do you deliver?             Rigorous testing and reporting gives             us confidence in our product...
So how do you deliver?             And a Jenkins build pipeline makes             automated delivery possible.
どうもありがとうございまし   Thank	  You                     John	  Ferguson	  Smart      Email:	  john.smart@wakaleo.com       Web:	  ...
Training and Consulting Services in   TDD, BDD and ATDD   Automated Acceptance and Regression Testing   Build Automation a...
Upcoming SlideShare
Loading in...5
×

Continuous Integration, Continuous Quality, Continuous Delivery

9,555

Published on

Automated Acceptance Testing and Continuous Delivery using Thucydides and Jenkins.

Published in: Technology, Design
2 Comments
30 Likes
Statistics
Notes
No Downloads
Views
Total Views
9,555
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
861
Comments
2
Likes
30
Embeds 0
No embeds

No notes for slide

Continuous Integration, Continuous Quality, Continuous Delivery

  1. 1. Continuous Integration Continuous QualityContinuous Delivery
  2. 2. Who is this guy, anyway? Consulta nt Trainer Mentor Author Speaker Coder John Fer guson S mar t
  3. 3. Training and Consulting Services in TDD, BDD and ATDD Automated Acceptance and Regression Testing Build Automation and Continuous Delivery Clean Coding Practices
  4. 4. Continuous DeliveryGetting value to the business. Fast. Often. Continuous Delivery: everyone wants it 4
  5. 5. But Continuous Delivery is impossiblewithout Continuous Quality Quality must be built in to the process 5
  6. 6. So how do you deliver?
  7. 7. Goals Capabilities Features Stories ExamplesAcceptance Criteria
  8. 8. Successful projects start with a shared vision“We are going to build an online classifieds website”
  9. 9. You define goals to achieve your vision “Let’s increase advertising revenue by letting sellers post their classified ads “Let’s get more sales for our advertisers by making the ads easier to find online.” Goals that will deliver business value
  10. 10. Features help deliver these goals “Let’s get more sales for our advertisers by making the ads easier to find online.” Notify potential buyers about new items In Search for online of advertised articles order to increase sales ads As aorder to increase sales of advertised articles In seller I want previous buyers to know about new items As a seller that theybuyers be interested in buying ads for I want might to be able to easily find articles they want to buy
  11. 11. We use examples and stories to explore the featuresSearch for online ads“Searching by category” “Searching by keyword and category” “Searching by keyword and location” “Filter ads by price”
  12. 12. We use examples and stories to explore the featuresSearch for online ads Searching by keyword and location Given  Sally  wants  to  buy  a  puppy  for  her  son   When  she  looks  for  ads  in  the  ‘Pets  and  Animals’  category  containing          the  word  ‘puppy’  in  New  South  Wales Then  she  should  obtain  a  list  of  ads  for  puppies  in  New  South  Wales. Acceptance Criteria illustrate and validate the stories
  13. 13. We automate the acceptance criteriasearch_by_keyword_and_location.story Scenario: Searching by keyword and location Given Sally wants to buy a puppy for her son When she looks for ads in the ‘Pets and Animals’ category containing the word ‘puppy’ in New South Wales Then she should obtain a list of ads for puppies in New South Wales.
  14. 14. And we implement the acceptance criteriasearch_by_keyword_and_location.storyScenario: Searching by keyword and locationGiven Sally wants to buy a puppy for her sonWhen she looks for ads in the ‘Pets and Animals’ category containing the word ‘puppy’ in New South WalesThen she should obtain a list of ads for puppies in New South Wales.
  15. 15. We can now execute our automated acceptance tests “Searching by keyword and location” is now a pending test
  16. 16. ...and implement the application code for that feature When it is implemented, it will be displayed as a passing test
  17. 17. ...and implement the application code for that feature And the corresponding feature is now partially completed
  18. 18. What’s so important aboutautomating the Acceptance Criteria?
  19. 19. So why automate your acceptance criteria? They define your goals
  20. 20. So why automate your acceptance criteria? They keep you on track
  21. 21. So why automate your acceptance criteria? They provide better visibility
  22. 22. So why automate your acceptance criteria? They allow faster release cycles
  23. 23. So why automate your acceptance criteria? Reduce Risk
  24. 24. So why automate your acceptance criteria? Reduce Costs
  25. 25. Jenkins - it’s how we automate stuff, boss. Compile and Test Quality GatewaysRelease CandidatesReporting and Documentation Automated Deployment Continuous Delivery
  26. 26. Build Pipelines T EST UAT PROD Getting your code into production
  27. 27. A simple build pipeline Build  and  Fast  Tests Slower  Tests Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLonEach step is a quality gateway UAT TEST
  28. 28. Build and initial tests Build  and  Fast  Tests Fail fast Slower  Tests Let people know Acceptance  Tests Never ignore a broken build Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  29. 29. Build and initial tests Build  and  Fast  Tests Fail fast Slower  Tests Let people know Acceptance  Tests Never ignore a broken build Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  30. 30. Build and initial tests Build  and  Fast  Tests Fail fast Slower  Tests Let people know Acceptance  Tests Never ignore a broken build Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  31. 31. Build and initial tests Build  and  Fast  Tests Fail fast Slower  Tests Let people know Acceptance  Tests Never ignore a broken build Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Instant Messaging Plugin Deploy  to  ProducLon Email-ext Plugin Hudson Sounds Plugin ... UAT TEST
  32. 32. Automated Acceptance TestsBuild  and  Fast  Tests Progress reports Slower  Tests Living Documentation Acceptance  Tests Help for testers Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  33. 33. Automated Acceptance TestsBuild  and  Fast  Tests Progress reports Slower  Tests Living Documentation MakeAcceptance  Tests them fast Help for testers Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon Distributed builds Selenium Grid SauceLabs UAT ... TEST
  34. 34. Automated Acceptance TestsBuild  and  Fast  Tests Progress reports Slower  Tests Living Documentation Make them public for testers Acceptance  Tests Help Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon Notifications HTML Publisher Plugin ... UAT TEST
  35. 35. Automated Acceptance TestsBuild  and  Fast  Tests Progress reports Slower  Tests Living Documentation Make them public for testers Acceptance  Tests Help Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT HTML Publisher Plugin TEST
  36. 36. Checking Code QualityBuild  and  Fast  Tests If a metric matters, fail the build Slower  Tests Proactive Code Quality Acceptance  Tests Complements Sonar Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  37. 37. Checking Code QualityBuild  and  Fast  Tests If a metric matters, fail the build Slower  Tests Proactive Code Quality Acceptance  Tests Complements Sonar Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  38. 38. Checking Code QualityBuild  and  Fast  Tests If a metric matters, fail the build Slower  Tests Proactive Code Quality Acceptance  Tests Complements Sonar Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  39. 39. Checking Code QualityBuild  and  Fast  Tests If a metric matters, fail the build Slower  Tests Proactive Code Quality Acceptance  Tests Complements Sonar Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UEnforcing code quality AT Deploy  to  ProducLon Cobertura Plugin Checkstyle Plugin FindBugs Plugin UAT ... TEST
  40. 40. Generating a release candidate Build  and  Fast  Tests Build a release candidate early Slower  Tests Reuse, don’t rebuild Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  41. 41. Generating a release candidate Build  and  Fast  Tests Build a release candidate early Slower  Tests Reuse, don’t rebuild Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon Choose a release strategy UAT TEST
  42. 42. Generating a release candidate SCM  commitSCM server Build  and  Fast  Tests Slower  Tests SNAPSHOT Acceptance  Tests Code  Quality  Metrics Release  Candidate 1.0.1
  43. 43. Generating a release candidate What about maven? SCM  commitSCM server Build  and  Fast  Tests Slower  Tests SNAPSHOT Acceptance  Tests Code  Quality  Metrics Release  Candidate 1.0.1
  44. 44. Generating a release candidate What about maven? Strategy 1 : The Maven Release Plugin but not as we know it... 1.0.0-SNAPSHOT mvn  release 1.0.65
  45. 45. Generating a release candidate What about maven? Strategy 2 : Just set the version 1.0.0-SNAPSHOT mvn  versions:set mvn  install Artifactory Plugin Nexus Plugin 1.0.65
  46. 46. Generating a release candidate Build  and  Fast  Tests Build a release candidate early Slower  Tests Reuse, don’t rebuild Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon Choose an archiving strategy UAT TEST
  47. 47. Generating a release candidate Build  and  Fast  Tests Build a release candidate early Slower  Tests Reuse, don’t rebuild Acceptance  Tests Code  Quality  Metrics maven Release  Candidate 1.0.1 Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Copy Artifacts Plugin Deploy  to  ProducLon Artifactory Plugin Nexus Plugin ... UAT TEST
  48. 48. Automated DeploymentBuild  and  Fast  Tests Automate your deployments Slower  Tests Reuse deployment processes Acceptance  Tests Deploy your environments too Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  49. 49. Automated DeploymentBuild  and  Fast  Tests Automate your deployments Slower  Tests Reuse deployment processes Acceptance  Tests Deploy your environments too Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon Deployer Plugin SSH Plugin ... UAT TEST
  50. 50. Visualizing the build process Build  and  Fast  Tests Slower  Tests Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  51. 51. Build  and  Fast  Tests Slower  Tests Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  52. 52. Visualizing the build process Build  and  Fast  Tests Slower  Tests Acceptance  Tests Code  Quality  Metrics Release  Candidate Deploy  to  Test 1.0.1 PROD Deploy  to  UAT Deploy  to  ProducLon UAT TEST
  53. 53. So how do you deliver? Rigorous testing and reporting gives us confidence in our product...
  54. 54. So how do you deliver? And a Jenkins build pipeline makes automated delivery possible.
  55. 55. どうもありがとうございまし Thank  You John  Ferguson  Smart Email:  john.smart@wakaleo.com Web:  hGp://www.wakaleo.com TwiGer:  wakaleo
  56. 56. Training and Consulting Services in TDD, BDD and ATDD Automated Acceptance and Regression Testing Build Automation and Continuous Delivery Clean Coding Practices
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×