SlideShare uma empresa Scribd logo
1 de 32
UI Testing With Frank
         BDD Style Acceptance
   Testing with Frank and Cucumber
@keithpitt

    Keith Pitt

iOS/Web Developer
The Frontier Group
UI Testing Approaches
UI Testing Approaches
• Testing the application yourself using the
  simulator or your device
UI Testing Approaches
• Testing the application yourself using the
  simulator or your device
• Getting others to test the application using
  their own devices
UI Testing Approaches
• Testing the application yourself using the
  simulator or your device
• Getting others to test the application using
  their own devices
• Automated testing
What tools are there?
What tools are there?
• Sikuli (image analysis)
What tools are there?
• Sikuli (image analysis)
• Fonemonkey (record and playback)
What tools are there?
• Sikuli (image analysis)
• Fonemonkey (record and playback)
• UISpec (tests are written in Objective C)
What tools are there?
• Sikuli (image analysis)
• Fonemonkey (record and playback)
• UISpec (tests are written in Objective C)
• iCuke (project not being developed)
Frankenstein
Frank
Frank
• A bridge between Cucumber and UISpec
Frank
• A bridge between Cucumber and UISpec
• A “Frank Driver” that sends HTTP requests
  from Cucumber to a “Frank Server” that is
  installed in the Application
Frank
• A bridge between Cucumber and UISpec
• A “Frank Driver” that sends HTTP requests
  from Cucumber to a “Frank Server” that is
  installed in the Application
• The “Frank Server” executes UISpec
  queries against the application, returns the
  result
UISpec
UISpec
• UISpec is a Behaviour Driven Development
  framework for the iPhone that provides a
  full automated testing solution that drives
  the actual iPhone UI.
UISpec
• UISpec is a Behaviour Driven Development
  framework for the iPhone that provides a
  full automated testing solution that drives
  the actual iPhone UI.
• It is modelled after the very popular RSpec
  for Ruby.
UISpec
• UISpec is a Behaviour Driven Development
  framework for the iPhone that provides a
  full automated testing solution that drives
  the actual iPhone UI.
• It is modelled after the very popular RSpec
  for Ruby.
• Written in Objective C
-(void)itShouldHaveDefaultUsers {
        //Check that all default users are in list
        [[app.tableView.label text:@"Larry Stooge"] should].exist;
        [[app.tableView.label text:@"Curly Stooge"] should].exist;
        [[app.tableView.label text:@"Moe Stooge"] should].exist;
}
Cucumber
Cucumber
• Cucumber is a tool that executes plain-text
  functional descriptions as automated tests.
Cucumber
• Cucumber is a tool that executes plain-text
  functional descriptions as automated tests.
• Written in Ruby
Cucumber
• Cucumber is a tool that executes plain-text
  functional descriptions as automated tests.
• Written in Ruby
• Created originally for use with Ruby on
  Rails.
Cucumber
• Cucumber is a tool that executes plain-text
  functional descriptions as automated tests.
• Written in Ruby
• Created originally for use with Ruby on
  Rails.
• Command line tool
Cucumber
• Cucumber is a tool that executes plain-text
  functional descriptions as automated tests.
• Written in Ruby
• Created originally for use with Ruby on
  Rails.
• Command line tool
• Written specifically for BDD
Feature: Search courses
 In order to ensure better utilization of courses
 Potential students should be able to search for courses

 Scenario: Search by topic
  Given there are 240 courses which do not have the topic "biology"
  And there are 2 courses A001, B205 that each have "biology" as one of the topics
  When I search for "biology"
  Then I should see the following courses:
   | Course code |
   | A001       |
   | B205       |
Demo
Resources
• https://github.com/moredip/Frank
• https://github.com/aslakhellesoy/cucumber
• http://www.melbournecocoaheads.com/
  testing-ios-apps-with-frank-slides-and-
  videos/
@keithpitt

   Thanks for
 your attention

Mais conteúdo relacionado

Mais procurados

