Top Banner
We make mobile developers’ lives easier. Ville-Veikko Helppi Technical Product Manager [email protected] +358400949001 16 April 2015
48

LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Jul 16, 2015

Download

Technology

Bitbar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

We make mobile developers’ lives easier.

Ville-Veikko Helppi Technical Product Manager

[email protected] +358400949001

16 April 2015

Page 2: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

TESTDROID AND SOME STATISTICS

Page 3: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Public Device Cloud on-demand devices

(multitenant)

Mobile app testing on thousands of real

Android and iOS devices hosted by

Bitbar

Private Device Cloud Reserved Devices

Hosted by Bitbar in the US and/or Europe

Devices chosen by

and reserved only for the Customer

On-Premise Device Cloud

Automated mobile app testing devices

hosted by the customer, usually

30-500 devices

1 Product – 3 Deployment Options

Testdroid Cloud Testdroid Enterprise Testdroid PrivateCloud

Page 4: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Q1'2015 – Test Run Stats

Page 5: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Why Apps Fail?

Page 6: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

iOS 8.0

iOS 8.0.2

iOS 8.1

iOS 8.1.1

iOS 8.2

iOS 8 ALL KitKat 4.4

KitKat 4.4.2

KitKat 4.4.3

KitKat 4.4.4 KitKat ALL Lollipop 5.0

Lollipop 5.0.1

Lollipop 5.0.2

Lollipop ALL

0 5 10 15 20 25 30 35 Failed test runs. Percentage (%).

Page 7: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Some Observations 1

2

Page 8: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Some Observations 3

4

Page 9: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Some Observations 5

6

Page 10: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Android Fragmentation 2014

by Open Signal report July 2014

Page 11: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

How Many Devices is Enough?

~90% market coverage can

be achieved with

128 devices

~20% market coverage can

be achieved with

12 devices

US Market

25 Android devices

= ~2/3 market

Global Market

60 Android devices = ~1/2 market

Page 12: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

MOBILE TEST AUTOMATION

Page 13: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

OS versions

Chipsets CPU + GPU

Tens of OEMs

Memory Displays

(resolutions, physical hw)

OEM mods

Other hardware (connectivitycalibration)

Relation to other software

Where Test Automation Can Help

Page 14: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Correct behaviour across platforms and browsers Integration with web back-ends

Typically need to fully utilize HW (CPU+GPU) Resource (e.g. battery) consumption OpenGL ES 2/3

Functionality and usability

Screen

orientations, connectivity, user profiles

Robustness

Robustness and security!

Brand

Compliances,

verification with back-ends and data

Different Mobile 'App Verticals'

Page 15: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Manual Testing is not Agile

Page 16: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Test Automation is Agile

Page 17: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Why Real Devices Are Must-to-Have •  Emulators cannot help you to test...

•  User Experience •  Usability •  Hardware •  Software •  Infrastructure

0 % = the percentage of your app users that use emulator to run your app!

Page 18: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Manual vs. Automation Manual Automation

Page 19: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Manual vs. Automation

Smaller coverage, More money burnt & time wasted, Error-prone

Manual Automation Large

coverage, quickly

completed, Less money & time wasted, Exact results.

Page 20: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Different Ways to Automate Testing Automatic test exercisers Record and Playback Hand written test scripts

Benefits: Accurate, specific to your testing needs, plenty of options with frameworks, tools

Fast to create, accurate, not as sensitive to human-errors as hand-written tests, tools avail’ty

Fastest & extremely automated, excellent for smoke testing/quick testing, availability

Tradeoffs: Takes a lot of time, ties resources to write test cases/scripts, error-prone (humans)

Compelling Recorder+Playback tools available for only few test automation frameworks

Not accurate as real test cases

Page 21: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Categorizing the Testing •  Functionality of the "game-play", features Functional Testing •  Done always when new features /

regressions are included Regression Testing

•  How game runs on different configurations Compatibility Testing

•  Different languages, geo-focused materials Localization Testing •  Endurance test to determine if system can

handle the load Soak Testing

•  Measures the capacity of the system Stress Testing •  Simplest form of performance testing,

measures how system handles loads Load Testing •  Isolation of the environment (e.g. from

network) to see how game works Hermetic Testing

Feature-based testing

Performance testing

End-user testing

Page 22: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

TEST AUTOMATION FRAMEWORKS

Page 23: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Family Tree of Android Test Automation Frameworks

JUnit

Android Instrumentation Framework

Robotium Espresso and Espresso v2

uiautomator

Appium

ExtSolo

Calabash

