SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
MOET
    https://github.com/eing/moet
       Mobile End-to-End Testing
       Mobile Exploratory Testing

                Eing Ong
               Intuit, Inc.
         @eingong|eing.ong@intuit.com




1
                                        1
Mobile'automation'technologies1

•  Two categories
      •  Instrumented technique
      •  Non-instrumented technique

•  What is instrumentation?
      •    Tests are compiled with the app
      •    Tests are installed & launched with the app
      •    Source code is required and may need to be modified
      •    Only one app can be executed at a time
      •    White box approach



                                                                 2
Advantages'of'both'techniques1

Non$instrumentation-                    Instrumentation-

•  Device'platform'agnostic1            •    Elements'can'be'accessed1
•  Test'code'reuse1                     •    Debugging'ease1
•  Test'language'&'test'harness'        •    Test'verification'ease1
   autonomy1                            •    Reduce'tools'dependencies1
•  Support'for1                         •    Support'for1
    Multi>applications'testing1              Installing'application1
    Custom'composite'UI'elements1            Launching'application1
    Database/server'API'assertions1          Cleanup'(kill'application)1
    Use'of'external'libraries1               Test'execution'on'device1
    '(e.g.'hardware/image'libraries)1        Code'coverage1



                                                                           3
Which'technique'should'I'use'?1

  Non-instrumentation                     Instrumentation

                      External3
                     interaction-
           Hardware3                Text$based3
          interaction-               features-

                  Image3based3
                    features-




                                                            4
Mobile'automation'tools1

 Mobile3-       Non$                 Instrumentation-
  OS-     instrumentation-
 Android1 eggPlant,'Sikuli,'MOET,' Robotium,'Calabash,'
          MonkeyRunner1            MonkeyTalk1

   iOS1    eggPlant,'Sikuli,'MOET1 UIAutomation,'KIF,'
                                   iCuke,'Frank,'UISpec,'
                                   Zucchini,'Bwoken,'
                                   Calabash,'MonkeyTalk,'
                                   Applecart,'iOS>driver1



                                                            5
MOET1
                                 Test
•  Think design                  Login(“user1”,”passwd1”)
  o  Interfaces
  o  Creational pattern           iPhone implementation
                                        touch(100,100)
•  Think reuse                          enter(username)
                                        touch(100,200)
  o  Device independent tests
                                        enter(password)
•  Think One                            touch(150, 300)

  o  IDE
  o  Test harness and language     iPhone Sikuli library
                                       void enter()
                                       void touch(x,y)

                                                            6
Anatomy'of''MOET1

             Mobile3Application3Interface-


              Device3Independent3Tests-
                     Runtime binding
  Simulator/Device libraries
     Android3application3       iPhone3application3
       implementation-            implementation-
    Android3MonkeyRunner3
                               iPhone3Sikuli3Library-
           Library-



                                                        7
Top Ten Wish List
            a.k.a.
    Mobile test automation
         Wall of Pain




8
                             8
Android'Wall'of'Pain1

10.  There’s more to test execution
   o  Command with report file generation :
       adb shell am instrument -w -e reportFile junit-report.xml
       com.intuit.test/com.zutubi.android.junitreport.JUnitReportTestRunner
   o  Date-time fix if using device snapshots :
       adb shell date -s `date +"%Y%m%d.%H%M%S”`


9.  Where are the test results ?
   o  Pulling results from device :
       adb pull /data/data/com.intuit.test/files/junit-report.xml junit-
       report.xml




                                                                              9
Android'Wall'of'Pain1

10.  There’s more to test execution
   o  Command with report file generation :
       adb shell am instrument -w -e reportFile junit-report.xml
       com.intuit.test/com.zutubi.android.junitreport.JUnitReportTestRunner
   o  Date-time fix if using device snapshots :
       adb shell date -s `date +"%Y%m%d.%H%M%S”`


9.  Where are the test results ?
   o  Pulling results from device :
       adb pull /data/data/com.intuit.test/files/junit-report.xml junit-
       report.xml




                                                                              10
iOS'Wall'of'Pain1

8.  iOS simulator…the singleton pattern
  o    Multiple instances of simulator
  o    Headless execution

7.  What test harness ?
  o  Test grouping, test assertions, base test class
  o  Results needs to be displayable in browser