Automated API pentesting using fuzzapi
Automated API pentesting using fuzzapiAutomated API pentesting using fuzzapi
Automated API pentesting using fuzzapiAbhijeth D
 
Calabash Andoird + Calabash iOS
Calabash Andoird + Calabash iOSCalabash Andoird + Calabash iOS
Calabash Andoird + Calabash iOSAnadea
 
Fashionable XCUITest for iOS Apps by Shashikant Jagtap
Fashionable XCUITest for iOS Apps by Shashikant JagtapFashionable XCUITest for iOS Apps by Shashikant Jagtap
Fashionable XCUITest for iOS Apps by Shashikant JagtapSauce Labs
 
Third party module strategy
Third party module strategyThird party module strategy
Third party module strategyHokila Jan
 
Calabash my understanding
Calabash my understandingCalabash my understanding
Calabash my understandingFARHAN SUMBUL
 
Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open sourceDevin Abbott
 
Api Design Anti-Patterns
Api Design Anti-PatternsApi Design Anti-Patterns
Api Design Anti-PatternsJason Harmon
 
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...apidays
 
Facilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CFacilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CAaron Taylor
 
API Prefetching - HTML5DevConf - Oct. 21, 2014
API Prefetching - HTML5DevConf - Oct. 21, 2014API Prefetching - HTML5DevConf - Oct. 21, 2014
API Prefetching - HTML5DevConf - Oct. 21, 2014JonAbrams
 
Xamarin - Why I started learning it?
Xamarin - Why I started learning it?Xamarin - Why I started learning it?
Xamarin - Why I started learning it?Ankit Kashyap
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Devin Abbott
 
You Live, You Learn, Then You Get Perforce Swarm
You Live, You Learn, Then You Get Perforce SwarmYou Live, You Learn, Then You Get Perforce Swarm
You Live, You Learn, Then You Get Perforce SwarmPerforce
 
I Love APIs - Oct 2015
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015Mike McNeil
 
Professionalizing the Front-end
Professionalizing the Front-endProfessionalizing the Front-end
Professionalizing the Front-endJordi Anguela
 
Static Type Checking with FlowJs
Static Type Checking with FlowJsStatic Type Checking with FlowJs
Static Type Checking with FlowJsUnfold UI
 
Software Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksSoftware Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksPhill Sparks
 
Building Scalable Applications with Laravel
Building Scalable Applications with LaravelBuilding Scalable Applications with Laravel
Building Scalable Applications with LaravelMuhammad Shakeel
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationSauce Labs
 

Mais procurados (20)

Automated API pentesting using fuzzapi
Automated API pentesting using fuzzapiAutomated API pentesting using fuzzapi
Automated API pentesting using fuzzapi
 
Calabash Andoird + Calabash iOS
Calabash Andoird + Calabash iOSCalabash Andoird + Calabash iOS
Calabash Andoird + Calabash iOS
 
Fashionable XCUITest for iOS Apps by Shashikant Jagtap
Fashionable XCUITest for iOS Apps by Shashikant JagtapFashionable XCUITest for iOS Apps by Shashikant Jagtap
Fashionable XCUITest for iOS Apps by Shashikant Jagtap
 
Third party module strategy
Third party module strategyThird party module strategy
Third party module strategy
 
Calabash my understanding
Calabash my understandingCalabash my understanding
Calabash my understanding
 
Introduction to PowerShell - Presented to the SDC Nov 3, 2014
Introduction to PowerShell - Presented to the SDC Nov 3, 2014Introduction to PowerShell - Presented to the SDC Nov 3, 2014
Introduction to PowerShell - Presented to the SDC Nov 3, 2014
 
Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
 
Api Design Anti-Patterns
Api Design Anti-PatternsApi Design Anti-Patterns
Api Design Anti-Patterns
 
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
 
Facilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CFacilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-C
 
API Prefetching - HTML5DevConf - Oct. 21, 2014
API Prefetching - HTML5DevConf - Oct. 21, 2014API Prefetching - HTML5DevConf - Oct. 21, 2014
API Prefetching - HTML5DevConf - Oct. 21, 2014
 
