SlideShare une entreprise Scribd logo
1  sur  33
Unit Tests Aren’t Enough
 and your QA guy can’t regression test for you...
Will this test save you?

def test_create_new_widget
 post :create_widget
 assert_response :success
end
With this code?
# view:
<%= form_for :widget %>
 <%= submit_tag “Create” %>
<% end %>

# controller:
def create; puts “doing nothing”; end
The Individual Pieces
      Work...
... but your application
        does not!
What do we do?
QA Guy!
Benefits
Would he find the bug
   from before?
What if the bug came
 from a refactoring?
YOU are ultimately
responsible for your app
Let’s Automate
Hello, Selenium!
The Code
The API
Programmers still do
    the testing!
Hello, Cucumber!
QA Can Write This

Scenario: Searching on Google
 Given I am on the homepage
 When I fill in “q” with “cukes”
 And I press “Google Search”
 Then I should see “cukes.info”
Scenario: Searching on Google
Given I am on the homepage
When I fill in “q” with “cukes”
And I press “Google Search”
Then I should see “cukes.info”
The Output
Scenario: Searching on Google    # features/google_search.feature:6
 Given I am on the homepage      # features/step_definitions/webrat_steps.rb:6
 When I fill in "q" with "cukes" # features/step_definitions/webrat_steps.rb:29
 And I press "Google Search"    # features/step_definitions/webrat_steps.rb:17
 Then I should see "cukes.info" # features/step_definitions/webrat_steps.rb:121


1 scenario (1 passed)
4 steps (4 passed)
0m10.206s
Webrat
http://gitrdoc.com/brynary/webrat/tree/master
Webrat Caveats


• Won’t detect elements hidden by a class
• Won’t click things that aren’t links or
  buttons (usually not a big deal)
Beyond Webrat

When /^I search for “([^”])”$/ do |s|
 When %Q|I fill in “q” with “#{s}”|
 And %Q|I press “Google Search”|
end
Cucumber Structure


