SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Presentation Highlights:
● What is Frank
● Why Frank
● How to use Frank
● Conclusions
● Q&A
What is Frank?
● Basic 'Selenium for native iOS apps'.
● Write automated acceptance tests
● Verify the functionality of native iOS apps.
● Symbiote - a powerful “app inspector”
Why: Advantages
• Easy Setup - less than 10 minutes.
• Record Video - of the test runs to show the app in action
• Run everywhere - has support for Simulator and Device
• Integrates with CI - run on every check in
• Great Community - strong, helpful community Google Group
Disadvantages
• Doesn’t support Record and Play
• Improvements based usually only on community requests
• Lack of documentation
Frank Architecture
Communication
• Frankly - simple HTTP-based wire protocol.
• GET and POST requests
• Request and response bodies contain JSON
Response Format
• Responses may either be standard or non-standard.
• A standard response always conforms to a format similar to:
{
'outcome': 'SUCCESS',
'results': ['foo','bar']
}
indicating a failure format:
{
'outcome': 'ERROR',
'reason': 'Failed to frob the flib',
'detail': 'Flange capacitator decoupled'
}
• Non-standard responses will be valid JSON documents
Frank Server
• Written in objective-C
• Compiled into the automated iOS application
• Provides responses to the Driver
Frank Driver
• Cucumber Driver - implemented in ruby
• Shelley - a selector engine to access a subset of UI elements.
• Create additional drivers rewriting frank_helpers.rb
• Frank helpers - a core set of helper functions
How to use Frank
• Designed to work with Cucumber.
• Can be adapted to other languages too.
• Examples: Cucumber and Java.
turn on the accessibility features on the machine hosting your iOS simulator.
Go to System Preferences -> Universal Access and Check “Enable access for assistive
devices”.
Frankify the app
• the process of adding a separate Frank target to your app
• has the Frank server embedded into it
• allowing it to respond to automation commands.
Frankified application
Application Frank Server
Frankify the app
• install the frank-cucumber gem by running:
sudo gem install frank-cucumber
(run this into the project's root directory – the one with the
.xcodeproj file)
• create the Frank subdirectory which contains everything necessary
to Frankify you app by running
frank setup
Frankify the app
• create a Frankified version of you app by running:
frank build
• launch the Frankified app in the simulator by running:
frank launch
• check that you are indeed running a Frankified version by
running:
frank inspect
Symbiote
● creates a tree structure with the UI Elements from you app.
● must have the app running in the simulator.
● the application should be exactly on the same screen as
Symbiote, for it to work.
● when investigating a different screen, the browser must be
refreshed.
● access it from browser at http://localhost:37265/
Shelley
● Symbiote uses Shelley to access the UI Elements via queries.
● Verify if an element is accessible from browser using a query that
should have the final result highlighting the desired element.
● Examples of queries:
○ view:'UILabel' marked:'Saved Tabs'
parent view:'TableViewCell'
○ button:"UIButton" marked:'btn plus' index:0
Frank using Cucumber
• Cucumber - a tool that executes plain-text functional descriptions
as automated tests.
• Gherkin
– the language that Cucumber understands.
– Business Readable, Domain Specific Language
– serves two purposes — documentation and automated tests.
Speaking the same language
• Cucumber supports over 40 spoken languages
• Listing the available languages: cucumber --i18n help
Ahoy! me
buckos
Example
Feature: Navigating between screens
Scenario: Moving from the 'Home' screen to the 'Events' screen and
navigate through it
Given I launch the app
When I navigate to "Events"
Then I should be on the Events screen
When I navigate Events to "Count Down"
Then I should be on the Count Down screen
Conclusions
• Open source tool for automation testing against iOS apps
• Adaptable to one’s needs
• Uses the power provided by Apple’s framework
• Great community that provides support
Bibliography
• The Official Website: testingwithfrank.com
• The GitHub Repository: moredip/Frank
• Pete Hodgson’s Blog: Being Agile
• Google Group: Frank
• Frank Helpers: rdoc.info/gems/frank-cucumber
Thank you!
email: ralu.mihordea@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Selenium (1)
Selenium (1)Selenium (1)
Selenium (1)
onlinemindq
 

Was ist angesagt? (20)

Selenium
SeleniumSelenium
Selenium
 
JavaScript as a First-Class Citizen on iOS 7
JavaScript as a First-Class Citizen on iOS 7JavaScript as a First-Class Citizen on iOS 7
JavaScript as a First-Class Citizen on iOS 7
 
NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 
Introduction to Selenium
Introduction to SeleniumIntroduction to Selenium
Introduction to Selenium
 
QSpiders - Selenium Webdriver
QSpiders - Selenium WebdriverQSpiders - Selenium Webdriver
QSpiders - Selenium Webdriver
 
Selenium IDE features
Selenium IDE featuresSelenium IDE features
Selenium IDE features
 
Selenium By Pravin Mishra
Selenium By Pravin MishraSelenium By Pravin Mishra
Selenium By Pravin Mishra
 