Xamarin - Why I started learning it?
Xamarin - Why I started learning it?Xamarin - Why I started learning it?
Xamarin - Why I started learning it?
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)
 
You Live, You Learn, Then You Get Perforce Swarm
You Live, You Learn, Then You Get Perforce SwarmYou Live, You Learn, Then You Get Perforce Swarm
You Live, You Learn, Then You Get Perforce Swarm
 
I Love APIs - Oct 2015
I Love APIs - Oct 2015I Love APIs - Oct 2015
I Love APIs - Oct 2015
 
Professionalizing the Front-end
Professionalizing the Front-endProfessionalizing the Front-end
Professionalizing the Front-end
 
Static Type Checking with FlowJs
Static Type Checking with FlowJsStatic Type Checking with FlowJs
Static Type Checking with FlowJs
 
Software Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksSoftware Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill Sparks
 
Building Scalable Applications with Laravel
Building Scalable Applications with LaravelBuilding Scalable Applications with Laravel
Building Scalable Applications with Laravel
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs Integration
 

Semelhante a iOS UI Testing with Frank

iPhone OS: The Next Killer Platform
iPhone OS: The Next Killer PlatformiPhone OS: The Next Killer Platform
iPhone OS: The Next Killer PlatformChristopher Bartling
 
利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試Jeremy Kao
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Niels Frydenholm
 
Automation With Frank
Automation With FrankAutomation With Frank
Automation With FrankRalu Mihordea
 
Don't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobileDon't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobilePhilip Brechler
 
Automating Mobile Applications
Automating Mobile ApplicationsAutomating Mobile Applications
Automating Mobile ApplicationsApril Luk
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with AppiumSrijan Technologies
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony IngraldiTony Ingraldi
 
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationThreat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationAbhay Bhargav
 
iOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake DubliniOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake Dublinroland99
 
What's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowWhat's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowSauce Labs
 
Automation using Javascript
Automation using JavascriptAutomation using Javascript
Automation using Javascriptkhanhdang1214
 
Infinum Android Talks #02 - How to write an annotation processor in Android
Infinum Android Talks #02 - How to write an annotation processor in AndroidInfinum Android Talks #02 - How to write an annotation processor in Android
Infinum Android Talks #02 - How to write an annotation processor in AndroidInfinum
 
State of the Mobile Web Frameworks
State of the Mobile Web FrameworksState of the Mobile Web Frameworks
State of the Mobile Web FrameworksJesse Palmer
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms BootcampMike Melusky
 
Continuous integration & deployment
Continuous integration & deploymentContinuous integration & deployment
Continuous integration & deploymentAlan Harper
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 
Mobile application development; Complete steps
Mobile application development; Complete stepsMobile application development; Complete steps
Mobile application development; Complete steps Abin Baby
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradioDroidcon Berlin
 

Semelhante a iOS UI Testing with Frank (20)

iPhone OS: The Next Killer Platform
iPhone OS: The Next Killer PlatformiPhone OS: The Next Killer Platform
iPhone OS: The Next Killer Platform
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
 
利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Automation With Frank
Automation With FrankAutomation With Frank
Automation With Frank
 
Don't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobileDon't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobile
 
Automating Mobile Applications
Automating Mobile ApplicationsAutomating Mobile Applications
Automating Mobile Applications
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony Ingraldi
 
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationThreat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
 
iOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake DubliniOS and Android Acceptance Testing with Calabash - Xcake Dublin
iOS and Android Acceptance Testing with Calabash - Xcake Dublin
 
What's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowWhat's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to Now
 
Automation using Javascript
Automation using JavascriptAutomation using Javascript
Automation using Javascript
 
Infinum Android Talks #02 - How to write an annotation processor in Android
Infinum Android Talks #02 - How to write an annotation processor in AndroidInfinum Android Talks #02 - How to write an annotation processor in Android
Infinum Android Talks #02 - How to write an annotation processor in Android
 