features/*.feature
features/step_definitions/*_steps.rb
features/support/*.rb
Cuke-Talker
http://github.com/trotter/cuke-talker
Commands
• Given, When, Then, And
•!
• define step
• run feature
• show history
• show step definitions
Resources


•   http://cukes.info

•   http://gitrdoc.com/brynary/webrat/tree/master

•   http://github.com/trotter/cuke-talker
Credits

http://www.flickr.com/photos/jflinchbaugh/3967895188/
http://www.flickr.com/photos/vizzzual-dot-com/2738586453/
http://www.flickr.com/photos/frangipani_photograph/
3137183488/
http://www.flickr.com/photos/chrismoncus/1366654132/

Contenu connexe

Tendances

Build Facebook Connect enabled applications with Google Apps Engine
Build Facebook Connect enabled applications with Google Apps EngineBuild Facebook Connect enabled applications with Google Apps Engine
Build Facebook Connect enabled applications with Google Apps EngineWeb2 Ireland
 
DevOpsDays Ignite: Ops Scrumban, from chaos to sanity
DevOpsDays Ignite: Ops Scrumban, from chaos to sanityDevOpsDays Ignite: Ops Scrumban, from chaos to sanity
DevOpsDays Ignite: Ops Scrumban, from chaos to sanityAlexis Lê-Quôc
 
Ember.js - Harnessing Convention Over Configuration
Ember.js - Harnessing Convention Over ConfigurationEmber.js - Harnessing Convention Over Configuration
Ember.js - Harnessing Convention Over ConfigurationTracy Lee
 
Mobile web-debug
Mobile web-debugMobile web-debug
Mobile web-debugFINN.no
 
Time to stop breaking your promises - dealing with 404's, broken URLs and pla...
Time to stop breaking your promises - dealing with 404's, broken URLs and pla...Time to stop breaking your promises - dealing with 404's, broken URLs and pla...
Time to stop breaking your promises - dealing with 404's, broken URLs and pla...Ruth Cheesley
 
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Matt Raible
 
Hooks, Actions, and Filters Oh My!
Hooks, Actions, and Filters Oh My!Hooks, Actions, and Filters Oh My!
Hooks, Actions, and Filters Oh My!David Wolfpaw
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsJustin James
 
Cool Shit You Can Do With WordPress (BrightonSEO 2014)
Cool Shit You Can Do With WordPress (BrightonSEO 2014)Cool Shit You Can Do With WordPress (BrightonSEO 2014)
Cool Shit You Can Do With WordPress (BrightonSEO 2014)Patrick Hathaway
 
WordCamp ATL 2017 - Beginner Session - Plugins
WordCamp ATL 2017 - Beginner Session - PluginsWordCamp ATL 2017 - Beginner Session - Plugins
WordCamp ATL 2017 - Beginner Session - PluginsMickey Mellen
 
What da Frontend? - How to start learning Front-end technology without pain.
What da Frontend? - How to start learning Front-end technology without pain.What da Frontend? - How to start learning Front-end technology without pain.
What da Frontend? - How to start learning Front-end technology without pain.Teerasej Jiraphatchandej
 
Professional Persona Project
Professional Persona ProjectProfessional Persona Project
Professional Persona ProjectNtricateDesigns
 
WordPress maintenance - Keeping it all running smoothly
WordPress maintenance - Keeping it all running smoothlyWordPress maintenance - Keeping it all running smoothly
WordPress maintenance - Keeping it all running smoothlyKelli Wise
 
Blog for the price of a domain
Blog for the price of a domainBlog for the price of a domain
Blog for the price of a domainJan Collijs
 
rendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteursrendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteursSerge Esteves
 
merb.intro
merb.intromerb.intro
merb.intropjb3
 
From 0 to Developer - Silicon Valley Code Camp
From 0 to Developer - Silicon Valley Code CampFrom 0 to Developer - Silicon Valley Code Camp
From 0 to Developer - Silicon Valley Code CampTracy Lee
 
Web project details
Web project detailsWeb project details
Web project detailsSubrat Dash
 
APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...
APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...
APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...apidays
 

Tendances (20)

Build Facebook Connect enabled applications with Google Apps Engine
Build Facebook Connect enabled applications with Google Apps EngineBuild Facebook Connect enabled applications with Google Apps Engine
Build Facebook Connect enabled applications with Google Apps Engine
 
DevOpsDays Ignite: Ops Scrumban, from chaos to sanity
DevOpsDays Ignite: Ops Scrumban, from chaos to sanityDevOpsDays Ignite: Ops Scrumban, from chaos to sanity
DevOpsDays Ignite: Ops Scrumban, from chaos to sanity
 
Ember.js - Harnessing Convention Over Configuration
Ember.js - Harnessing Convention Over ConfigurationEmber.js - Harnessing Convention Over Configuration
Ember.js - Harnessing Convention Over Configuration
 
Mobile web-debug
Mobile web-debugMobile web-debug
Mobile web-debug
 
Time to stop breaking your promises - dealing with 404's, broken URLs and pla...
Time to stop breaking your promises - dealing with 404's, broken URLs and pla...Time to stop breaking your promises - dealing with 404's, broken URLs and pla...
Time to stop breaking your promises - dealing with 404's, broken URLs and pla...
 
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
Cloud Native PWAs (progressive web apps with Spring Boot and Angular) - DevNe...
 
Hooks, Actions, and Filters Oh My!
Hooks, Actions, and Filters Oh My!Hooks, Actions, and Filters Oh My!
Hooks, Actions, and Filters Oh My!
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with Sails
 
Cool Shit You Can Do With WordPress (BrightonSEO 2014)
Cool Shit You Can Do With WordPress (BrightonSEO 2014)Cool Shit You Can Do With WordPress (BrightonSEO 2014)
Cool Shit You Can Do With WordPress (BrightonSEO 2014)
 
WordCamp ATL 2017 - Beginner Session - Plugins
WordCamp ATL 2017 - Beginner Session - PluginsWordCamp ATL 2017 - Beginner Session - Plugins
WordCamp ATL 2017 - Beginner Session - Plugins
 
Rails OO views
Rails OO viewsRails OO views
Rails OO views
 
What da Frontend? - How to start learning Front-end technology without pain.
What da Frontend? - How to start learning Front-end technology without pain.What da Frontend? - How to start learning Front-end technology without pain.
What da Frontend? - How to start learning Front-end technology without pain.
 
Professional Persona Project
Professional Persona ProjectProfessional Persona Project
Professional Persona Project
 
WordPress maintenance - Keeping it all running smoothly
WordPress maintenance - Keeping it all running smoothlyWordPress maintenance - Keeping it all running smoothly
WordPress maintenance - Keeping it all running smoothly
 
Blog for the price of a domain
Blog for the price of a domainBlog for the price of a domain
Blog for the price of a domain
 
rendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteursrendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteurs
 
merb.intro
merb.intromerb.intro
merb.intro
 
From 0 to Developer - Silicon Valley Code Camp
From 0 to Developer - Silicon Valley Code CampFrom 0 to Developer - Silicon Valley Code Camp
From 0 to Developer - Silicon Valley Code Camp
 
Web project details
Web project detailsWeb project details
Web project details
 
APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...
APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...
APIdays Paris 2018 - An API Is Not Enough: Crafting a Developer Experience Ad...
 

En vedette

Goodness–of–fit tests for regression models: the functional data case
Goodness–of–fit tests for regression models: the functional data caseGoodness–of–fit tests for regression models: the functional data case
Goodness–of–fit tests for regression models: the functional data caseNeuroMat
 
Functional Regression Analysis
Functional Regression AnalysisFunctional Regression Analysis
Functional Regression AnalysisNeuroMat
 
All you need to know about regression testing | David Tzemach
All you need to know about regression testing | David TzemachAll you need to know about regression testing | David Tzemach
All you need to know about regression testing | David TzemachDavid Tzemach
 
Regression Testing
Regression TestingRegression Testing
Regression TestingHabibur Rony
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterDeclan Whelan
 
Regression testing
Regression testingRegression testing
Regression testingMohua Amin
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projectssriks7
 

En vedette (8)

Goodness–of–fit tests for regression models: the functional data case
Goodness–of–fit tests for regression models: the functional data caseGoodness–of–fit tests for regression models: the functional data case
Goodness–of–fit tests for regression models: the functional data case
 
Functional Regression Analysis
Functional Regression AnalysisFunctional Regression Analysis
Functional Regression Analysis
 
All you need to know about regression testing | David Tzemach
All you need to know about regression testing | David TzemachAll you need to know about regression testing | David Tzemach
All you need to know about regression testing | David Tzemach
 
Regression Testing
Regression TestingRegression Testing
Regression Testing
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
 
Regression testing
Regression testingRegression testing
Regression testing
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projects
 
Agile Testing by Example
Agile Testing by ExampleAgile Testing by Example
Agile Testing by Example
 

Similaire à Unit Tests Aren't Enough

Android testing calabash
Android testing calabashAndroid testing calabash
Android testing calabashkellinreaver
 
Web driver selenium simplified
Web driver selenium simplifiedWeb driver selenium simplified
Web driver selenium simplifiedVikas Singh
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructureLindsay Holmwood
 
Testing C# and ASP.net using Ruby
Testing C# and ASP.net using RubyTesting C# and ASP.net using Ruby
Testing C# and ASP.net using RubyBen Hall
 
BDD / cucumber /Capybara
BDD / cucumber /CapybaraBDD / cucumber /Capybara
BDD / cucumber /CapybaraShraddhaSF
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsLuís Bastião Silva
 
Introduce cucumber
Introduce cucumberIntroduce cucumber
Introduce cucumberBachue Zhou
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleMarcio Klepacz
 
Mobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B ExperimentsMobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B Experimentslacyrhoades
 
Cucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet UpCucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet Updimakovalenko
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011dimakovalenko
 
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWJest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWHolger Grosse-Plankermann
 
Functional Testing for React Native Apps
Functional Testing for React Native AppsFunctional Testing for React Native Apps
Functional Testing for React Native AppsK. Matthew Dupree
 
Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Łukasz Proszek
 

Similaire à Unit Tests Aren't Enough (20)

Android testing calabash
Android testing calabashAndroid testing calabash
Android testing calabash
 
Web driver selenium simplified
Web driver selenium simplifiedWeb driver selenium simplified
Web driver selenium simplified
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
 
Testing C# and ASP.net using Ruby
Testing C# and ASP.net using RubyTesting C# and ASP.net using Ruby
Testing C# and ASP.net using Ruby
 
BDD / cucumber /Capybara
BDD / cucumber /CapybaraBDD / cucumber /Capybara
BDD / cucumber /Capybara
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.js
 
Introduce cucumber
Introduce cucumberIntroduce cucumber
Introduce cucumber
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and Nimble
 
Cucumber & BDD
Cucumber & BDDCucumber & BDD
Cucumber & BDD
 
Mobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B ExperimentsMobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B Experiments
 
Gems Of Selenium
Gems Of SeleniumGems Of Selenium
Gems Of Selenium
 
Automation Zaman Now
Automation Zaman NowAutomation Zaman Now
Automation Zaman Now
 
Cucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet UpCucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet Up
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011
 
Jest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRWJest: Frontend Testing richtig gemacht @WebworkerNRW
Jest: Frontend Testing richtig gemacht @WebworkerNRW
 
BDD: Behind the Scenes
BDD: Behind the ScenesBDD: Behind the Scenes
BDD: Behind the Scenes
 
Functional Testing for React Native Apps
Functional Testing for React Native AppsFunctional Testing for React Native Apps
Functional Testing for React Native Apps
 
Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.
 
Cucumber testing
Cucumber testingCucumber testing
Cucumber testing
 
Cucumber testing
Cucumber testingCucumber testing
Cucumber testing
 

Dernier

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Dernier (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Unit Tests Aren't Enough

Notes de l'éditeur

  1. It won&amp;#x2019;t because the test code was testing create_widget, not create
  2. Offload the work to someone else. He behaves like a user and finds problems the user would find.
  3. He certainly would
  4. Probably not, the QA guy typically only checks new features and will do a regression test every month or so.
  5. Came out of work at Thoughtworks. Works on all platforms with all browsers and a ton of languages have clients
  6. Is your QA guy going to learn a full on programming language?
  7. There&amp;#x2019;s a lot here and your QA guy isn&amp;#x2019;t going to learn it all
  8. This doesn&amp;#x2019;t seem too good. We&amp;#x2019;d much rather have QA / business involved (and hopefully even doing the work).
  9. Scenario tells what we&amp;#x2019;re testing
  10. Given sets up assumptions about your Scenario
  11. When performs actions
  12. And duplicates whatever came before
  13. Then is your assertion
  14. And let&amp;#x2019;s see this run in cucumber
  15. 90% of what you do is click a link, fill in text, and assert that text is present. Webrat handles these for you.
  16. Add your own step definitions in features/step_definitions/*.rb. There are some step_definitions your QA guy can&amp;#x2019;t implement and you&amp;#x2019;ll have to help.
  17. Features go at the top level. Steps definitions go in step_definitions. Support files go in support. Cucumber will load everything.
  18. Writing cucumber features can be time consuming. Cuke-talker is a command line IDE for writing them.
  19. cuke-talker isn&amp;#x2019;t even close to done. We&amp;#x2019;re looking for help (yay open source!)
  20. Given, When, Then, And behave just like they do in cucumber ! lets you execute arbitrary ruby define step opens a subrepel for defining a step feature will run a feature file from your features dir (will soon be run feature) show history shows all your previous Given, When, Then, Ands show step definitions shows all the steps you&amp;#x2019;ve defined
  21. Yay Pictures!