Selenium
SeleniumSelenium
Selenium
 
Python Testing 101 with Selenium
Python Testing 101 with SeleniumPython Testing 101 with Selenium
Python Testing 101 with Selenium
 
Hello Flutter
Hello FlutterHello Flutter
Hello Flutter
 
Selenium (1)
Selenium (1)Selenium (1)
Selenium (1)
 
Native script overview
Native script overviewNative script overview
Native script overview
 
Building Browser Extensions with Ember
Building Browser Extensions with EmberBuilding Browser Extensions with Ember
Building Browser Extensions with Ember
 
Selenium IDE
Selenium IDESelenium IDE
Selenium IDE
 
"I have a framework idea" - Repeat less, share more.
"I have a framework idea" - Repeat less, share more."I have a framework idea" - Repeat less, share more.
"I have a framework idea" - Repeat less, share more.
 
Nativescript
NativescriptNativescript
Nativescript
 
Programming Android
Programming AndroidProgramming Android
Programming Android
 
Selenium training in chennai
Selenium training in chennaiSelenium training in chennai
Selenium training in chennai
 
TypeScript
TypeScriptTypeScript
TypeScript
 

Andere mochten auch (8)

Codecamp Iasi 7 mai 2011 Exception tail.com
Codecamp Iasi 7 mai 2011 Exception tail.comCodecamp Iasi 7 mai 2011 Exception tail.com
Codecamp Iasi 7 mai 2011 Exception tail.com
 
Angajatori de Top Iasi - Nov 2013
Angajatori de Top Iasi - Nov 2013Angajatori de Top Iasi - Nov 2013
Angajatori de Top Iasi - Nov 2013
 
Cristi Ursachi - Xamarin - CodeCamp 10 may 2014
Cristi Ursachi  - Xamarin - CodeCamp 10 may 2014Cristi Ursachi  - Xamarin - CodeCamp 10 may 2014
Cristi Ursachi - Xamarin - CodeCamp 10 may 2014
 
Iasi code camp 12 october 2013 play oriented development - leon daniel
Iasi code camp 12 october 2013   play oriented development - leon danielIasi code camp 12 october 2013   play oriented development - leon daniel
Iasi code camp 12 october 2013 play oriented development - leon daniel
 
Intro CodeCamp/IASI 16 oct 2010
Intro CodeCamp/IASI 16 oct 2010Intro CodeCamp/IASI 16 oct 2010
Intro CodeCamp/IASI 16 oct 2010
 
Ccp
CcpCcp
Ccp
 
Cezar chitac the edge of experience
Cezar chitac   the edge of experienceCezar chitac   the edge of experience
Cezar chitac the edge of experience
 
Cloud powered search
Cloud powered searchCloud powered search
Cloud powered search
 

Ähnlich wie Automation With Frank

CS02A - Interacting with applications.pptx
CS02A - Interacting with applications.pptxCS02A - Interacting with applications.pptx
CS02A - Interacting with applications.pptx
Anand722237
 
Steps to write Selenium
Steps to write Selenium  Steps to write Selenium
Steps to write Selenium
Rohit Thakur
 

Ähnlich wie Automation With Frank (20)

[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
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Continuous delivery for native apps
Continuous delivery for native appsContinuous delivery for native apps
Continuous delivery for native apps
 
How To Run/Test Flutter App On a Real Device?
How To Run/Test Flutter App On a Real Device?How To Run/Test Flutter App On a Real Device?
How To Run/Test Flutter App On a Real Device?
 
Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)
 
Tutorial on the integration of Selenium with cucumber for experts and fresher’s
Tutorial on the integration of Selenium with cucumber for experts and fresher’sTutorial on the integration of Selenium with cucumber for experts and fresher’s
Tutorial on the integration of Selenium with cucumber for experts and fresher’s
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
 
Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Java
 
monkeyTalk
monkeyTalkmonkeyTalk
monkeyTalk
 
monkeyTalk
monkeyTalkmonkeyTalk
monkeyTalk
 
voice recognition security system ppt
voice recognition security system pptvoice recognition security system ppt
voice recognition security system ppt
 
CS02A - Interacting with applications.pptx
CS02A - Interacting with applications.pptxCS02A - Interacting with applications.pptx
CS02A - Interacting with applications.pptx
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Selenium- A Software Testing Tool
Selenium- A Software Testing ToolSelenium- A Software Testing Tool
Selenium- A Software Testing Tool
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Steps to write Selenium
Steps to write Selenium  Steps to write Selenium
Steps to write Selenium
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Selenium Training in Chennai
Selenium Training in ChennaiSelenium Training in Chennai
Selenium Training in Chennai
 
Phonegap Development & Debugging
Phonegap Development & DebuggingPhonegap Development & Debugging
Phonegap Development & Debugging
 
Appium Meetup #2 - Mobile Web Automation Introduction
Appium Meetup #2 - Mobile Web Automation IntroductionAppium Meetup #2 - Mobile Web Automation Introduction
Appium Meetup #2 - Mobile Web Automation Introduction
 

