SlideShare une entreprise Scribd logo
1  sur  70
 
Dima Kovalenko @dimacus www.agilesoftwaretesting.com www.dimakovalenko.com linked in.com/in/dimakovalen ko
Past Experience
Disclaimer > Dima.kind_of?(Developer) => false
Why automated tests?
Why automated tests? ,[object Object],[object Object],[object Object],[object Object],[object Object]
We don’t need Automated Tests!
We don’t need Automated Tests! The End See You all at Selenium 2012!
 
Selenium and Cucumber Img Source: http://pickledillies.homestead.com/
Overview ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Assumptions ,[object Object],[object Object],[object Object],[object Object]
The Stage
The Stage ,[object Object]
The Stage ,[object Object],[object Object]
The Stage ,[object Object],[object Object],[object Object]
The Stage ,[object Object],[object Object],[object Object],[object Object]
The Stage ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Why automated tests? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cucumber
Cucumber ,[object Object]
Cucumber ,[object Object],[object Object]
Cucumber ,[object Object],[object Object],[object Object]
Img Source: http://www.themoreyouknow.com/
Natural Language @search Feature: Searching For Hello World, and some more overview of the feature that we are trying to test @google Scenario: User Searches for Hello World on Google.com Given  I'm on Google's Home Page And  I search for Hello World Then  I should see Wikipedia's Hello World article as 1st result @bing Scenario: User Searches for Hello World on Bing.com Given  I'm on Bing's Home Page And  I search for Hello World Then  I should see car videos as first result
Step Definitions Given   /^I'm on Google's Home Page$/   do @selenium.open " www.google.com " end Given   /^I'm on Bing's Home Page$/   do @selenium.open " www.bing.com " end When   /^I  search for Hello World$/   do @selenium.type "q", "Hello World" end Then   /^I should see Wikipedia's Hello World article as 1st result$/   do assert_stuff end Then   /^I should see car videos as first result$/   do assert_stuff end
Why automated tests? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Who should be writing tests?
Who should be writing tests? ,[object Object],[object Object]
Who should be writing tests? ,[object Object],[object Object],[object Object],[object Object]
Who should be writing tests? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Why automated tests? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Mind Map Solution
Why automated tests? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Good Features ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tags @search Feature: Searching For Hello World, and some more overview of the feature that we are trying to test @google @selenium Scenario: User Searches for Hello World on Google.com Given  I'm on Google's Home Page And  I search for Hello World Then  I should see Wikipedia's Hello World article as 1st result @bing Scenario: User Searches for Hello World on Bing.com Given  I'm on Bing's Home Page And  I search for Hello World Then  I should see car videos as first result
Tags @search Feature: Searching For Hello World, and some more overview of the feature that we are trying to test @google @selenium Scenario: User Searches for Hello World on Google.com Given  I'm on Google's Home Page And  I search for Hello World Then  I should see Wikipedia's Hello World article as 1st result @bing Scenario: User Searches for Hello World on Bing.com Given  I'm on Bing's Home Page And  I search for Hello World Then  I should see car videos as first result
Encourages BDD/TDD ,[object Object],[object Object],[object Object],[object Object],[object Object]
First run
First run
Write Step Definitions
Write More Step Definitions
Even More Step Definitions
Multiple Test Drivers Steam Celerity Culerity FireWatir SafariWatir ChromeWatir Img Source: Wikipedia
Selenium 1 support Before do | scenario | @selenium  =  Selenium::Client::Driver.new ( :host  => "localhost", :port  => 4444, :browser  => “firefox”, :url  => “ www.google.com ”) end
Selenium 1 Tip Use Hpricot Or Nokogiri!!! page =  Hpricot ( @selenium .get_html_source)
 
 
Selenium 2 support
Selenium 2 support ,[object Object]
Selenium 2 support ,[object Object],[object Object]
Capybara ,[object Object],[object Object],[object Object]
Multilingual JVM: JRuby, Java .NET: IronRuby, IronRuby .NET, Mono Adoby Flex: FunFX, Melomel Python Erlang Groovy Scala Closure Javascript Spring
Java Step Definition package cukes; import cuke4duke.annotation.I18n.EN.Given; import java.util.List; import java.util.ArrayList; public class BellySteps { private List<String> belly = new ArrayList<String>(); @Given(&quot;I have (d+) cukes in my belly&quot;) public void bellyCukes(int cukes) { for(int i = 0; i < cukes; i++) { belly.add(&quot;cuke &quot; + i); } } }
i18n
i18n Функционал:  Сложение чисел Чтобы не складывать в уме Все, у кого с этим туго Хотят автоматическое сложение целых чисел Сценарий:  Сложение двух целых чисел Допустим  я ввожу число 50 И  затем ввожу число 70 Если  я нажимаю &quot;+&quot; То  результатом должно быть число 120
i18n Chinese 功能 :  加法 為了避免愚蠢的錯誤 作為一個數學白痴  我希望有人能告訴我兩個數相加的結果 場景大綱 :   將兩個數相加 假 設我已經在計算機上輸入  < 數值 _1> 而 且我已經在計算機上輸入  < 數值 _2> 當 我按下  < 按鈕 > 那 麼螢幕上應該顯示  < 結果 >
i18n LOLz OH HAI:  STUFFING MISHUN:  CUCUMBR I CAN HAZ  IN TEH BEGINNIN 3 CUCUMBRZ WEN  I EAT 2 CUCUMBRZ DEN  I HAS 2 CUCUMBERZ IN MAH BELLY AN  IN TEH END 1 CUCUMBRZ KTHXBAI
Readable Test Results
Bad Features ,[object Object],[object Object],[object Object],[object Object],[object Object]
Regex Step Definitions ,[object Object],[object Object],[object Object]
Hard to find Step Definitions cucumber-tmbundle Vim Rails
Bad Features ,[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusion ,[object Object],[object Object],[object Object],[object Object],[object Object]
@dhh RSpec offends me aesthetically with no  discernible benefit for its added complexity over test/unit.
@dhh RSpec offends me aesthetically with no  discernible benefit for its added complexity over test/unit. Cucumber makes no sense to me unless you have clients  reading the tests.  Why would you build a test-specific parser  for English?
@dhh RSpec offends me aesthetically with no  discernible benefit for its added complexity over test/unit. Cucumber makes no sense to me unless you have clients  reading the tests.  Why would you build a test-specific parser  for English? The important thing is of course that we get people testing, so tools shouldn't matter too much....
Work @ Groupon www.groupon.com/techjobs
The End
 

Contenu connexe

Tendances

Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioMauricio (Salaboy) Salatino
 
Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016Premshree Pillai
 
Capybara testing
Capybara testingCapybara testing
Capybara testingFutureworkz
 
Getting Answers to Your Testing Questions
Getting Answers to Your Testing QuestionsGetting Answers to Your Testing Questions
Getting Answers to Your Testing Questionsjasnow
 
Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)Future Insights
 