State of the Mobile Web Frameworks
State of the Mobile Web FrameworksState of the Mobile Web Frameworks
State of the Mobile Web Frameworks
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms Bootcamp
 
Continuous integration & deployment
Continuous integration & deploymentContinuous integration & deployment
Continuous integration & deployment
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Mobile application development; Complete steps
Mobile application development; Complete stepsMobile application development; Complete steps
Mobile application development; Complete steps
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 

iOS UI Testing with Frank

  • 1. UI Testing With Frank BDD Style Acceptance Testing with Frank and Cucumber
  • 2. @keithpitt Keith Pitt iOS/Web Developer The Frontier Group
  • 4. UI Testing Approaches • Testing the application yourself using the simulator or your device
  • 5. UI Testing Approaches • Testing the application yourself using the simulator or your device • Getting others to test the application using their own devices
  • 6. UI Testing Approaches • Testing the application yourself using the simulator or your device • Getting others to test the application using their own devices • Automated testing
  • 7. What tools are there?
  • 8. What tools are there? • Sikuli (image analysis)
  • 9. What tools are there? • Sikuli (image analysis) • Fonemonkey (record and playback)
  • 10. What tools are there? • Sikuli (image analysis) • Fonemonkey (record and playback) • UISpec (tests are written in Objective C)
  • 11. What tools are there? • Sikuli (image analysis) • Fonemonkey (record and playback) • UISpec (tests are written in Objective C) • iCuke (project not being developed)
  • 13. Frank
  • 14. Frank • A bridge between Cucumber and UISpec
  • 15. Frank • A bridge between Cucumber and UISpec • A “Frank Driver” that sends HTTP requests from Cucumber to a “Frank Server” that is installed in the Application
  • 16. Frank • A bridge between Cucumber and UISpec • A “Frank Driver” that sends HTTP requests from Cucumber to a “Frank Server” that is installed in the Application • The “Frank Server” executes UISpec queries against the application, returns the result
  • 18. UISpec • UISpec is a Behaviour Driven Development framework for the iPhone that provides a full automated testing solution that drives the actual iPhone UI.
  • 19. UISpec • UISpec is a Behaviour Driven Development framework for the iPhone that provides a full automated testing solution that drives the actual iPhone UI. • It is modelled after the very popular RSpec for Ruby.
  • 20. UISpec • UISpec is a Behaviour Driven Development framework for the iPhone that provides a full automated testing solution that drives the actual iPhone UI. • It is modelled after the very popular RSpec for Ruby. • Written in Objective C
  • 21. -(void)itShouldHaveDefaultUsers {         //Check that all default users are in list         [[app.tableView.label text:@"Larry Stooge"] should].exist;         [[app.tableView.label text:@"Curly Stooge"] should].exist;         [[app.tableView.label text:@"Moe Stooge"] should].exist; }
  • 23. Cucumber • Cucumber is a tool that executes plain-text functional descriptions as automated tests.
  • 24. Cucumber • Cucumber is a tool that executes plain-text functional descriptions as automated tests. • Written in Ruby
  • 25. Cucumber • Cucumber is a tool that executes plain-text functional descriptions as automated tests. • Written in Ruby • Created originally for use with Ruby on Rails.
  • 26. Cucumber • Cucumber is a tool that executes plain-text functional descriptions as automated tests. • Written in Ruby • Created originally for use with Ruby on Rails. • Command line tool
  • 27. Cucumber • Cucumber is a tool that executes plain-text functional descriptions as automated tests. • Written in Ruby • Created originally for use with Ruby on Rails. • Command line tool • Written specifically for BDD
  • 28. Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses which do not have the topic "biology" And there are 2 courses A001, B205 that each have "biology" as one of the topics When I search for "biology" Then I should see the following courses: | Course code | | A001 | | B205 |
  • 29.
  • 30. Demo
  • 31. Resources • https://github.com/moredip/Frank • https://github.com/aslakhellesoy/cucumber • http://www.melbournecocoaheads.com/ testing-ios-apps-with-frank-slides-and- videos/
  • 32. @keithpitt Thanks for your attention

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n