6.  How about a CI plugin
  o  Test execution
  o  Code coverage


                                                       11
iOS'Wall'of'Pain1
8.  iOS simulator…the singleton pattern
  o    Multiple instances of simulator
  o    Headless execution

7.  What test harness ?
  o  Test grouping, test assertions, base test class
  o  Results needs to be displayable in browser

6.  How about a CI plugin
  o  Test execution
  o  Code coverage



                                                       12
iOS'Wall'of'Pain1
8.  iOS simulator…the singleton pattern
  o    Headless execution
  o    Multiple instances of simulator

7.  What test harness ?
  o  Test grouping, test assertions, base test class
  o  Results needs to be displayable in browser

6.  How about a CI plugin
  o  Test execution
  o  Test results
  o  Code coverage


                                                       13
iOS'Wall'of'Pain1

5.  Where’s the IDE plugin ?
  o    Code formatting
  o    API completion
  o    Breakpoints, debugger
  o    “javadoc” help
  o    One click test execution of test method/testsuite




                                                           14
All'mobile'platforms1

4.  Problem ? Search ?
  o  Blogs, stackoverflow, developer groups for devices, etc.
  o  Mobile testing one-stop tips & tricks (not questions)
  o  Community driven effort

   Tip – Remove authorization prompt
       Administrative rights
       Update /etc/authorization
           <key>system.privilege.taskport</key>
              <dict>
                 <key>allow-root</key>
                    <!-- previous value <false/> -->
                    <true/>

   Tip – Clean cache, preferences, SQLite
       ~/Library/Application Support/iPhone Simulator/{SDK}/Applications/<uuid>
            Library: Preferences, Caches
            Documents: sqlite3 <app>.sqlitedb


                                                                                  15
All'mobile'platforms1

3.  How about a mobile test report ?
  o  Mobile test report standard e.g. mobile-test-report.xml
      •  Screenshots and video recording of failed tests
      •  Device logs
      •  Device detection

2.  Wireless?
  o  OTA app installation
  o  Testing via wifi and carrier networks
  o  Selenium grid-like test infrastructure



                                                               16
All'mobile'platforms1

3.  How about a mobile test report?
  o  Mobile test report standard e.g. mobile-test-report.xml
      •  Screenshots and video recording of failed tests
      •  Device logs
      •  Device detection

2.  Mobile testing is anything but mobile
  o    OTA app installation and execution
  o    Testing via wifi and carrier networks
  o    Test tool independent component
  o    Selenium grid-like test infrastructure


                                                               17
All'mobile'platforms1

1.  Yet another proprietary language?
  o  Open sourced test harness & language for
      •  Instrumented tests
      •  Non-instrumented tests
      •  Hybrid apps tests




                                                18
Next'steps1

Eclipse mobile       Test        Test        Test       Continuous
testing plugin   development   execution   reporting    integration


                 Mobile3Application3Interface-
                  Device3Independent3Tests-
                         Runtime binding
   Simulator/Device libraries
         Non$instrumented3       Instrumented3application3
     application3implementation-      implementation-
       Monkey$
                       Sikuli-      ?Android?-         ?iOS?3-
       Runner-


                                                                      19

Weitere ähnliche Inhalte

Was ist angesagt?

Kadecot APIs overview
Kadecot APIs overviewKadecot APIs overview
Kadecot APIs overviewsonycsl
 
Android testing
Android testingAndroid testing
Android testingJinaTm
 
A guide to Android automated testing
A guide to Android automated testingA guide to Android automated testing
A guide to Android automated testingjotaemepereira
 
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest
 
YOW! Connected 2014 - Developing Secure iOS Applications
YOW! Connected 2014 - Developing Secure iOS ApplicationsYOW! Connected 2014 - Developing Secure iOS Applications
YOW! Connected 2014 - Developing Secure iOS Applicationseightbit
 
Android Testing: An Overview
Android Testing: An OverviewAndroid Testing: An Overview
Android Testing: An OverviewSmartLogic
 
Barcode scanning on Android
Barcode scanning on AndroidBarcode scanning on Android
Barcode scanning on AndroidPietro F. Maggi
 
J2me Crash Course
J2me Crash CourseJ2me Crash Course
J2me Crash Courseguest860a03
 
How to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App TestingHow to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App TestingBitbar
 
