2. What I’ll be covering
What are automated UI tests and why should you
care?
How to test mobile web apps
How to test native Android apps
Common automation test pitfalls
How to pick a test framework
The future and how to test native iOS apps
Operation Mobile
3. The difference between unit and automation
tests
Performing actions on a user
interface (UI)
Automated UI tests are done at
a higher level than unit tests
Operation Mobile
5. We will be automating UI tests for a calculator
1. Can add two numbers together
Given the user enters 1 and 2
When the user touches calculate
Then the total should be 3
2. Can clear the screen
Given the user enters 1 and 2
When the user touches clear
Then the first number should be blank
And the second number should be blank
And the total should be 0
Operation Mobile
6. Why do automated UI testing for mobile apps?
Design and marketing will get you users
But if an app doesn’t function properly
Users might give one star ratings and won’t
recommend it
Operation Mobile
7. Each new function = something else to test
iCalc v1 iCalc v2 iCalc v3 iCalc v4
Add Add Add Add
Clear Clear Clear Clear
Subtract Subtract Subtract
Multiply Multiply
Divide
Operation Mobile
8. Each new view = somewhere else to test
Operation Mobile
9. Will you really remember to test everything?
Because you decide to go on holiday for a
while... around the world
You developed another app
You’re human
Operation MOBILE
10. But I never changed that bit...
Forgot that something else also used that
code
Made an accidental typo because you’re
human
Operation Mobile
11. What about if you work in a team?
Do you know how to test what each other
have done?
Operation Mobile
12. Automated UI tests can run on multiple devices
Run the same tests for tablet and phone
using simulator saving you time
Run different tests for tablet and phone
using simulator saving you time and
remembering what to test on what device
Operation Mobile
13. Automated UI tests can target SDKs
Run tests for older version for backwards
compatibility saving you time
Run tests on newer versions to give you a
heads up
Operation Mobile
14. Automated UI tests vs. QA
Never be as good as having a (good) QA
But will be cheaper
And faster
Operation Mobile
15. On the subject of cost automated UI testing is...
Every framework I’ll be showing you is open
source
Operation Mobile
16. Automating UI tests for Web Apps
Selenium - http://seleniumhq.org/
Operation Mobile
17. How Selenium works
Install and run iWebDriver application
onto the device. This runs a webserver
which listens for commands...
which you send from your computer.
Similar to using a remote control.
Operation Mobile
18. Automated UI tests for web apps using Selenium
Watch this video on YouTube - http://youtu.be/51E3FWMKkig
Operation Mobile
19. Same for Android
Follow the instructions here:
http://code.google.com/p/selenium/wiki/AndroidDriver
Install an APK instead of an APP
Set up port forwarding
Operation Mobile
20. Automated UI tests for native Android apps
The good news is...
A UI Automation test framework already
comes with the Android SDK
But we are not going to use it (directly
anyway) because...
Operation Mobile
21. Robotium is the best way to test Android Apps
Robotium http://code.google.com/p/robotium/
Uses the Android test framework and solves
a very important issue...
Operation Mobile
22. Can deal with tests running faster than UI threads
Your UI test can perform actions faster than
you can but...
that means it will expect something to
happen faster the UI finishes its task
Robotium is clever enough to wait for things
to happen – no sleeps required!
Operation Mobile
23. Why use Robotium instead of standard SDK
Robotium uses Solo, which allows to
simulate gestures
Active community to help if you get stuck
Gets updated more often than Android SDK
Operation Mobile
24. Automating Android native apps using Robotium
Watch this video on YouTube - http://youtu.be/XsNxZn7f7Xc
Operation Mobile
25. Common pitfalls of automated UI testing
Too many unnecessary tests that don’t
add value e.g. testing the SDK
Fragile tests use position
index, hierarchy in layout etc.
Too many changes in one go
Over reliance on one person – he’s the
<insert role> guy
Operation Mobile
26. How to pick the right framework
Get your hands dirty and try it out
Good learning resources
Good community support
Does it have ‘most’ of the functionality
you require?
Operation Mobile
27. The future...
So far all tests you’ve seen look like
they’ve been written by developers...
but we’re testing at a higher level than
unit tests...
because we’re testing behaviour (BDD)
So why can’t our tests be written in
English?
Operation Mobile
28. Calculator tests in English
Scenario: Can add two numbers together
When I type "1" into "firstNumber“
And I type "2" into "secondNumber"
And I touch the "Calculate" button
Then the total should be 3
Scenario: Can clear all fields
When I type "1" into "firstNumber"
And I type "2" into "secondNumber"
And I touch the "Clear" button
Then the total should be 0
And the "firstNumber" should be empty
And the "secondNumber" should be empty
Operation Mobile
29. Frank + Cucumber + UISpec makes this possible
Frank - https://github.com/moredip/Frank
(By Universal Studios (Frankenstein promotional photo) [Public domain], via Wikimedia Commons)
Uses Cucumber and UISpec to run
scenarios as automated UI tests
Cucumber uses Ruby to convert text into code
But lots of built in steps for you to use
e.g. When I touch <UI Element>
Operation Mobile
30. Automated UI tests for iOS native apps with Frank
Watch this video on YouTube - http://youtu.be/tvv7kbvNb-8
Operation Mobile
31. Why automate UI tests using scenarios?
Perfect match for storyboards (new in
iOS 5)
And because they can be converted in
into Objective C, Java etc...
The same scenario could be used test
the same app on iOS, Android, Windows,
Balckberry etc.
Operation Mobile
32. To conclude…
Get your hands dirty and try it out
Operation Mobile