cross-platform testing with frank

60
Thursday, November 1, 12

Upload: mobiletestsummit

Post on 01-Nov-2014

1.027 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Thursday, November 1, 12

Hi, I’mPete Hodgson

Thursday, November 1, 12

Thursday, November 1, 12

We’reHiring

Thursday, November 1, 12

Thursday, November 1, 12

two-minute tour of Frank

Thursday, November 1, 12

two-minute tour of Frank

UI automation tool for native iOS apps - “WebDriver for iOS”Write your tests using the language and tooling you want

integrate with CI

powerful view-selection facilities

explore a running app with symbiote

Thursday, November 1, 12

lots more to tell you, but

not right now

Thursday, November 1, 12

or come talk to me to find out more

about Frank

testingwithfrank.com

Thursday, November 1, 12

Cross-platform testing

for mobile

Thursday, November 1, 12

Phone

Thursday, November 1, 12

Test Scripts

Phone

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

... ...

type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )

... ...

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

... ...

type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )

... ...

Hard to Read!

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

... ...

type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )

... ...

Fragile!

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

... ...

type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” )

... ...

No

Abstractions

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

Thursday, November 1, 12

thePage Object

Pattern

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

PageObjects

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

PageObjects

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

PageObjects

class HomeScreen

def login(user,pass) type_into_text_field( ‘username’, user ) type_into_text_field( ‘password’, pass ) touch “button marked:‘Login’” end

def verify_logged_in_as(user) wait_for_element_to_exist( “loginBanner marked:‘Welcome #{user}’” ) end

end

Thursday, November 1, 12

Test Scripts

PhoneAutomationDriver

PageObjects

...

...

home_screen.login( ‘pete’, ‘sekrit’ )home_screen.verify_logged_in_as( ‘pete’ )

...

...

Thursday, November 1, 12

PhoneAutomationDriver

PageObjects

User Tech

Test Scripts

Thursday, November 1, 12

Cross-platform testing

for mobile

Thursday, November 1, 12

Cross-platform testing

for mobile

Thursday, November 1, 12

Cross-platform testing

for mobile

Thursday, November 1, 12

PhoneAutomationDriver

PageObjects

Test Scripts

Thursday, November 1, 12

PhoneAutomationDriver

PageObjects

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

Web-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

Web-specific ‘stuff’

Test Scripts class HomeScreen

def login(user,pass) # WEBDRIVER STUFF GOES HERE end

def verify_logged_in_as(user) # MORE WEBDRIVER STUFF end

end

Thursday, November 1, 12

iPhone-specific ‘stuff’

Web-specific ‘stuff’

Test Scripts class HomeScreen

def login(user,pass) # WEBDRIVER STUFF GOES HERE end

def verify_logged_in_as(user) # MORE WEBDRIVER STUFF end

end

sameinterface

Thursday, November 1, 12

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

iPad-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

iPad-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

iPhone-specific ‘stuff’

iPad-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

User TechThursday, November 1, 12

User PlatformThursday, November 1, 12

Thursday, November 1, 12

UIAutomationApple’s

Thursday, November 1, 12

PublicAutomation

Thursday, November 1, 12

Bwoken

Zucchini

tuneup.js

UISpec

NativeDriver

KIF

Calabash

Frank

alternatives to stock UIAutomation

Thursday, November 1, 12

extendUIAutomation

Bwoken

Zucchini

tuneup.js

UISpec

NativeDriver

KIF

Calabash

Frank

Thursday, November 1, 12

replaceUIAutomation

Bwoken

Zucchini

tuneup.js

UISpec

NativeDriver

KIF

Calabash

Frank

Thursday, November 1, 12

a third way:PublicAutomation

Thursday, November 1, 12

exposes Apple’s own

low-level UIAutomation private framework

PublicAutomation

Thursday, November 1, 12

provides the power of

Apple’s touch synthesis implementation

PublicAutomation

Thursday, November 1, 12

gives the freedom to build better integration

and tooling on top

PublicAutomation

Thursday, November 1, 12

has been Frank’s touch

synthesis library since 1.0

(replacing KIF)

PublicAutomation

Thursday, November 1, 12

open source and up on

github

bit.ly/publicautomation

PublicAutomation

Thursday, November 1, 12

Thanks!

Thursday, November 1, 12

Thanks!Pete Hodgson

@ph1

blog.thepete.net

[email protected]

Thursday, November 1, 12

Thursday, November 1, 12

onemore

thing...

Thursday, November 1, 12

Thursday, November 1, 12