Getting By Without "QA"
Getting By Without "QA"Getting By Without "QA"
Getting By Without "QA"Dave King
 
Intro to jQuery - LUGOR - Part 1
Intro to jQuery - LUGOR - Part 1Intro to jQuery - LUGOR - Part 1
Intro to jQuery - LUGOR - Part 1Ralph Whitbeck
 
Auf Augenhöhe mit Android Studio und Gradle
Auf Augenhöhe mit Android Studio und GradleAuf Augenhöhe mit Android Studio und Gradle
Auf Augenhöhe mit Android Studio und Gradleinovex GmbH
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in DjangoLakshman Prasad
 
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14Salesforce Developers
 
What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?Evan Stone
 
Automate testing with behat, selenium, phantom js and nightwatch.js (5)
Automate testing with behat, selenium, phantom js and nightwatch.js (5)Automate testing with behat, selenium, phantom js and nightwatch.js (5)
Automate testing with behat, selenium, phantom js and nightwatch.js (5)Faichi Solutions
 
What I learned teaching programming to 150 beginners
What I learned teaching programming to 150 beginnersWhat I learned teaching programming to 150 beginners
What I learned teaching programming to 150 beginnersEtiene Dalcol
 
jQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days TorontojQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days TorontoRalph Whitbeck
 
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
 
