SlideShare uma empresa Scribd logo
1 de 54
Testing
 iOS apps
with Frank
  Stewart Gleadow
   @stewgleadow
why

 have

 
 tests?
why

 have

 
 tests?
Testing Approaches
“It seems to
be working”
“Nothing is
obviously broken”
Testing iPhone Apps


      iPhone App
iPhone App




  Server
iPhone App




             Solved?
  Server
iPhone App   ?



             Solved?
  Server
Does MVC help?
UIView


UIViewController


                   Model


    Server
UIView


UIViewController


                   Model


    Server
UIView


UIViewController


    Solved?        Model


    Server
UIView
          ?

UIViewController


    Solved?        Model


    Server
UIViewController   UIView
UIViewController         UIView

          50% of native code?
UIViewController   UIView
Automated
Functional
 Testing
Potential Testing Tools

                 hmmm...
Potential Testing Tools

• Frank and UISpec   hmmm...
Potential Testing Tools

• Frank and UISpec   hmmm...
• Sikuli
Potential Testing Tools

• Frank and UISpec   hmmm...
• Sikuli
• FoneMonkey
Potential Testing Tools

• Frank and UISpec   hmmm...
• Sikuli
• FoneMonkey
• iCuke
Potential Testing Tools

• Frank and UISpec   hmmm...
• Sikuli
• FoneMonkey
• iCuke
• UIAutomation
UISpec
UISpec


- (void)itShouldHaveDefaultUsers;
{
    [[app.tableView.label text:@"User"] should].exist;
}
UISpec
Cucumber
Cucumber

Scenario: [name of the scenario]
   Given [some statement]
   When [some action]
   Then [some expected result]
   And [another expectation]
to be perfectly Frank...
Tests

        iPhone
          App
Tests
                          UISpec
   Cucumber / Ruby
                     ?
                         iPhone
                           App
Tests                Frank
                     Server



                          UISpec
   Cucumber / Ruby

                     iPhone
                       App
Tests                Frank
                     Driver
                              Frank
                              Server



                                   UISpec
   Cucumber / Ruby

                              iPhone
                                App
Tests                Frank
                     Driver
                                          Frank
                                          Server
                              “frankly”

                                               UISpec
   Cucumber / Ruby

                                          iPhone
                                            App
Frank
uses
accessibility
labels
frankly.my_dear       do |i|
  dont_give_a_damn!
end
frankly.my_dear       do |i|
  dont_give_a_damn!
end




    UISpec
   UIQuery

     Frank
    Frankly
frankly.my_dear        do |i|
  dont_give_a_damn!
end




    UISpec
   UIQuery            [app.tableView.label text:@"User"];




     Frank
    Frankly
frankly.my_dear        do |i|
  dont_give_a_damn!
end




    UISpec
   UIQuery            [app.tableView.label text:@"User"];




     Frank
    Frankly           app tableView label text:’User’
Frank Steps
Scenario: default users should be present at startup

   When I start the app

   Then I should see “Users”
Frank Steps
Scenario: default users should be present at startup

   When I start the app

   Then I should see “Users”



  Then /^I should see "([^"]*)"$/ do |expected_mark|

    check_element_exists("view marked:'#{expected_mark}'")

  end
Demo
The Road
 Ahead
The Road
 Ahead
 Behind
Stewart Gleadow

sgleadow@thoughtworks.com

      @stewgleadow
References
•   github.com/moredip/frank & http://groups.google.com/group/frank-discuss

•   code.google.com/p/uispec & http://groups.google.com/group/uispec

•   softnoise.wordpress.com/2010/11/14/ios-setting-up-a-test-environment/

•   cukes.info

•   cuke4ninja.com

•   The RSpec Book
Images

•   http://www.myfreewallpapers.net/movies/pages/
    frankenstein-02.shtml

•   http://www.workbloom.net/wp-content/uploads/2009/09/
    road-ahead.jpg

•   http://upload.wikimedia.org/wikipedia/commons/archive/
    0/07/20090605224904!IMac_aluminium.png

•   http://themachoresponse.blogspot.com/2010/03/frankly-my-
    dear-i-dont-give-damn.html

•   http://www.jesseshunting.com/images/confused_sign_post.jpg

