MOET: Mobile End-to-End Testing

1,688
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,688
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

MOET: Mobile End-to-End Testing

  1. 1. MOET https://github.com/eing/moet Mobile End-to-End Testing Mobile Exploratory Testing Eing Ong Intuit, Inc. @eingong|eing.ong@intuit.com1 1
  2. 2. Mobileautomationtechnologies1•  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. 3. Advantagesofbothtechniques1Non$instrumentation- Instrumentation-•  Deviceplatformagnostic1 •  Elementscanbeaccessed1•  Testcodereuse1 •  Debuggingease1•  Testlanguage&testharness •  Testverificationease1 autonomy1 •  Reducetoolsdependencies1•  Supportfor1 •  Supportfor1 Multi>applicationstesting1 Installingapplication1 CustomcompositeUIelements1 Launchingapplication1 Database/serverAPIassertions1 Cleanup(killapplication)1 Useofexternallibraries1 Testexecutionondevice1 (e.g.hardware/imagelibraries)1 Codecoverage1 3
  4. 4. WhichtechniqueshouldIuse?1 Non-instrumentation Instrumentation External3 interaction- Hardware3 Text$based3 interaction- features- Image3based3 features- 4
  5. 5. Mobileautomationtools1 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. 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. 7. AnatomyofMOET1 Mobile3Application3Interface- Device3Independent3Tests- Runtime binding Simulator/Device libraries Android3application3 iPhone3application3 implementation- implementation- Android3MonkeyRunner3 iPhone3Sikuli3Library- Library- 7
  8. 8. Top Ten Wish List a.k.a. Mobile test automation Wall of Pain8 8
  9. 9. AndroidWallofPain110.  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. 10. AndroidWallofPain110.  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. 11. iOSWallofPain18.  iOS simulator…the singleton pattern o  Multiple instances of simulator o  Headless execution7.  What test harness ? o  Test grouping, test assertions, base test class o  Results needs to be displayable in browser6.  How about a CI plugin o  Test execution o  Code coverage 11
  12. 12. iOSWallofPain18.  iOS simulator…the singleton pattern o  Multiple instances of simulator o  Headless execution7.  What test harness ? o  Test grouping, test assertions, base test class o  Results needs to be displayable in browser6.  How about a CI plugin o  Test execution o  Code coverage 12
  13. 13. iOSWallofPain18.  iOS simulator…the singleton pattern o  Headless execution o  Multiple instances of simulator7.  What test harness ? o  Test grouping, test assertions, base test class o  Results needs to be displayable in browser6.  How about a CI plugin o  Test execution o  Test results o  Code coverage 13
  14. 14. iOSWallofPain15.  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. 15. Allmobileplatforms14.  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. 16. Allmobileplatforms13.  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 detection2.  Wireless? o  OTA app installation o  Testing via wifi and carrier networks o  Selenium grid-like test infrastructure 16
  17. 17. Allmobileplatforms13.  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 detection2.  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. 18. Allmobileplatforms11.  Yet another proprietary language? o  Open sourced test harness & language for •  Instrumented tests •  Non-instrumented tests •  Hybrid apps tests 18
  19. 19. Nextsteps1Eclipse mobile Test Test Test Continuoustesting plugin development execution reporting integration Mobile3Application3Interface- Device3Independent3Tests- Runtime binding Simulator/Device libraries Non$instrumented3 Instrumented3application3 application3implementation- implementation- Monkey$ Sikuli- ?Android?- ?iOS?3- Runner- 19
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×