Mehr von Ralu Mihordea (6)

Fragmente de Rafinament
Fragmente de RafinamentFragmente de Rafinament
Fragmente de Rafinament
 
echinoctiuDivin.pdf
echinoctiuDivin.pdfechinoctiuDivin.pdf
echinoctiuDivin.pdf
 
Time Lapses on Automation
Time Lapses on AutomationTime Lapses on Automation
Time Lapses on Automation
 
Bug reporting
Bug reportingBug reporting
Bug reporting
 
Basic web architecture
Basic web architectureBasic web architecture
Basic web architecture
 
Documentation in Software Testing
Documentation in Software TestingDocumentation in Software Testing
Documentation in Software Testing
 

Kürzlich hochgeladen

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
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

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...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
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
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
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, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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
 
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
 

Automation With Frank

  • 1.
  • 2. Presentation Highlights: ● What is Frank ● Why Frank ● How to use Frank ● Conclusions ● Q&A
  • 3. What is Frank? ● Basic 'Selenium for native iOS apps'. ● Write automated acceptance tests ● Verify the functionality of native iOS apps. ● Symbiote - a powerful “app inspector”
  • 4. Why: Advantages • Easy Setup - less than 10 minutes. • Record Video - of the test runs to show the app in action • Run everywhere - has support for Simulator and Device • Integrates with CI - run on every check in • Great Community - strong, helpful community Google Group
  • 5. Disadvantages • Doesn’t support Record and Play • Improvements based usually only on community requests • Lack of documentation
  • 7. Communication • Frankly - simple HTTP-based wire protocol. • GET and POST requests • Request and response bodies contain JSON
  • 8. Response Format • Responses may either be standard or non-standard. • A standard response always conforms to a format similar to: { 'outcome': 'SUCCESS', 'results': ['foo','bar'] } indicating a failure format: { 'outcome': 'ERROR', 'reason': 'Failed to frob the flib', 'detail': 'Flange capacitator decoupled' } • Non-standard responses will be valid JSON documents
  • 9. Frank Server • Written in objective-C • Compiled into the automated iOS application • Provides responses to the Driver
  • 10. Frank Driver • Cucumber Driver - implemented in ruby • Shelley - a selector engine to access a subset of UI elements. • Create additional drivers rewriting frank_helpers.rb • Frank helpers - a core set of helper functions
  • 11. How to use Frank • Designed to work with Cucumber. • Can be adapted to other languages too. • Examples: Cucumber and Java. turn on the accessibility features on the machine hosting your iOS simulator. Go to System Preferences -> Universal Access and Check “Enable access for assistive devices”.
  • 12. Frankify the app • the process of adding a separate Frank target to your app • has the Frank server embedded into it • allowing it to respond to automation commands. Frankified application Application Frank Server
  • 13. Frankify the app • install the frank-cucumber gem by running: sudo gem install frank-cucumber (run this into the project's root directory – the one with the .xcodeproj file) • create the Frank subdirectory which contains everything necessary to Frankify you app by running frank setup
  • 14. Frankify the app • create a Frankified version of you app by running: frank build • launch the Frankified app in the simulator by running: frank launch • check that you are indeed running a Frankified version by running: frank inspect
  • 15. Symbiote ● creates a tree structure with the UI Elements from you app. ● must have the app running in the simulator. ● the application should be exactly on the same screen as Symbiote, for it to work. ● when investigating a different screen, the browser must be refreshed. ● access it from browser at http://localhost:37265/
  • 16. Shelley ● Symbiote uses Shelley to access the UI Elements via queries. ● Verify if an element is accessible from browser using a query that should have the final result highlighting the desired element. ● Examples of queries: ○ view:'UILabel' marked:'Saved Tabs' parent view:'TableViewCell' ○ button:"UIButton" marked:'btn plus' index:0
  • 17. Frank using Cucumber • Cucumber - a tool that executes plain-text functional descriptions as automated tests. • Gherkin – the language that Cucumber understands. – Business Readable, Domain Specific Language – serves two purposes — documentation and automated tests.
  • 18. Speaking the same language • Cucumber supports over 40 spoken languages • Listing the available languages: cucumber --i18n help Ahoy! me buckos
  • 19. Example Feature: Navigating between screens Scenario: Moving from the 'Home' screen to the 'Events' screen and navigate through it Given I launch the app When I navigate to "Events" Then I should be on the Events screen When I navigate Events to "Count Down" Then I should be on the Count Down screen
  • 20. Conclusions • Open source tool for automation testing against iOS apps • Adaptable to one’s needs • Uses the power provided by Apple’s framework • Great community that provides support
  • 21. Bibliography • The Official Website: testingwithfrank.com • The GitHub Repository: moredip/Frank • Pete Hodgson’s Blog: Being Agile • Google Group: Frank • Frank Helpers: rdoc.info/gems/frank-cucumber