Mais conteúdo relacionado

Mais procurados

Future of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals itFuture of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals itSrinivasan Sekar
 
Monkey runner & Monkey testing
Monkey runner & Monkey testingMonkey runner & Monkey testing
Monkey runner & Monkey testingSWAAM Tech
 
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)danielputerman
 
Appium basics
Appium basicsAppium basics
Appium basicsSyam Sasi
 
Testing Native Apps at PAYBACK
Testing Native Apps at PAYBACKTesting Native Apps at PAYBACK
Testing Native Apps at PAYBACKMarcel Gehlen
 
Automated UI Testing for Web and Native Apps on iOS and Android
Automated UI Testing for  Web and Native Apps on iOS and AndroidAutomated UI Testing for  Web and Native Apps on iOS and Android
Automated UI Testing for Web and Native Apps on iOS and AndroidOperation Mobile
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With AppiumKnoldus Inc.
 
Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?Zado Technologies
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using AppiumMindfire Solutions
 
Automation testing on ios platform using appium
Automation testing on ios platform using appiumAutomation testing on ios platform using appium
Automation testing on ios platform using appiumAmbreen Khan
 
Appium meet up noida
Appium meet up noidaAppium meet up noida
Appium meet up noidaAmit Rawat
 
Appium workship, Mobile Web+Dev Conference
Appium workship,  Mobile Web+Dev ConferenceAppium workship,  Mobile Web+Dev Conference
Appium workship, Mobile Web+Dev ConferenceIsaac Murchie
 
Monkey talk
Monkey talkMonkey talk
Monkey talkISsoft
 
Introduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing ToolsIntroduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing Toolsi_am_craig
 
10 Golden Rules For Outstanding Titanium Apps
 10 Golden Rules For Outstanding Titanium Apps 10 Golden Rules For Outstanding Titanium Apps
10 Golden Rules For Outstanding Titanium Appsjamessugrue
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with AppiumManoj Kumar Kumar
 
Appium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriverAppium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriverAndrii Dzynia
 
Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolVivek Pansara
 

Mais procurados (20)

Future of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals itFuture of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals it
 
Monkey runner & Monkey testing
Monkey runner & Monkey testingMonkey runner & Monkey testing
Monkey runner & Monkey testing
 
Appium ppt
Appium pptAppium ppt
Appium ppt
 
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)
 
Appium basics
Appium basicsAppium basics
Appium basics
 
Testing Native Apps at PAYBACK
Testing Native Apps at PAYBACKTesting Native Apps at PAYBACK
Testing Native Apps at PAYBACK
 
Automated UI Testing for Web and Native Apps on iOS and Android
Automated UI Testing for  Web and Native Apps on iOS and AndroidAutomated UI Testing for  Web and Native Apps on iOS and Android
Automated UI Testing for Web and Native Apps on iOS and Android
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With Appium
 
Automated UI Testing Frameworks
Automated UI Testing FrameworksAutomated UI Testing Frameworks
Automated UI Testing Frameworks
 
Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
 
Automation testing on ios platform using appium
Automation testing on ios platform using appiumAutomation testing on ios platform using appium
Automation testing on ios platform using appium
 
Appium meet up noida
Appium meet up noidaAppium meet up noida
Appium meet up noida
 
Appium workship, Mobile Web+Dev Conference
Appium workship,  Mobile Web+Dev ConferenceAppium workship,  Mobile Web+Dev Conference
Appium workship, Mobile Web+Dev Conference
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 
Introduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing ToolsIntroduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing Tools
 
10 Golden Rules For Outstanding Titanium Apps
 10 Golden Rules For Outstanding Titanium Apps 10 Golden Rules For Outstanding Titanium Apps
10 Golden Rules For Outstanding Titanium Apps
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with Appium
 
Appium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriverAppium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriver
 
Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk Tool
 

Destaque

Mobile: more than just an app
Mobile: more than just an appMobile: more than just an app
Mobile: more than just an appsgleadow
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testingsgleadow
 
Xcode 4 shortcuts (Melbourne Cocoheads April 2011)
Xcode 4 shortcuts (Melbourne Cocoheads April 2011)Xcode 4 shortcuts (Melbourne Cocoheads April 2011)
Xcode 4 shortcuts (Melbourne Cocoheads April 2011)Jesse Collis
 