iOS-Application-Security-iAmPr3m
iOS-Application-Security-iAmPr3miOS-Application-Security-iAmPr3m
iOS-Application-Security-iAmPr3mPrem Kumar (OSCP)
 
Exploring Thermal Related Stuff in iDevices using Open-Source Tool
Exploring Thermal Related Stuff in iDevices using Open-Source ToolExploring Thermal Related Stuff in iDevices using Open-Source Tool
Exploring Thermal Related Stuff in iDevices using Open-Source ToolKoan-Sin Tan
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-AutomationMindfire Solutions
 
Selenium training
Selenium trainingSelenium training
Selenium trainingShivaraj R
 
OWASP Melbourne - Introduction to iOS Application Penetration Testing
OWASP Melbourne - Introduction to iOS Application Penetration TestingOWASP Melbourne - Introduction to iOS Application Penetration Testing
OWASP Melbourne - Introduction to iOS Application Penetration Testingeightbit
 
Experitest & Wipro Co-Webinar
Experitest & Wipro Co-Webinar Experitest & Wipro Co-Webinar
Experitest & Wipro Co-Webinar Experitest
 
Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021Svetlin Nakov
 
Holy "Test Pyramid" , how it ruins your life
Holy "Test Pyramid" , how it ruins your lifeHoly "Test Pyramid" , how it ruins your life
Holy "Test Pyramid" , how it ruins your lifeYaroslav Pernerovsky
 

Was ist angesagt? (20)

Kadecot APIs overview
Kadecot APIs overviewKadecot APIs overview
Kadecot APIs overview
 
Android testing
Android testingAndroid testing
Android testing
 
A guide to Android automated testing
A guide to Android automated testingA guide to Android automated testing
A guide to Android automated testing
 
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
 
Testing on Android
Testing on AndroidTesting on Android
Testing on Android
 
YOW! Connected 2014 - Developing Secure iOS Applications
YOW! Connected 2014 - Developing Secure iOS ApplicationsYOW! Connected 2014 - Developing Secure iOS Applications
YOW! Connected 2014 - Developing Secure iOS Applications
 
Android Testing: An Overview
Android Testing: An OverviewAndroid Testing: An Overview
Android Testing: An Overview
 
Integrating on premise Line Of Business applications with CRM Online
Integrating on premise Line Of Business applications with CRM OnlineIntegrating on premise Line Of Business applications with CRM Online
Integrating on premise Line Of Business applications with CRM Online
 
Barcode scanning on Android
Barcode scanning on AndroidBarcode scanning on Android
Barcode scanning on Android
 
J2me Crash Course
J2me Crash CourseJ2me Crash Course
J2me Crash Course
 
How to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App TestingHow to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App Testing
 
iOS-Application-Security-iAmPr3m
iOS-Application-Security-iAmPr3miOS-Application-Security-iAmPr3m
iOS-Application-Security-iAmPr3m
 
Exploring Thermal Related Stuff in iDevices using Open-Source Tool
Exploring Thermal Related Stuff in iDevices using Open-Source ToolExploring Thermal Related Stuff in iDevices using Open-Source Tool
Exploring Thermal Related Stuff in iDevices using Open-Source Tool
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-Automation
 
Selenium training
Selenium trainingSelenium training
Selenium training
 
OWASP Melbourne - Introduction to iOS Application Penetration Testing
OWASP Melbourne - Introduction to iOS Application Penetration TestingOWASP Melbourne - Introduction to iOS Application Penetration Testing
OWASP Melbourne - Introduction to iOS Application Penetration Testing
 
Experitest & Wipro Co-Webinar
Experitest & Wipro Co-Webinar Experitest & Wipro Co-Webinar
Experitest & Wipro Co-Webinar
 
Mobile Apps Security Testing -3
Mobile Apps Security Testing -3Mobile Apps Security Testing -3
Mobile Apps Security Testing -3
 
Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021Appium Mobile Testing: Nakov at BurgasConf - July 2021
Appium Mobile Testing: Nakov at BurgasConf - July 2021
 
Holy "Test Pyramid" , how it ruins your life
Holy "Test Pyramid" , how it ruins your lifeHoly "Test Pyramid" , how it ruins your life
Holy "Test Pyramid" , how it ruins your life
 

Ähnlich wie MOET: Mobile End-to-End Testing

2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648Eing Ong
 