Page 24: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

What Framework Works You The Best? Robotium uiautomator Espresso Appium Calabash

Android Yes Yes Yes Yes Yes

iOS No No No Yes Yes

Mobile web Yes (Android)

Limited to x.y clicks

No Yes (Android &

iOS)

Yes (Android)

Scripting Language

Java Java Java Almost any Ruby

Test creation tools

Testdroid Recorder

UI Automator viewer

Hierarchy Viewer

Appium.app CLI

Supported API levels

All 16 => 8, 10, 15- All All

Community Contributors Google Google Active Pretty quiet

Page 25: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Appium at Testdroid Cloud

Test Script

Test Case

Desired Capabilities

{ “device”: “Android”, “app”: “/Users/user/ApiDemos.apk” “app-package”: “com.example.android.apis” “app-activity”: “.ApiDemos” }

Page 26: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Test Script

Test Case

Desired Capabilities

WebDriver http://localhost:4723/wd/hub

Appium Server

4723

Device

Localhost

(DesiredCaps)

Page 27: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

http://localhost:4723/wd/hub

*Testdroid Caps

http://appium.testdroid.com/wd/hub

(DesiredCaps)

Test Script

Test Case

Desired Capabilities

WebDriver

From Localhost to Testdroid

Page 28: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Execution Go to

cloud.testdroid.com

Page 29: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Execution Get a

Device Name Go to

cloud.testdroid.com

Page 30: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Execution Add Testdroid Desired

Caps to test script

{ “testdroid_username”: “[email protected]”, “testdroid_password”: “p4s$w0rd”, “testdroid_project”: “My First Project”, “testdroid_testrun”: “Test 1”, “testdroid_device”: “iPad Mini 7.0.4 A1432”, “testdroid_app”: “http://domain.com/app_v1.ipa” . . “app”: “com.bitbar.testdroid.BitbarIOSSample” }

Get a Device Name

Go to cloud.testdroid.com

Page 31: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Execution

driver = webdriver.Remote("http://appium.testdroid.com/wd/hub", desired_caps);

Point the Webdriver to http://appium.testdroid.com/wd/hub

Add Testdroid Desired Caps to test script

Get a Device Name

Go to cloud.testdroid.com

Page 32: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Execution

Run the Test Script Get Results from Testdroid Cloud

Point the Webdriver to http://appium.testdroid.com/wd/hub

Add Testdroid Desired Caps to test script

Get a Device Name

Go to cloud.testdroid.com

Page 33: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Client Side Execution

Pull the Results from the Result URL

driver = webdriver.Remote("http://appium.testdroid.com/wd/hub", desired_caps);

Run the Test Script Get Results from Testdroid Cloud

Point the Webdriver to http://appium.testdroid.com/wd/hub

Add Testdroid Desired Caps to test script

Get a Device Name

Go to cloud.testdroid.com

Page 34: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Multiple Devices – Client Side python testscript.py –device <devicename> 1

python testscript.py –device <devicename> 2

python testscript.py –device <devicename> n

Test Script

Test Cases

Instigator Script

deviceArray= [ “iPad 4 6.0.1 A1458”, “iPad mini 7.0.4 A1432”, . . . “iPhone 4S 6.1.3 A1387”, ]

Page 35: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

2 1

3

4

5

6

7

WebDriver Session Request @http://appium.testdroid.com/wd/hub

WebDriver Session Response

Testrun

Configure Project

Appium Ready

Wait for Device to Become Available

Device 1 Device 2 Device 3

Session Map

Proxy Device Cluster

Start Appium

Desired Capabilities, .apk / .ipa

SessionID

SessionID

Sessionid

Test Script

Appium Broker

Client Side – Behind the Scenes

Page 36: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Introducing "Server Side Appium"

Page 37: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Demonstration Appium with Real Devices using Image

Recognition for Hill Climb Racing

Page 38: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Setup •  Using real Android devices at Testdroid Cloud •  Parallel test runs without a need to configure desired

capabilities •  Device groups (= set of devices used for runs) can be

manually created and configured

Page 39: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

File Structure •  pom.xml (maven) •  testdroid.properties (overwritten after submitted to Cloud) •  run-test.sh (shell script for execution) •  image files

Page 40: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Page 41: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Page 42: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Page 43: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Page 44: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

15 seconds

Page 45: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Page 46: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Image Recognition •  Resolution agnostic implementation •  Identifies stretched and rotated images as well

Page 47: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

Let's See How it Works!

Page 48: LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)

THANK YOU!

More information about frameworks, devices and testing at www.testdroid.com