Building mobile teams and getting a product to market
Building mobile teams and getting a product to marketBuilding mobile teams and getting a product to market
Building mobile teams and getting a product to marketsgleadow
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Tatsuya Ishikawa
 
MonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android ApplicationMonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android ApplicationContusQA
 

Destaque (9)

Mobile: more than just an app
Mobile: more than just an appMobile: more than just an app
Mobile: more than just an app
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testing
 
iOS Testing
iOS TestingiOS Testing
iOS Testing
 
Xcode 4 shortcuts (Melbourne Cocoheads April 2011)
Xcode 4 shortcuts (Melbourne Cocoheads April 2011)Xcode 4 shortcuts (Melbourne Cocoheads April 2011)
Xcode 4 shortcuts (Melbourne Cocoheads April 2011)
 
Building mobile teams and getting a product to market
Building mobile teams and getting a product to marketBuilding mobile teams and getting a product to market
Building mobile teams and getting a product to market
 
Agile iOS
Agile iOSAgile iOS
Agile iOS
 
.Netconf
.Netconf.Netconf
.Netconf
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
 
MonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android ApplicationMonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android Application
 

Semelhante a Frank iOS Testing

The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...Hinling Yeung
 
iOS UI Testing with Frank
iOS UI Testing with FrankiOS UI Testing with Frank
iOS UI Testing with FrankKeith Pitt
 