[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
 
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
 
Velocity Conference: Increasing Speed To Market In Mobile Development Through...
Velocity Conference: Increasing Speed To Market In Mobile Development Through...Velocity Conference: Increasing Speed To Market In Mobile Development Through...
Velocity Conference: Increasing Speed To Market In Mobile Development Through...Intuit Inc.
 
Monkey talk
Monkey talkMonkey talk
Monkey talkISsoft
 
100 effective software testing tools that boost your Testing
100 effective software testing tools that boost your Testing100 effective software testing tools that boost your Testing
100 effective software testing tools that boost your TestingBugRaptors
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitTina Su
 
Speed to Market in Mobile Development
Speed to Market in Mobile DevelopmentSpeed to Market in Mobile Development
Speed to Market in Mobile DevelopmentTina Su
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitTina Su
 
Learn mobile app testing in simple way
Learn mobile app testing in simple way Learn mobile app testing in simple way
Learn mobile app testing in simple way Mobile Pundits
 
Mobile testingartifacts
Mobile testingartifactsMobile testingartifacts
Mobile testingartifactsPragya Rastogi
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)Bitbar
 
Appium Overview - by Daniel Puterman
Appium Overview - by Daniel PutermanAppium Overview - by Daniel Puterman
Appium Overview - by Daniel PutermanApplitools
 
UIAutomation_Testing
UIAutomation_TestingUIAutomation_Testing
UIAutomation_TestingKrunal Soni
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10Eing Ong
 
Selenium Camp 2016 - Kiev, Ukraine
Selenium Camp 2016 -  Kiev, UkraineSelenium Camp 2016 -  Kiev, Ukraine
Selenium Camp 2016 - Kiev, UkraineJustin Ison
 
Selenium in the palm of your hand: Appium and automated mobile testing
Selenium in the palm of your hand: Appium and automated mobile testingSelenium in the palm of your hand: Appium and automated mobile testing
Selenium in the palm of your hand: Appium and automated mobile testingIsaac Murchie
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"DataArt
 
Learning's from mobile testing
Learning's from mobile testingLearning's from mobile testing
Learning's from mobile testingVikrant Chauhan
 
XCUITest for iOS App Testing and how to test with Xcode
XCUITest for iOS App Testing and how to test with XcodeXCUITest for iOS App Testing and how to test with Xcode
XCUITest for iOS App Testing and how to test with XcodepCloudy
 

Ähnlich wie MOET: Mobile End-to-End Testing (20)

2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648
 
[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
 
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)
 
Velocity Conference: Increasing Speed To Market In Mobile Development Through...
Velocity Conference: Increasing Speed To Market In Mobile Development Through...Velocity Conference: Increasing Speed To Market In Mobile Development Through...
Velocity Conference: Increasing Speed To Market In Mobile Development Through...
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 
100 effective software testing tools that boost your Testing
100 effective software testing tools that boost your Testing100 effective software testing tools that boost your Testing
100 effective software testing tools that boost your Testing
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuit
 
Speed to Market in Mobile Development
Speed to Market in Mobile DevelopmentSpeed to Market in Mobile Development
Speed to Market in Mobile Development
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuit
 
Learn mobile app testing in simple way
Learn mobile app testing in simple way Learn mobile app testing in simple way
Learn mobile app testing in simple way
 
Mobile testingartifacts
Mobile testingartifactsMobile testingartifacts
Mobile testingartifacts
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
 
Appium Overview - by Daniel Puterman
Appium Overview - by Daniel PutermanAppium Overview - by Daniel Puterman
Appium Overview - by Daniel Puterman
 
UIAutomation_Testing
UIAutomation_TestingUIAutomation_Testing
UIAutomation_Testing
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10
 
Selenium Camp 2016 - Kiev, Ukraine
Selenium Camp 2016 -  Kiev, UkraineSelenium Camp 2016 -  Kiev, Ukraine
Selenium Camp 2016 - Kiev, Ukraine
 
Selenium in the palm of your hand: Appium and automated mobile testing
Selenium in the palm of your hand: Appium and automated mobile testingSelenium in the palm of your hand: Appium and automated mobile testing
Selenium in the palm of your hand: Appium and automated mobile testing
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Learning's from mobile testing
Learning's from mobile testingLearning's from mobile testing
Learning's from mobile testing
 