Testing containers with TestContainers @ AJUG 7/18/2017
Testing containers with TestContainers @ AJUG 7/18/2017Testing containers with TestContainers @ AJUG 7/18/2017
Testing containers with TestContainers @ AJUG 7/18/2017Viktor Gamov
 
Use groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projectsUse groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projectsFátima Casaú Pérez
 

Tendances (20)

Java to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.ioJava to Golang: An intro by Ryan Dawson Seldon.io
Java to Golang: An intro by Ryan Dawson Seldon.io
 
Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016Continuous Deployment at Scale, PHPConfAsia 2016
Continuous Deployment at Scale, PHPConfAsia 2016
 
Capybara testing
Capybara testingCapybara testing
Capybara testing
 
Getting Answers to Your Testing Questions
Getting Answers to Your Testing QuestionsGetting Answers to Your Testing Questions
Getting Answers to Your Testing Questions
 
Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)Is your API misbehaving?(Keith-Casey)
Is your API misbehaving?(Keith-Casey)
 
Getting By Without "QA"
Getting By Without "QA"Getting By Without "QA"
Getting By Without "QA"
 
Intro to jQuery - LUGOR - Part 1
Intro to jQuery - LUGOR - Part 1Intro to jQuery - LUGOR - Part 1
Intro to jQuery - LUGOR - Part 1
 
Auf Augenhöhe mit Android Studio und Gradle
Auf Augenhöhe mit Android Studio und GradleAuf Augenhöhe mit Android Studio und Gradle
Auf Augenhöhe mit Android Studio und Gradle
 
Android Studio und gradle
Android Studio und gradleAndroid Studio und gradle
Android Studio und gradle
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in Django
 
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
The Open-source Eclipse Plugin for Force.com Development, Summer ‘14
 
Intro to jQuery
Intro to jQueryIntro to jQuery
Intro to jQuery
 
What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?
 
Automate testing with behat, selenium, phantom js and nightwatch.js (5)
Automate testing with behat, selenium, phantom js and nightwatch.js (5)Automate testing with behat, selenium, phantom js and nightwatch.js (5)
Automate testing with behat, selenium, phantom js and nightwatch.js (5)
 
What I learned teaching programming to 150 beginners
What I learned teaching programming to 150 beginnersWhat I learned teaching programming to 150 beginners
What I learned teaching programming to 150 beginners
 
PropErty based testing
PropErty based testingPropErty based testing
PropErty based testing
 
jQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days TorontojQuery For Developers Stack Overflow Dev Days Toronto
jQuery For Developers Stack Overflow Dev Days Toronto
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.js
 
Testing containers with TestContainers @ AJUG 7/18/2017
Testing containers with TestContainers @ AJUG 7/18/2017Testing containers with TestContainers @ AJUG 7/18/2017
Testing containers with TestContainers @ AJUG 7/18/2017
 
Use groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projectsUse groovy & grails in your spring boot projects
Use groovy & grails in your spring boot projects
 

En vedette

学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniterBruceWolf
 
Arsenic Case (Group 2 Presentation)
Arsenic Case (Group 2 Presentation)Arsenic Case (Group 2 Presentation)
Arsenic Case (Group 2 Presentation)josephjbarretto
 
Selenium Conf 2013 Lightning Talk - Any-Branch
Selenium Conf 2013 Lightning Talk - Any-BranchSelenium Conf 2013 Lightning Talk - Any-Branch
Selenium Conf 2013 Lightning Talk - Any-Branchdimakovalenko
 
Jasmine presentation Selenium Camp 2013
Jasmine presentation Selenium Camp 2013Jasmine presentation Selenium Camp 2013
Jasmine presentation Selenium Camp 2013dimakovalenko
 
Senior Slideshow
Senior SlideshowSenior Slideshow
Senior Slideshowncbonano
 
History of computer
History of computerHistory of computer
History of computergueste2e78e
 
Visites Escolars Puigverd
Visites Escolars PuigverdVisites Escolars Puigverd
Visites Escolars Puigverdbibliopuigverd
 