[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
 
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests20170302 tryswift tasting_tests
20170302 tryswift tasting_testsKazuaki Matsuo
 
The Future of Selenium Testing for Mobile Web and Native Apps
The Future of Selenium Testing for Mobile Web and Native AppsThe Future of Selenium Testing for Mobile Web and Native Apps
The Future of Selenium Testing for Mobile Web and Native AppsSauce Labs
 
Automation With Frank
Automation With FrankAutomation With Frank
Automation With FrankRalu Mihordea
 
Suparna - Shift Left Testing in Mobile.pptx
Suparna - Shift Left Testing in Mobile.pptxSuparna - Shift Left Testing in Mobile.pptx
Suparna - Shift Left Testing in Mobile.pptxSUPARNA KHAMARU
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: DemystifiedSeth McLaughlin
 
Appium: the Superhero of Mobile testing
Appium: the Superhero of Mobile testingAppium: the Superhero of Mobile testing
Appium: the Superhero of Mobile testingInfotek Solutions
 
Native iphone app test automation with appium
Native iphone app test automation with appiumNative iphone app test automation with appium
Native iphone app test automation with appiumJames Eisenhauer
 
Designing an effective hybrid apps automation framework
Designing an effective hybrid apps automation frameworkDesigning an effective hybrid apps automation framework
Designing an effective hybrid apps automation frameworkAndrea Tino
 
20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuoKazuaki Matsuo
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumBugRaptors
 
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsiOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsShashikant Jagtap
 

Semelhante a Frank iOS Testing (20)

Ui BDD Testing
Ui BDD TestingUi BDD Testing
Ui BDD Testing
 
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
The Chronicle of iPhone Automation -- From Frank to UISpec to UIAutomation to...
 
iOS UI Testing with Frank
iOS UI Testing with FrankiOS UI Testing with Frank
iOS UI Testing with Frank
 
[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
 
iOS Application Testing
iOS Application TestingiOS Application Testing
iOS Application Testing
 
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
 
The Future of Selenium Testing for Mobile Web and Native Apps
The Future of Selenium Testing for Mobile Web and Native AppsThe Future of Selenium Testing for Mobile Web and Native Apps
The Future of Selenium Testing for Mobile Web and Native Apps
 
Automation With Frank
Automation With FrankAutomation With Frank
Automation With Frank
 
Suparna - Shift Left Testing in Mobile.pptx
Suparna - Shift Left Testing in Mobile.pptxSuparna - Shift Left Testing in Mobile.pptx
Suparna - Shift Left Testing in Mobile.pptx
 
Automating android
Automating androidAutomating android
Automating android
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: Demystified
 
Appium: the Superhero of Mobile testing
Appium: the Superhero of Mobile testingAppium: the Superhero of Mobile testing
Appium: the Superhero of Mobile testing
 
Native iphone app test automation with appium
Native iphone app test automation with appiumNative iphone app test automation with appium
Native iphone app test automation with appium
 
Suparna - XCUITest
Suparna - XCUITestSuparna - XCUITest
Suparna - XCUITest
 
Designing an effective hybrid apps automation framework
Designing an effective hybrid apps automation frameworkDesigning an effective hybrid apps automation framework
Designing an effective hybrid apps automation framework
 
20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo20170529 clem kazuaki_matsuo
20170529 clem kazuaki_matsuo
 
Automation using Appium
Automation using AppiumAutomation using Appium
Automation using Appium
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appium
 
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsiOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
 
Espresso
EspressoEspresso
Espresso
 

Mais de sgleadow

Evolving Mobile Architectures @ Mi9
Evolving Mobile Architectures @ Mi9Evolving Mobile Architectures @ Mi9
Evolving Mobile Architectures @ Mi9sgleadow
 
Evolving for Multiple Screens
Evolving for Multiple ScreensEvolving for Multiple Screens
Evolving for Multiple Screenssgleadow
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architecturessgleadow
 
iOS app case study
iOS app case studyiOS app case study
iOS app case studysgleadow
 
iOS View Coordinators
iOS View CoordinatorsiOS View Coordinators
iOS View Coordinatorssgleadow
 
Multithreaded Data Transport
Multithreaded Data TransportMultithreaded Data Transport
Multithreaded Data Transportsgleadow
 
A few design patterns
A few design patternsA few design patterns
A few design patternssgleadow
 
GPU Programming
GPU ProgrammingGPU Programming
GPU Programmingsgleadow
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patternssgleadow
 
Beginning iPhone Development
Beginning iPhone DevelopmentBeginning iPhone Development
Beginning iPhone Developmentsgleadow
 

Mais de sgleadow (10)

Evolving Mobile Architectures @ Mi9
Evolving Mobile Architectures @ Mi9Evolving Mobile Architectures @ Mi9
Evolving Mobile Architectures @ Mi9
 
Evolving for Multiple Screens
Evolving for Multiple ScreensEvolving for Multiple Screens
Evolving for Multiple Screens
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architectures
 
iOS app case study
iOS app case studyiOS app case study
iOS app case study
 
iOS View Coordinators
iOS View CoordinatorsiOS View Coordinators
iOS View Coordinators
 
Multithreaded Data Transport
Multithreaded Data TransportMultithreaded Data Transport
Multithreaded Data Transport
 
A few design patterns
A few design patternsA few design patterns
A few design patterns
 
GPU Programming
GPU ProgrammingGPU Programming
GPU Programming
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patterns
 
Beginning iPhone Development
Beginning iPhone DevelopmentBeginning iPhone Development
Beginning iPhone Development
 

Último

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Último (20)

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Frank iOS Testing

Notas do Editor

  1. \n
  2. - talk covers native apps only\n- audience different from original\n- linking up a handful of open source tools to create a monster\n- the tools that it links together\n- the reason frank needs to exist\n
  3. - in a team environment, need to know if you’ve broken another part of the app\n- cost of bugs in production is too high (bad reviews kill you, one chance)\n- executable documentation (so should be business readable => cucumber - DHH)\n- onboarding team members quickly (agile app)\n\n\n
  4. - in a team environment, need to know if you’ve broken another part of the app\n- cost of bugs in production is too high (bad reviews kill you, one chance)\n- executable documentation (so should be business readable => cucumber - DHH)\n- onboarding team members quickly (agile app)\n\n\n
  5. - in a team environment, need to know if you’ve broken another part of the app\n- cost of bugs in production is too high (bad reviews kill you, one chance)\n- executable documentation (so should be business readable => cucumber - DHH)\n- onboarding team members quickly (agile app)\n\n\n
  6. - broad spectrum of testing approaches\n- skewed towards the ‘absolutely none’ end\n\n
  7. - try it out, press a few buttons (perhaps even mail it to the user)\n- it seems to be working => nothing is obviously broken\n* not as strong a statement (try sending that to a client)\n- manual testing takes too long\n\n
  8. - try it out, press a few buttons (perhaps even mail it to the user)\n- it seems to be working => nothing is obviously broken\n* not as strong a statement (try sending that to a client)\n- manual testing takes too long\n\n
  9. - try it out, press a few buttons (perhaps even mail it to the user)\n- it seems to be working => nothing is obviously broken\n* not as strong a statement (try sending that to a client)\n- manual testing takes too long\n\n
  10. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  11. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  12. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  13. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  14. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  15. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  16. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  17. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  18. - one big amorphous blob -> maybe there are parts to test\n- test client/server separately\n* testing the bits where computers talk to computers is easier\n- rspec/cucumber (dhh rant?)\n* native side should be as small as possible (or not native at all?)\n* native side is Safari?\n
  19. - break down into smaller components\n-> not just all in your app delegate and view controllers\n
  20. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  21. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  22. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  23. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  24. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  25. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  26. - done the server, look at the iPhone app specifically\n- can unit test the M in MVC\n* (coverage and a little bit more patchy than that)\n- is it possible for the model to be cross platform?\n* Rhodes? c# w/ Mono? C? Javascript?\n
  27. - views: hard to test that a view looks correct, or an animation looks right, must be manual\n- controllers: keep it just plumping* (don’t let them creep)\n* if it goes wrong it should be obvious (but things break)\n- messiest & most prone to change?\n- the bits the user actually sees\n
  28. - views: hard to test that a view looks correct, or an animation looks right, must be manual\n- controllers: keep it just plumping* (don’t let them creep)\n* if it goes wrong it should be obvious (but things break)\n- messiest & most prone to change?\n- the bits the user actually sees\n
  29. - need something that interacts with the app like a user\n- selenium/webdriver equivalents\n
  30. TOOLS FOR - actually remote controlling your app (like Selenium or WebDriver)\nSikuli - uses image analysis (fragile?)\n- simulator only unless you jailbreak your phone and run a VNC server on it\nFoneMonkey - comes from a record/playback model (does have scripting now)\niCuke - very similar to Frank but uses XML/xpath\n- pushes more work to the Ruby side, very little Objective C logic\n- potentially lead to brittle tests as XML structure more likely to change?\n- more “touch at X Y” kind of tests\nUIAutomation - Instruments + javascript + jasmine-iphone\n- could not consistently run and automate in the build, no applescript\n
  31. TOOLS FOR - actually remote controlling your app (like Selenium or WebDriver)\nSikuli - uses image analysis (fragile?)\n- simulator only unless you jailbreak your phone and run a VNC server on it\nFoneMonkey - comes from a record/playback model (does have scripting now)\niCuke - very similar to Frank but uses XML/xpath\n- pushes more work to the Ruby side, very little Objective C logic\n- potentially lead to brittle tests as XML structure more likely to change?\n- more “touch at X Y” kind of tests\nUIAutomation - Instruments + javascript + jasmine-iphone\n- could not consistently run and automate in the build, no applescript\n
  32. TOOLS FOR - actually remote controlling your app (like Selenium or WebDriver)\nSikuli - uses image analysis (fragile?)\n- simulator only unless you jailbreak your phone and run a VNC server on it\nFoneMonkey - comes from a record/playback model (does have scripting now)\niCuke - very similar to Frank but uses XML/xpath\n- pushes more work to the Ruby side, very little Objective C logic\n- potentially lead to brittle tests as XML structure more likely to change?\n- more “touch at X Y” kind of tests\nUIAutomation - Instruments + javascript + jasmine-iphone\n- could not consistently run and automate in the build, no applescript\n
  33. TOOLS FOR - actually remote controlling your app (like Selenium or WebDriver)\nSikuli - uses image analysis (fragile?)\n- simulator only unless you jailbreak your phone and run a VNC server on it\nFoneMonkey - comes from a record/playback model (does have scripting now)\niCuke - very similar to Frank but uses XML/xpath\n- pushes more work to the Ruby side, very little Objective C logic\n- potentially lead to brittle tests as XML structure more likely to change?\n- more “touch at X Y” kind of tests\nUIAutomation - Instruments + javascript + jasmine-iphone\n- could not consistently run and automate in the build, no applescript\n
  34. TOOLS FOR - actually remote controlling your app (like Selenium or WebDriver)\nSikuli - uses image analysis (fragile?)\n- simulator only unless you jailbreak your phone and run a VNC server on it\nFoneMonkey - comes from a record/playback model (does have scripting now)\niCuke - very similar to Frank but uses XML/xpath\n- pushes more work to the Ruby side, very little Objective C logic\n- potentially lead to brittle tests as XML structure more likely to change?\n- more “touch at X Y” kind of tests\nUIAutomation - Instruments + javascript + jasmine-iphone\n- could not consistently run and automate in the build, no applescript\n
  35. - BDD tool modelled on RSpec\n- useful tool, not a huge community about it\n- uses a query language called UIQuery\n- difficult to run as part of a CI build (Perryn)\n- output hard to read\n- not business readable\n
  36. - BDD tool modelled on RSpec\n- useful tool, not a huge community about it\n- uses a query language called UIQuery\n- difficult to run as part of a CI build (Perryn)\n- output hard to read\n- not business readable\n
  37. - BDD tool modelled on RSpec\n- useful tool, not a huge community about it\n- uses a query language called UIQuery\n- difficult to run as part of a CI build (Perryn)\n- output hard to read\n- not business readable\n
  38. - easy to integrate with CI\n
  39. - describe the behaviour of the app in plain English\n- business readable\n-> think at a higher level\n
  40. - stringing other open source libraries together to make Frank\n- put it together to make the monster\n
  41. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  42. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  43. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  44. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  45. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  46. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  47. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  48. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  49. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  50. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  51. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  52. - embeds an HTTP server inside the app to send commands to\n(using a modified main.m file or conditional compilation using precompile flags)\n- interact with via cucumber with Ruby steps\n- more predefined steps than iCuke\n* should run on the device (no dynamic libraries)\n* published as bonjour device\n\n
  53. - enabled accessibility in OS X Universal Access and iPhone Simulator\n(not sure about on the actual device, is it always on?)\n- leads to less fragile tests\n* tests can use the same domain language as the app\n(not bound to the view hierarchy or XML representation)\n- at worst, the app becomes more accessible (if done right)\n* forces the tests to use the domain language of the user\n
  54. - Frankly is like UIQuery without the . and [ ]\n
  55. - Frankly is like UIQuery without the . and [ ]\n
  56. - Frankly is like UIQuery without the . and [ ]\n
  57. - Frankly is like UIQuery without the . and [ ]\n
  58. - symbiote: talk to a running app interactively\n- view DOM & accessibility label\n- flash element\n- write the most general selector possible (less brittle tests)\n\n
  59. - symbiote: talk to a running app interactively\n- view DOM & accessibility label\n- flash element\n- write the most general selector possible (less brittle tests)\n\n
  60. - symbiote: talk to a running app interactively\n- view DOM & accessibility label\n- flash element\n- write the most general selector possible (less brittle tests)\n\n
  61. - lots of predefined steps for many common cases\n- views exist, accessibility falling back to labels\n- run in simulator, kill, wipe the cache\n
  62. \n
  63. - not the bill gates book -> information highway\n- easier install (frank-cucmber ruby gem)\n- better integration with CI\n* launch_app_headless\n* iphone_sim\n* xcodebuild instead of Applescript\n- recording test runs as movies for test artifacts\n* (already implemented, just haven’t looked into it)\n
  64. - not the bill gates book -> information highway\n- easier install (frank-cucmber ruby gem)\n- better integration with CI\n* launch_app_headless\n* iphone_sim\n* xcodebuild instead of Applescript\n- recording test runs as movies for test artifacts\n* (already implemented, just haven’t looked into it)\n
  65. - not the bill gates book -> information highway\n- easier install (frank-cucmber ruby gem)\n- better integration with CI\n* launch_app_headless\n* iphone_sim\n* xcodebuild instead of Applescript\n- recording test runs as movies for test artifacts\n* (already implemented, just haven’t looked into it)\n
  66. - screenshots and image based regression testing\n- even better CI capability\n- merge with iCuke\n- integrate with UIAutomation\n* less UISpec, add javascript steps?\n- better on-device testing\n* Apple knows devices/OS, not testing\n* give us the hooks\n
  67. \n
  68. \n
  69. \n