0
ACCEPTANCE &      INTEGRATION TESTING WITH               BEHAT                      DPC 2012 - Ben Waine - @bwaine        ...
The Environment                          Oracle Open Box                            Ubuntu 12.12                      Beha...
Demo: The EnvironmentThursday, 7 June 12
BEN WAINE    • Freelance Software Engineer    •Worked with Behat at Sky and    IPC    •DPC was the second    conference I ...
Todays Roadmap           1. Introduction to BDD and Behat           2. How to Write Behat Tests           3. Mink - UI Tes...
Todays Roadmap           1. Introduction to BDD and Behat           2. How to Write Behat Tests           3. Mink - UI Tes...
My QuestionsThursday, 7 June 12
Behaviour Driven DevelopmentThursday, 7 June 12
StoriesThursday, 7 June 12
Dan North - Whats In A Story?                      http://dannorth.net/whats-in-a-story/Thursday, 7 June 12
Dan North’s Recipe For A Story                Title (one line describing the story)                Narrative:             ...
Behat        ‘A open source behaviour driven development [testing]                            framework’                  ...
Behat - What Can We Do With It?                             Test Anything!     Web Applications          Shell Scripts    ...
Where Does Behat Sit In The BDD         Ecosystem?                        PHPSpec - Class Level BDD                      B...
BDD == TDD??                      http://dannorth.net/2012/05/31/bdd-is-like-tdd-if/Thursday, 7 June 12
Behat - Installation So Easy I’m Not           Even Covering It.                      Composer          Pear              ...
My Friend Shashi -            http://lestbddphp.wordpress.com/2012/05/07/enjoy-                          minkextension-for...
Testing Unix’s famous ‘ls’ command                            An Example From behat.org                            1. In t...
Testing Unix’s famous ‘ls’ command                         What does a behat test consist of?                       1. Run...
GherkinThursday, 7 June 12
Testing Unix’s famous ‘ls’ command                               features/ls.feature        Feature: ls          In order ...
Dan North’s Recipe For A Story                Title (one line describing the story)                Narrative:             ...
Steps - Plain Old PHPThursday, 7 June 12
features/bootstrap/FeatureContext.php <?php use BehatBehatContextBehatContext,     BehatBehatExceptionPendingException; us...
features/bootstrap/FeatureContext.php               /** @Given /^I have a file named "([^"]*)"$/ */               public f...
Testing Unix’s famous ‘ls’ command                      What does a behat test consist of?                         Feature...
Behat Directory StructureThursday, 7 June 12
Exercise One: Hello WorldThursday, 7 June 12
Exercise One       Write a php script which takes the users name as it’s only                              argument.      ...
The BDD approach - write          scenarios that define behaviour                        first.Thursday, 7 June 12
Setting Up A Project                      1. cd /home/tuser/tutorial/02-HelloScript                            2. run bin/...
Behat Killer Feature - Write A Step     Get The Regex For Free!Thursday, 7 June 12
The BDD Workflow                              1. Create features/hello.feature                        2. Write a scenario t...
Clues         1. The Command is in another directory. Change to that                     directory in the given step?     ...
The BDD Workflow                              1. Create features/hello.feature                        2. Write a scenario t...
The BDD Workflow        5. Complete the methods in the FeatureContext.php file.                      6. Run bin/behat featur...
Dan North Revisited:                      Making a Good Story   The title should describe an activity   The narrative shou...
Time to share.Thursday, 7 June 12
UI Testing With Behat & MinkThursday, 7 June 12
My QuestionsThursday, 7 June 12
Mink            Goutte               Web Driver          Zombie Js                      Selenium                SahiThursd...
Mink - A UI Testing Tool Abstraction      Headless Browser (Goutte)      Makes HTTP calls and inspect the output      Fast...
Included With Mink                                   A new context class to use                          Bundled steps to ...
Using MinkContext        If you have custom steps or an existing FeatureContext                      <?php                ...
Exercise Two:                      Hello World On The WebThursday, 7 June 12
Exercise Two                        Write a simple web page with a form.                      The form should have a singl...
Setting Up A Project                      1. cd /home/tuser/tutorial/03-HelloPage                             2. run bin/b...
Using MinkContext        If you have custom steps or an existing FeatureContext                      <?php                ...
Using MinkContext   New in 2.4 - If Mink extension is installed and you have no                   custom steps. It’s autom...
The BDD Workflow                              1. Create features/hello.feature                         2. Write a scenario ...
The BDD Workflow                              5. FAIL                         6. Write web page                            ...
Debugging Steps                              Then /^print last response$/                              Then /^show last re...
Testing Javascript InteractionsThursday, 7 June 12
Tagging Tests For Javascript Testing       Use tags to tell Mink to use a full browser rather than                        ...
Steps To Use For Testing JS              Custom steps which manipulate the mink session.              /**                *...
Steps To Use For Testing JS       See: http://mink.behat.org for tips on what we can do.Thursday, 7 June 12
Exercise Three:                      Hello World On The Web                           With JavascriptThursday, 7 June 12
ExerciseThree                      Extend your solution from the previous exercise.     Use the supplied jQuery plugin to ...
The BDD Workflow                           1. Open features/hello.feature           2. Write additional scenarios to test t...
The BDD Workflow                                   6. FAIL                       7. Write additional functionality         ...
Dynamic Fixture Building: Phabric                      Shameless self promotion. I Built it.Thursday, 7 June 12
So Far...Thursday, 7 June 12
Options For Loading Data           SQL Fixtures                   Behat’s Fixture                                         ...
I Don’t like Fixture Files.Thursday, 7 June 12
Behat’s Fixture Building Tool    http://propel.posterous.com/propel2-meets-behat-for-the-winThursday, 7 June 12
PhabricThursday, 7 June 12
Phabric Features                      Represent Table Data In A Gherkin Table Node       Scenario: Basic Data Insert      ...
Phabric Features               Map Business Friendly Names To Column Headers    Scenario: Change Column Names    Given The...
Phabric Features                      Default Values Allow You To Omit Columns     Scenario: Use a default value - use def...
Phabric FeaturesTransformations Allow Data To Be Reformatted Before Insert                or Update to the Database.      ...
Phabric Features                       Relationships Supported        Powered By Doctrine DBAL - Works On Most Popular    ...
Phabric DemoThursday, 7 June 12
A side note: HooksThursday, 7 June 12
Exercise Four: Play With PhabricThursday, 7 June 12
Exercise Four       Use the supplied example to populate the web page with                        this mornings tutorials....
Common ContextsThursday, 7 June 12
What: Out the box solutions to common problems.           Where: https://github.com/Behat/CommonContextsThursday, 7 June 12
My Favourite & Example                      WebApi Context - Used to test web services.Thursday, 7 June 12
Using A Common Context                          Ensure the common contexts are installed.               /**               ...
Exercise Five                      Use the new WebApi steps to spec a simple API.          Use the provided files to create...
Case Study: Behat At SkybetThursday, 7 June 12
Sky Bet              Skybet.com - A large sports betting site in the UK                      Technology: PHP, MySQL, nodej...
Problems                      1) Definition of Done                           2) Regression                      3) Testing...
Solution                 Build a workflow that lets people work together,                  helps fight regression and provid...
The Players: Business AnalystThursday, 7 June 12
The Players:The TesterThursday, 7 June 12
Ninja,                           Cat Like,                      Good Looking,                        Charismatic,         ...
Solution    Business Analysts take business requirements write stories.                             Testers ‘translate’ in...
Solution A story is ‘done’ when the Behat tests pass and a final check                    by the BA is complete.           ...
Tips From The Trenches                      Make sure you have your testing mix correct.Thursday, 7 June 12
Thursday, 7 June 12
Trouble :(Thursday, 7 June 12
Tips From The Trenches                      Keep you Gherkin dialect lean and mean.                      Make someone in c...
Tips From The Trenches       Consider writing abstractions over the provided Behat /         Mink Steps to make your featu...
Time Left / Take Home ExerciseThursday, 7 June 12
Point Behat At Your Own Website       And Write Some Scenarios.                       1) cd /home/tuser/tutorial/06-takeho...
TLDR - Behat Is Super Cool. Go             Forth And Use It.                      Questions?Thursday, 7 June 12
Thanks :-)              Please Rate My Tutorial: https://joind.in/6218              Websites & Sources              http:/...
Upcoming SlideShare
Loading in...5
×

Behat dpc12

2,340

Published on

Slides from my Tutorial

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,340
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
47
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "Behat dpc12"

  1. 1. ACCEPTANCE & INTEGRATION TESTING WITH BEHAT DPC 2012 - Ben Waine - @bwaine https://joind.in/6218Thursday, 7 June 12
  2. 2. The Environment Oracle Open Box Ubuntu 12.12 Behat + Examples Installed 1. Get Open Box and the VHD from the provided USB stick. 2. Install Open Box 3. Load the VHDThursday, 7 June 12
  3. 3. Demo: The EnvironmentThursday, 7 June 12
  4. 4. BEN WAINE • Freelance Software Engineer •Worked with Behat at Sky and IPC •DPC was the second conference I ever attended in 2009. Glad to be back! •Twitter: @bwaineThursday, 7 June 12
  5. 5. Todays Roadmap 1. Introduction to BDD and Behat 2. How to Write Behat Tests 3. Mink - UI Testing With Behat 4. Mink - Javascript Testing 5. Phabric - Fixture Building 6. Behat - Common Contexts 7. Case Study - Behat In The Wild 8. Tips From The Trenches 9. QuestionsThursday, 7 June 12
  6. 6. Todays Roadmap 1. Introduction to BDD and Behat 2. How to Write Behat Tests 3. Mink - UI Testing With Behat 4. Mink - Javascript Testing 5. Phabric - Fixture Building 6. Behat - Common Contexts 7. Case Study - Behat In The Wild 8. Tips From The Trenches 9. QuestionsThursday, 7 June 12
  7. 7. My QuestionsThursday, 7 June 12
  8. 8. Behaviour Driven DevelopmentThursday, 7 June 12
  9. 9. StoriesThursday, 7 June 12
  10. 10. Dan North - Whats In A Story? http://dannorth.net/whats-in-a-story/Thursday, 7 June 12
  11. 11. Dan North’s Recipe For A Story Title (one line describing the story) Narrative: As a [role] I want [feature] So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: Title Given [context] And [some more context]... When [event] Then [outcome] And [another outcome]...Thursday, 7 June 12
  12. 12. Behat ‘A open source behaviour driven development [testing] framework’ ‘Inspired by Ruby’s Cucumber project’Thursday, 7 June 12
  13. 13. Behat - What Can We Do With It? Test Anything! Web Applications Shell Scripts Your developers relationship Web Services PHP Scripts skillsThursday, 7 June 12
  14. 14. Where Does Behat Sit In The BDD Ecosystem? PHPSpec - Class Level BDD Behat - Service / UI Level TestingThursday, 7 June 12
  15. 15. BDD == TDD?? http://dannorth.net/2012/05/31/bdd-is-like-tdd-if/Thursday, 7 June 12
  16. 16. Behat - Installation So Easy I’m Not Even Covering It. Composer Pear Phar GithubThursday, 7 June 12
  17. 17. My Friend Shashi - http://lestbddphp.wordpress.com/2012/05/07/enjoy- minkextension-for-behat/ Great article on setting up Behat 2.4 (latest version)Thursday, 7 June 12
  18. 18. Testing Unix’s famous ‘ls’ command An Example From behat.org 1. In the VM open Sublime Text 2 2. cd /home/tuser/tutorial/01-LinuxCommandsThursday, 7 June 12
  19. 19. Testing Unix’s famous ‘ls’ command What does a behat test consist of? 1. Run: bin/behat features/ls.feature 2. Open features/ls.feature 3. Open features/bootstrap/FeatureContext.phpThursday, 7 June 12
  20. 20. GherkinThursday, 7 June 12
  21. 21. Testing Unix’s famous ‘ls’ command features/ls.feature Feature: ls In order to see the directory structure As a UNIX user I need to be able to list the current directorys contents Scenario: List 2 files in a directory Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """ Source: http://docs.behat.org/quick_intro.htmlThursday, 7 June 12
  22. 22. Dan North’s Recipe For A Story Title (one line describing the story) Narrative: As a [role] I want [feature] So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: Title Given [context] And [some more context]... When [event] Then [outcome] And [another outcome]...Thursday, 7 June 12
  23. 23. Steps - Plain Old PHPThursday, 7 June 12
  24. 24. features/bootstrap/FeatureContext.php <?php use BehatBehatContextBehatContext, BehatBehatExceptionPendingException; use BehatGherkinNodePyStringNode, BehatGherkinNodeTableNode; class FeatureContext extends BehatContext { private $output; /** @Given /^I am in a directory "([^"]*)"$/ */ public function iAmInADirectory($dir) { if (!file_exists($dir)) { mkdir($dir); } chdir($dir); }Source: http://docs.behat.org/quick_intro.html 1/2Thursday, 7 June 12
  25. 25. features/bootstrap/FeatureContext.php /** @Given /^I have a file named "([^"]*)"$/ */ public function iHaveAFileNamed($file) { touch($file); } /** @When /^I run "([^"]*)"$/ */ public function iRun($command) { exec($command, $output); $this->output = trim(implode("n", $output)); } /** @Then /^I should get:$/ */ public function iShouldGet(PyStringNode $string) { if ((string) $string !== $this->output) { throw new Exception( "Actual output is:n" . $this->output ); } } 2/2Thursday, 7 June 12
  26. 26. Testing Unix’s famous ‘ls’ command What does a behat test consist of? Feature Files & Feature Contexts Which contain: Features / Stories and StepsThursday, 7 June 12
  27. 27. Behat Directory StructureThursday, 7 June 12
  28. 28. Exercise One: Hello WorldThursday, 7 June 12
  29. 29. Exercise One Write a php script which takes the users name as it’s only argument. When executed it should write ‘Hello’ to the screen. eg. Hello Ben If no name is given then it should output ‘Hello Stranger’Thursday, 7 June 12
  30. 30. The BDD approach - write scenarios that define behaviour first.Thursday, 7 June 12
  31. 31. Setting Up A Project 1. cd /home/tuser/tutorial/02-HelloScript 2. run bin/behat --initThursday, 7 June 12
  32. 32. Behat Killer Feature - Write A Step Get The Regex For Free!Thursday, 7 June 12
  33. 33. The BDD Workflow 1. Create features/hello.feature 2. Write a scenario to test the ‘hello’ script 3. Run bin/behat features/hello.feature 4. Copy the steps into features/bootstrap/ FeatureContext.phpThursday, 7 June 12
  34. 34. Clues 1. The Command is in another directory. Change to that directory in the given step? 2. When is an event or action 3. Then tests the eventThursday, 7 June 12
  35. 35. The BDD Workflow 1. Create features/hello.feature 2. Write a scenario to test the ‘hello’ script 3. Run bin/behat features/hello.feature 4. Copy the steps into features/bootstrap/ FeatureContext.phpThursday, 7 June 12
  36. 36. The BDD Workflow 5. Complete the methods in the FeatureContext.php file. 6. Run bin/behat features/hello.feature 7. FAIL 8. Write the Hello Script. 9. PASSThursday, 7 June 12
  37. 37. Dan North Revisited: Making a Good Story The title should describe an activity The narrative should include a role, a feature and a benefit The scenario title should say what’s different The scenario should be described in terms of Givens, Events and Outcomes The givens should define all of, and no more than, the required context The event should describe the feature The story should be small enough to fit in an iterationThursday, 7 June 12
  38. 38. Time to share.Thursday, 7 June 12
  39. 39. UI Testing With Behat & MinkThursday, 7 June 12
  40. 40. My QuestionsThursday, 7 June 12
  41. 41. Mink Goutte Web Driver Zombie Js Selenium SahiThursday, 7 June 12
  42. 42. Mink - A UI Testing Tool Abstraction Headless Browser (Goutte) Makes HTTP calls and inspect the output Fast and lightweight Can’t test Javascipt / AJAX Browser Controller (Sahi / Selenium / WebDriver) Control a real browser Simulates user interaction with a web site Can test javascript / AJAX Slower than headless browserThursday, 7 June 12
  43. 43. Included With Mink A new context class to use Bundled steps to test UI elements with. Eg: Given I am on "/wiki/Main_Page" When I fill in "search" with "Behavior Driven Development" And I press "searchButton" Then I should see "agile software development" Source: http://behat.org/cookbook/behat_and_mink.htmlThursday, 7 June 12
  44. 44. Using MinkContext If you have custom steps or an existing FeatureContext <?php class FeatureContext extends BehatContext { public function __construct(array $parameters) { $this->useContext( mink, new BehatMinkExtensionContextMinkContext ); } }Thursday, 7 June 12
  45. 45. Exercise Two: Hello World On The WebThursday, 7 June 12
  46. 46. Exercise Two Write a simple web page with a form. The form should have a single field ‘name’. When typing in a name and pressing submit, the page should reload and print the message ‘Hello _name_’ eg. Hello Ben On the page with the greeting a link with the text ‘again’ should take you back to the original form page.Thursday, 7 June 12
  47. 47. Setting Up A Project 1. cd /home/tuser/tutorial/03-HelloPage 2. run bin/behat --init 3. Web page goes in the ‘public’ directory 4. Add behat.yml to 03-HelloPage See example misc/behat.ymlThursday, 7 June 12
  48. 48. Using MinkContext If you have custom steps or an existing FeatureContext <?php class FeatureContext extends BehatContext { public function __construct(array $parameters) { $this->useContext( mink, new BehatMinkExtensionContextMinkContext ); } }Thursday, 7 June 12
  49. 49. Using MinkContext New in 2.4 - If Mink extension is installed and you have no custom steps. It’s automatic! Great for testers.Thursday, 7 June 12
  50. 50. The BDD Workflow 1. Create features/hello.feature 2. Write a scenario to test the ‘hello’ page Use bundled Mink Steps 3. Use MinkContext 4. Run bin/behat features/hello.feature Wow no new steps required!Thursday, 7 June 12
  51. 51. The BDD Workflow 5. FAIL 6. Write web page 7. PASSThursday, 7 June 12
  52. 52. Debugging Steps Then /^print last response$/ Then /^show last response$/ ‘And I Wait’ - implement yourself with fgets Lets try this on the test we have just written.Thursday, 7 June 12
  53. 53. Testing Javascript InteractionsThursday, 7 June 12
  54. 54. Tagging Tests For Javascript Testing Use tags to tell Mink to use a full browser rather than Goutte. @javascript Scenario: As an attendee I should be able to tag scenarios after reading this Given I am testing javascript When I read this slide Then Ill tag scenarios with @javascript LIKE A BOSSThursday, 7 June 12
  55. 55. Steps To Use For Testing JS Custom steps which manipulate the mink session. /** * @Then /^I wait for the suggestion box to appear$/ */ public function iWaitForTheSuggestionBoxToAppear() { $this->getSubcontext(mink) ->getSession() ->wait(1000, "$(.name).children().length > 0"); }Thursday, 7 June 12
  56. 56. Steps To Use For Testing JS See: http://mink.behat.org for tips on what we can do.Thursday, 7 June 12
  57. 57. Exercise Three: Hello World On The Web With JavascriptThursday, 7 June 12
  58. 58. ExerciseThree Extend your solution from the previous exercise. Use the supplied jQuery plugin to make your form suggest names as the user enters letters into the name field. See hint.php for some clues.Thursday, 7 June 12
  59. 59. The BDD Workflow 1. Open features/hello.feature 2. Write additional scenarios to test the ‘autocomplete’ functionality 3. Run behat features/hello.feature 4. Add steps to FeatureContext.php and complete 5. Run behat features/hello.featureThursday, 7 June 12
  60. 60. The BDD Workflow 6. FAIL 7. Write additional functionality 8. PASSThursday, 7 June 12
  61. 61. Dynamic Fixture Building: Phabric Shameless self promotion. I Built it.Thursday, 7 June 12
  62. 62. So Far...Thursday, 7 June 12
  63. 63. Options For Loading Data SQL Fixtures Behat’s Fixture Loading Steps With SQL in PhabricThursday, 7 June 12
  64. 64. I Don’t like Fixture Files.Thursday, 7 June 12
  65. 65. Behat’s Fixture Building Tool http://propel.posterous.com/propel2-meets-behat-for-the-winThursday, 7 June 12
  66. 66. PhabricThursday, 7 June 12
  67. 67. Phabric Features Represent Table Data In A Gherkin Table Node Scenario: Basic Data Insert Given The following conference exists | name | description | cdate | | Symfony Day | Anual Symfony conference in Paris | 2011-10-21 09:00:00 | | Zend Con | Zend Conference in San Fran | 2011-10-17 09:00:00 | When I am on "/index.php" And I wait for 10 seconds Then I should see "Zend Con" in the ".conf" elementThursday, 7 June 12
  68. 68. Phabric Features Map Business Friendly Names To Column Headers Scenario: Change Column Names Given The following conference exists | Conf Name | Conf Description | Conf Date | | Symfony Day | Annual Symfony conference in Paris| 2011-10-21 09:00:00 | | Zend Con | Zend Conference in San Fran | 2011-10-17 09:00:00 | When I am on "/index.php" And I wait for 10 seconds Then I should see "Zend Con" in the ".conf" elementThursday, 7 June 12
  69. 69. Phabric Features Default Values Allow You To Omit Columns Scenario: Use a default value - use default value for conference description. Given The following conference exists | Conf Name | Conf Date | | Symfony Day | 21/10/2011 09:00 | | Zend Con | 17/10/2011 09:00 | When I am on "/index.php" And I wait for 10 seconds Then I should see "Zend Con" in the ".conf" elementThursday, 7 June 12
  70. 70. Phabric FeaturesTransformations Allow Data To Be Reformatted Before Insert or Update to the Database. Scenario: Change Column Data - Reformat date Given The following conference exists | Conf Name | Conf Description | Conf Date | | Symfony Day | Anual Symfony conference in Paris | 21/10/2011 09:00 | | Zend Con | Zend Conference in San Fran | 17/10/2011 09:00 | When I am on "/index.php" And I wait for 10 seconds Then I should see "Zend Con" in the ".conf" elementThursday, 7 June 12
  71. 71. Phabric Features Relationships Supported Powered By Doctrine DBAL - Works On Most Popular Databases Interfaces Provided To Integrate Your Own Data Providers Easy Configuration State is set up in the test - clear visibility of what is being testedThursday, 7 June 12
  72. 72. Phabric DemoThursday, 7 June 12
  73. 73. A side note: HooksThursday, 7 June 12
  74. 74. Exercise Four: Play With PhabricThursday, 7 June 12
  75. 75. Exercise Four Use the supplied example to populate the web page with this mornings tutorials.Thursday, 7 June 12
  76. 76. Common ContextsThursday, 7 June 12
  77. 77. What: Out the box solutions to common problems. Where: https://github.com/Behat/CommonContextsThursday, 7 June 12
  78. 78. My Favourite & Example WebApi Context - Used to test web services.Thursday, 7 June 12
  79. 79. Using A Common Context Ensure the common contexts are installed. /** * Feature context. */ class FeatureContext extends MinkContext { public function __construct($kernel) { $this->useContext(symfony_extra, new BehatCommonContextsSymfonyMailerContext($kernel) ); parent::__construct($kernel); } } Source: https://github.com/Behat/CommonContextsThursday, 7 June 12
  80. 80. Exercise Five Use the new WebApi steps to spec a simple API. Use the provided files to create a ‘fake’ that satisfies the scenarios. See the misc folder for a WebApi cheat sheet.Thursday, 7 June 12
  81. 81. Case Study: Behat At SkybetThursday, 7 June 12
  82. 82. Sky Bet Skybet.com - A large sports betting site in the UK Technology: PHP, MySQL, nodejs Testing: PHPUnit, BehatThursday, 7 June 12
  83. 83. Problems 1) Definition of Done 2) Regression 3) Testing The Full StackThursday, 7 June 12
  84. 84. Solution Build a workflow that lets people work together, helps fight regression and provides visibility of progress to the business. BehatThursday, 7 June 12
  85. 85. The Players: Business AnalystThursday, 7 June 12
  86. 86. The Players:The TesterThursday, 7 June 12
  87. 87. Ninja, Cat Like, Good Looking, Charismatic, Hard Working, Modest Developers.Thursday, 7 June 12
  88. 88. Solution Business Analysts take business requirements write stories. Testers ‘translate’ into Gherkin. Developers write steps and build the feature.Thursday, 7 June 12
  89. 89. Solution A story is ‘done’ when the Behat tests pass and a final check by the BA is complete. Tests are run on every commit to master branch. Behat tests test the full stack - provide confidence ‘all the moving parts are working’.Thursday, 7 June 12
  90. 90. Tips From The Trenches Make sure you have your testing mix correct.Thursday, 7 June 12
  91. 91. Thursday, 7 June 12
  92. 92. Trouble :(Thursday, 7 June 12
  93. 93. Tips From The Trenches Keep you Gherkin dialect lean and mean. Make someone in charge of the Gherkin.Thursday, 7 June 12
  94. 94. Tips From The Trenches Consider writing abstractions over the provided Behat / Mink Steps to make your feature files less brittle.Thursday, 7 June 12
  95. 95. Time Left / Take Home ExerciseThursday, 7 June 12
  96. 96. Point Behat At Your Own Website And Write Some Scenarios. 1) cd /home/tuser/tutorial/06-takehome 2) Alter behat.yml to point at your live site 3) Write scenarios that test your siteThursday, 7 June 12
  97. 97. TLDR - Behat Is Super Cool. Go Forth And Use It. Questions?Thursday, 7 June 12
  98. 98. Thanks :-) Please Rate My Tutorial: https://joind.in/6218 Websites & Sources http://behat.org http://mink.behat.org http://dannorth.net/whats-in-a-story/ http://github.com/benwaine/BehatTutorial http://ben-waine.co.uk/blogThursday, 7 June 12
  1. A particular slide catching your eye?

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

×