Stabilizing SE Build - Selenium conf 2013
Stabilizing SE Build - Selenium conf 2013 Stabilizing SE Build - Selenium conf 2013
Stabilizing SE Build - Selenium conf 2013 dimakovalenko
 
Managing Large Selenium Grid
Managing Large Selenium Grid�Managing Large Selenium Grid�
Managing Large Selenium Griddimakovalenko
 
Curbstone MLP Strategy
Curbstone MLP StrategyCurbstone MLP Strategy
Curbstone MLP Strategyhinds15
 
Columbine High School Massacre
Columbine High School MassacreColumbine High School Massacre
Columbine High School MassacreMcVay2011
 
Scaling and Managing Selenium Grid
Scaling and Managing Selenium GridScaling and Managing Selenium Grid
Scaling and Managing Selenium Griddimakovalenko
 

En vedette (17)

学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniter
 
Arsenic Case (Group 2 Presentation)
Arsenic Case (Group 2 Presentation)Arsenic Case (Group 2 Presentation)
Arsenic Case (Group 2 Presentation)
 
Evergreen build
Evergreen buildEvergreen build
Evergreen build
 
Selenium Conf 2013 Lightning Talk - Any-Branch
Selenium Conf 2013 Lightning Talk - Any-BranchSelenium Conf 2013 Lightning Talk - Any-Branch
Selenium Conf 2013 Lightning Talk - Any-Branch
 
Jasmine presentation Selenium Camp 2013
Jasmine presentation Selenium Camp 2013Jasmine presentation Selenium Camp 2013
Jasmine presentation Selenium Camp 2013
 
Network
NetworkNetwork
Network
 
Senior Slideshow
Senior SlideshowSenior Slideshow
Senior Slideshow
 
History of computer
History of computerHistory of computer
History of computer
 
Tea Traditions
Tea TraditionsTea Traditions
Tea Traditions
 
Visites Escolars Puigverd
Visites Escolars PuigverdVisites Escolars Puigverd
Visites Escolars Puigverd
 
Stabilizing SE Build - Selenium conf 2013
Stabilizing SE Build - Selenium conf 2013 Stabilizing SE Build - Selenium conf 2013
Stabilizing SE Build - Selenium conf 2013
 
Managing Large Selenium Grid
Managing Large Selenium Grid�Managing Large Selenium Grid�
Managing Large Selenium Grid
 
Curbstone MLP Strategy
Curbstone MLP StrategyCurbstone MLP Strategy
Curbstone MLP Strategy
 
Kidnapping Case
Kidnapping CaseKidnapping Case
Kidnapping Case
 
Selenium camp v1
Selenium camp v1Selenium camp v1
Selenium camp v1
 
Columbine High School Massacre
Columbine High School MassacreColumbine High School Massacre
Columbine High School Massacre
 
Scaling and Managing Selenium Grid
Scaling and Managing Selenium GridScaling and Managing Selenium Grid
Scaling and Managing Selenium Grid
 

Similaire à Cucumber Presentation Kiev Meet Up

Graceful Failure with Selenium and Continuous Integration
Graceful Failure with Selenium and Continuous IntegrationGraceful Failure with Selenium and Continuous Integration
Graceful Failure with Selenium and Continuous IntegrationChris B. France
 
Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Applitools
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
 
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Edureka!
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
Introduction to Selenium and Test Automation
Introduction to Selenium and Test AutomationIntroduction to Selenium and Test Automation
Introduction to Selenium and Test AutomationAhmed Mubbashir Khan
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainKen Collins
 
Continuous integration with Git & CI Joe
Continuous integration with Git & CI JoeContinuous integration with Git & CI Joe
Continuous integration with Git & CI JoeShawn Price
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"GoIT
 
Introduction to Selenium
Introduction to SeleniumIntroduction to Selenium
Introduction to Seleniumrohitnayak
 
Creating testing tools to support development
Creating testing tools to support developmentCreating testing tools to support development
Creating testing tools to support developmentChema del Barco
 