XCUITest for iOS App Testing and how to test with Xcode
XCUITest for iOS App Testing and how to test with XcodeXCUITest for iOS App Testing and how to test with Xcode
XCUITest for iOS App Testing and how to test with Xcode
 

Mehr von mobiletestsummit

Setting Apple's UI Automation Free with Appium
Setting Apple's UI Automation Free with AppiumSetting Apple's UI Automation Free with Appium
Setting Apple's UI Automation Free with Appiummobiletestsummit
 
iOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and TricksiOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and Tricksmobiletestsummit
 
Cross-Platform Testing with Frank
Cross-Platform Testing with Frank Cross-Platform Testing with Frank
Cross-Platform Testing with Frank mobiletestsummit
 
Calabash-Driver Lightning Talk by Dominik Dary
Calabash-Driver Lightning Talk by Dominik DaryCalabash-Driver Lightning Talk by Dominik Dary
Calabash-Driver Lightning Talk by Dominik Darymobiletestsummit
 

Mehr von mobiletestsummit (6)

Setting Apple's UI Automation Free with Appium
Setting Apple's UI Automation Free with AppiumSetting Apple's UI Automation Free with Appium
Setting Apple's UI Automation Free with Appium
 
Sikuli for Mobile Testing
Sikuli for Mobile TestingSikuli for Mobile Testing
Sikuli for Mobile Testing
 
Automating Firefox OS
Automating Firefox OSAutomating Firefox OS
Automating Firefox OS
 
iOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and TricksiOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and Tricks
 
Cross-Platform Testing with Frank
Cross-Platform Testing with Frank Cross-Platform Testing with Frank
Cross-Platform Testing with Frank
 
Calabash-Driver Lightning Talk by Dominik Dary
Calabash-Driver Lightning Talk by Dominik DaryCalabash-Driver Lightning Talk by Dominik Dary
Calabash-Driver Lightning Talk by Dominik Dary
 