Developing an Ember Test Strategy - EmberConf 2019
Developing an Ember Test Strategy - EmberConf 2019Developing an Ember Test Strategy - EmberConf 2019
Developing an Ember Test Strategy - EmberConf 2019Todd Jordan
 
Selenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialSelenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialAlan Richardson
 
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About ItWhy Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About ItJay Aho
 
Leveling Up at JavaScript
Leveling Up at JavaScriptLeveling Up at JavaScript
Leveling Up at JavaScriptRaymond Camden
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfullyTEST Huddle
 

Similaire à Cucumber Presentation Kiev Meet Up (20)

Graceful Failure with Selenium and Continuous Integration
Graceful Failure with Selenium and Continuous IntegrationGraceful Failure with Selenium and Continuous Integration
Graceful Failure with Selenium and Continuous Integration
 
Selenium
SeleniumSelenium
Selenium
 
Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
Chef vs Puppet vs Ansible vs SaltStack | Configuration Management Tools Compa...
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Cucumber tutorial
Cucumber tutorialCucumber tutorial
Cucumber tutorial
 
Integration Testing in Python
Integration Testing in PythonIntegration Testing in Python
Integration Testing in Python
 
Introduction to Selenium and Test Automation
Introduction to Selenium and Test AutomationIntroduction to Selenium and Test Automation
Introduction to Selenium and Test Automation
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 
Continuous integration with Git & CI Joe
Continuous integration with Git & CI JoeContinuous integration with Git & CI Joe
Continuous integration with Git & CI Joe
 
Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"Встреча "QA: в каких направлениях может найти себя тестировщик?"
Встреча "QA: в каких направлениях может найти себя тестировщик?"
 
Introduction to Selenium
Introduction to SeleniumIntroduction to Selenium
Introduction to Selenium
 
Creating testing tools to support development
Creating testing tools to support developmentCreating testing tools to support development
Creating testing tools to support development
 
Developing an Ember Test Strategy - EmberConf 2019
Developing an Ember Test Strategy - EmberConf 2019Developing an Ember Test Strategy - EmberConf 2019
Developing an Ember Test Strategy - EmberConf 2019
 
BCS Selenium Workshop
BCS Selenium WorkshopBCS Selenium Workshop
BCS Selenium Workshop
 
Selenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver TutorialSelenium Clinic Eurostar 2012 WebDriver Tutorial
Selenium Clinic Eurostar 2012 WebDriver Tutorial
 
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About ItWhy Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
 
Leveling Up at JavaScript
Leveling Up at JavaScriptLeveling Up at JavaScript
Leveling Up at JavaScript
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfully
 

Dernier

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
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 FMESafe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
+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...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Cucumber Presentation Kiev Meet Up

  • 1.  
  • 2. Dima Kovalenko @dimacus www.agilesoftwaretesting.com www.dimakovalenko.com linked in.com/in/dimakovalen ko
  • 6.
  • 7. We don’t need Automated Tests!
  • 8. We don’t need Automated Tests! The End See You all at Selenium 2012!
  • 9.  
  • 10. Selenium and Cucumber Img Source: http://pickledillies.homestead.com/
  • 11.
  • 12.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 21.
  • 22.
  • 23.
  • 25. Natural Language @search Feature: Searching For Hello World, and some more overview of the feature that we are trying to test @google Scenario: User Searches for Hello World on Google.com Given I'm on Google's Home Page And I search for Hello World Then I should see Wikipedia's Hello World article as 1st result @bing Scenario: User Searches for Hello World on Bing.com Given I'm on Bing's Home Page And I search for Hello World Then I should see car videos as first result
  • 26. Step Definitions Given /^I'm on Google's Home Page$/ do @selenium.open &quot; www.google.com &quot; end Given /^I'm on Bing's Home Page$/ do @selenium.open &quot; www.bing.com &quot; end When /^I search for Hello World$/ do @selenium.type &quot;q&quot;, &quot;Hello World&quot; end Then /^I should see Wikipedia's Hello World article as 1st result$/ do assert_stuff end Then /^I should see car videos as first result$/ do assert_stuff end
  • 27.
  • 28. Who should be writing tests?
  • 29.
  • 30.
  • 31.
  • 32.
  • 34.
  • 35.
  • 36. Tags @search Feature: Searching For Hello World, and some more overview of the feature that we are trying to test @google @selenium Scenario: User Searches for Hello World on Google.com Given I'm on Google's Home Page And I search for Hello World Then I should see Wikipedia's Hello World article as 1st result @bing Scenario: User Searches for Hello World on Bing.com Given I'm on Bing's Home Page And I search for Hello World Then I should see car videos as first result
  • 37. Tags @search Feature: Searching For Hello World, and some more overview of the feature that we are trying to test @google @selenium Scenario: User Searches for Hello World on Google.com Given I'm on Google's Home Page And I search for Hello World Then I should see Wikipedia's Hello World article as 1st result @bing Scenario: User Searches for Hello World on Bing.com Given I'm on Bing's Home Page And I search for Hello World Then I should see car videos as first result
  • 38.
  • 42. Write More Step Definitions
  • 43. Even More Step Definitions
  • 44. Multiple Test Drivers Steam Celerity Culerity FireWatir SafariWatir ChromeWatir Img Source: Wikipedia
  • 45. Selenium 1 support Before do | scenario | @selenium = Selenium::Client::Driver.new ( :host => &quot;localhost&quot;, :port => 4444, :browser => “firefox”, :url => “ www.google.com ”) end
  • 46. Selenium 1 Tip Use Hpricot Or Nokogiri!!! page = Hpricot ( @selenium .get_html_source)
  • 47.  
  • 48.  
  • 50.
  • 51.
  • 52.
  • 53. Multilingual JVM: JRuby, Java .NET: IronRuby, IronRuby .NET, Mono Adoby Flex: FunFX, Melomel Python Erlang Groovy Scala Closure Javascript Spring
  • 54. Java Step Definition package cukes; import cuke4duke.annotation.I18n.EN.Given; import java.util.List; import java.util.ArrayList; public class BellySteps { private List<String> belly = new ArrayList<String>(); @Given(&quot;I have (d+) cukes in my belly&quot;) public void bellyCukes(int cukes) { for(int i = 0; i < cukes; i++) { belly.add(&quot;cuke &quot; + i); } } }
  • 55. i18n
  • 56. i18n Функционал: Сложение чисел Чтобы не складывать в уме Все, у кого с этим туго Хотят автоматическое сложение целых чисел Сценарий: Сложение двух целых чисел Допустим я ввожу число 50 И затем ввожу число 70 Если я нажимаю &quot;+&quot; То результатом должно быть число 120
  • 57. i18n Chinese 功能 : 加法 為了避免愚蠢的錯誤 作為一個數學白痴 我希望有人能告訴我兩個數相加的結果 場景大綱 : 將兩個數相加 假 設我已經在計算機上輸入 < 數值 _1> 而 且我已經在計算機上輸入 < 數值 _2> 當 我按下 < 按鈕 > 那 麼螢幕上應該顯示 < 結果 >
  • 58. i18n LOLz OH HAI: STUFFING MISHUN: CUCUMBR I CAN HAZ IN TEH BEGINNIN 3 CUCUMBRZ WEN I EAT 2 CUCUMBRZ DEN I HAS 2 CUCUMBERZ IN MAH BELLY AN IN TEH END 1 CUCUMBRZ KTHXBAI
  • 60.
  • 61.
  • 62. Hard to find Step Definitions cucumber-tmbundle Vim Rails
  • 63.
  • 64.
  • 65. @dhh RSpec offends me aesthetically with no discernible benefit for its added complexity over test/unit.
  • 66. @dhh RSpec offends me aesthetically with no discernible benefit for its added complexity over test/unit. Cucumber makes no sense to me unless you have clients reading the tests. Why would you build a test-specific parser for English?
  • 67. @dhh RSpec offends me aesthetically with no discernible benefit for its added complexity over test/unit. Cucumber makes no sense to me unless you have clients reading the tests. Why would you build a test-specific parser for English? The important thing is of course that we get people testing, so tools shouldn't matter too much....
  • 68. Work @ Groupon www.groupon.com/techjobs
  • 70.