MOET: Mobile End-to-End Testing

  • 1. MOET https://github.com/eing/moet Mobile End-to-End Testing Mobile Exploratory Testing Eing Ong Intuit, Inc. @eingong|eing.ong@intuit.com 1 1
  • 2. Mobile'automation'technologies1 •  Two categories •  Instrumented technique •  Non-instrumented technique •  What is instrumentation? •  Tests are compiled with the app •  Tests are installed & launched with the app •  Source code is required and may need to be modified •  Only one app can be executed at a time •  White box approach 2
  • 3. Advantages'of'both'techniques1 Non$instrumentation- Instrumentation- •  Device'platform'agnostic1 •  Elements'can'be'accessed1 •  Test'code'reuse1 •  Debugging'ease1 •  Test'language'&'test'harness' •  Test'verification'ease1 autonomy1 •  Reduce'tools'dependencies1 •  Support'for1 •  Support'for1 Multi>applications'testing1 Installing'application1 Custom'composite'UI'elements1 Launching'application1 Database/server'API'assertions1 Cleanup'(kill'application)1 Use'of'external'libraries1 Test'execution'on'device1 '(e.g.'hardware/image'libraries)1 Code'coverage1 3
  • 4. Which'technique'should'I'use'?1 Non-instrumentation Instrumentation External3 interaction- Hardware3 Text$based3 interaction- features- Image3based3 features- 4
  • 5. Mobile'automation'tools1 Mobile3- Non$ Instrumentation- OS- instrumentation- Android1 eggPlant,'Sikuli,'MOET,' Robotium,'Calabash,' MonkeyRunner1 MonkeyTalk1 iOS1 eggPlant,'Sikuli,'MOET1 UIAutomation,'KIF,' iCuke,'Frank,'UISpec,' Zucchini,'Bwoken,' Calabash,'MonkeyTalk,' Applecart,'iOS>driver1 5
  • 6. MOET1 Test •  Think design Login(“user1”,”passwd1”) o  Interfaces o  Creational pattern iPhone implementation touch(100,100) •  Think reuse enter(username) touch(100,200) o  Device independent tests enter(password) •  Think One touch(150, 300) o  IDE o  Test harness and language iPhone Sikuli library void enter() void touch(x,y) 6
  • 7. Anatomy'of''MOET1 Mobile3Application3Interface- Device3Independent3Tests- Runtime binding Simulator/Device libraries Android3application3 iPhone3application3 implementation- implementation- Android3MonkeyRunner3 iPhone3Sikuli3Library- Library- 7
  • 8. Top Ten Wish List a.k.a. Mobile test automation Wall of Pain 8 8
  • 9. Android'Wall'of'Pain1 10.  There’s more to test execution o  Command with report file generation : adb shell am instrument -w -e reportFile junit-report.xml com.intuit.test/com.zutubi.android.junitreport.JUnitReportTestRunner o  Date-time fix if using device snapshots : adb shell date -s `date +"%Y%m%d.%H%M%S”` 9.  Where are the test results ? o  Pulling results from device : adb pull /data/data/com.intuit.test/files/junit-report.xml junit- report.xml 9
  • 10. Android'Wall'of'Pain1 10.  There’s more to test execution o  Command with report file generation : adb shell am instrument -w -e reportFile junit-report.xml com.intuit.test/com.zutubi.android.junitreport.JUnitReportTestRunner o  Date-time fix if using device snapshots : adb shell date -s `date +"%Y%m%d.%H%M%S”` 9.  Where are the test results ? o  Pulling results from device : adb pull /data/data/com.intuit.test/files/junit-report.xml junit- report.xml 10
  • 11. iOS'Wall'of'Pain1 8.  iOS simulator…the singleton pattern o  Multiple instances of simulator o  Headless execution 7.  What test harness ? o  Test grouping, test assertions, base test class o  Results needs to be displayable in browser 6.  How about a CI plugin o  Test execution o  Code coverage 11
  • 12. iOS'Wall'of'Pain1 8.  iOS simulator…the singleton pattern o  Multiple instances of simulator o  Headless execution 7.  What test harness ? o  Test grouping, test assertions, base test class o  Results needs to be displayable in browser 6.  How about a CI plugin o  Test execution o  Code coverage 12
  • 13. iOS'Wall'of'Pain1 8.  iOS simulator…the singleton pattern o  Headless execution o  Multiple instances of simulator 7.  What test harness ? o  Test grouping, test assertions, base test class o  Results needs to be displayable in browser 6.  How about a CI plugin o  Test execution o  Test results o  Code coverage 13
  • 14. iOS'Wall'of'Pain1 5.  Where’s the IDE plugin ? o  Code formatting o  API completion o  Breakpoints, debugger o  “javadoc” help o  One click test execution of test method/testsuite 14
  • 15. All'mobile'platforms1 4.  Problem ? Search ? o  Blogs, stackoverflow, developer groups for devices, etc. o  Mobile testing one-stop tips & tricks (not questions) o  Community driven effort Tip – Remove authorization prompt Administrative rights Update /etc/authorization <key>system.privilege.taskport</key> <dict> <key>allow-root</key> <!-- previous value <false/> --> <true/> Tip – Clean cache, preferences, SQLite ~/Library/Application Support/iPhone Simulator/{SDK}/Applications/<uuid> Library: Preferences, Caches Documents: sqlite3 <app>.sqlitedb 15
  • 16. All'mobile'platforms1 3.  How about a mobile test report ? o  Mobile test report standard e.g. mobile-test-report.xml •  Screenshots and video recording of failed tests •  Device logs •  Device detection 2.  Wireless? o  OTA app installation o  Testing via wifi and carrier networks o  Selenium grid-like test infrastructure 16
  • 17. All'mobile'platforms1 3.  How about a mobile test report? o  Mobile test report standard e.g. mobile-test-report.xml •  Screenshots and video recording of failed tests •  Device logs •  Device detection 2.  Mobile testing is anything but mobile o  OTA app installation and execution o  Testing via wifi and carrier networks o  Test tool independent component o  Selenium grid-like test infrastructure 17
  • 18. All'mobile'platforms1 1.  Yet another proprietary language? o  Open sourced test harness & language for •  Instrumented tests •  Non-instrumented tests •  Hybrid apps tests 18
  • 19. Next'steps1 Eclipse mobile Test Test Test Continuous testing plugin development execution reporting integration Mobile3Application3Interface- Device3Independent3Tests- Runtime binding Simulator/Device libraries Non$instrumented3 Instrumented3application3 application3implementation- implementation- Monkey$ Sikuli- ?Android?- ?iOS?3- Runner- 19