Top Banner
Thursday, November 1, 12
60
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: Cross-Platform Testing with Frank

Thursday, November 1, 12

Page 2: Cross-Platform Testing with Frank

Hi, I’mPete Hodgson

Thursday, November 1, 12

Page 3: Cross-Platform Testing with Frank

Thursday, November 1, 12

Page 4: Cross-Platform Testing with Frank

We’reHiring

Thursday, November 1, 12

Page 5: Cross-Platform Testing with Frank

Thursday, November 1, 12

Page 6: Cross-Platform Testing with Frank

two-minute tour of Frank

Thursday, November 1, 12

Page 7: Cross-Platform Testing with Frank

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

Page 9: Cross-Platform Testing with Frank

lots more to tell you, but

not right now

Thursday, November 1, 12

Page 10: Cross-Platform Testing with Frank

or come talk to me to find out more

about Frank

testingwithfrank.com

Thursday, November 1, 12

Page 11: Cross-Platform Testing with Frank

Cross-platform testing

for mobile

Thursday, November 1, 12

Page 12: Cross-Platform Testing with Frank

Phone

Thursday, November 1, 12

Page 13: Cross-Platform Testing with Frank

Test Scripts

Phone

Thursday, November 1, 12

Page 14: Cross-Platform Testing with Frank

Test Scripts

PhoneAutomationDriver

Thursday, November 1, 12

Page 15: Cross-Platform Testing with Frank

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

Page 16: Cross-Platform Testing with Frank

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

Page 17: Cross-Platform Testing with Frank

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

Page 18: Cross-Platform Testing with Frank

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

Page 19: Cross-Platform Testing with Frank

Test Scripts

PhoneAutomationDriver

Thursday, November 1, 12

Page 20: Cross-Platform Testing with Frank

thePage Object

Pattern

Thursday, November 1, 12

Page 21: Cross-Platform Testing with Frank

Test Scripts

PhoneAutomationDriver

Thursday, November 1, 12

Page 22: Cross-Platform Testing with Frank

Test Scripts

PhoneAutomationDriver

PageObjects

Thursday, November 1, 12

Page 23: Cross-Platform Testing with Frank

Test Scripts

PhoneAutomationDriver

PageObjects

Thursday, November 1, 12

Page 24: Cross-Platform Testing with Frank

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

Page 25: Cross-Platform Testing with Frank

Test Scripts

PhoneAutomationDriver

PageObjects

...

...

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

...

...

Thursday, November 1, 12

Page 26: Cross-Platform Testing with Frank

PhoneAutomationDriver

PageObjects

User Tech

Test Scripts

Thursday, November 1, 12

Page 27: Cross-Platform Testing with Frank

Cross-platform testing

for mobile

Thursday, November 1, 12

Page 28: Cross-Platform Testing with Frank

Cross-platform testing

for mobile

Thursday, November 1, 12

Page 29: Cross-Platform Testing with Frank

Cross-platform testing

for mobile

Thursday, November 1, 12

Page 30: Cross-Platform Testing with Frank

PhoneAutomationDriver

PageObjects

Test Scripts

Thursday, November 1, 12

Page 31: Cross-Platform Testing with Frank

PhoneAutomationDriver

PageObjects

Test Scripts

Thursday, November 1, 12

Page 32: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 33: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 34: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 35: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

Web-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 36: Cross-Platform Testing with Frank

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

Page 37: Cross-Platform Testing with Frank

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

Page 38: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 39: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

iPad-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 40: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

iPad-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 41: Cross-Platform Testing with Frank

iPhone-specific ‘stuff’

iPad-specific ‘stuff’

Test Scripts

Thursday, November 1, 12

Page 42: Cross-Platform Testing with Frank

User TechThursday, November 1, 12

Page 43: Cross-Platform Testing with Frank

User PlatformThursday, November 1, 12

Page 44: Cross-Platform Testing with Frank

Thursday, November 1, 12

Page 45: Cross-Platform Testing with Frank

UIAutomationApple’s

Thursday, November 1, 12

Page 46: Cross-Platform Testing with Frank

PublicAutomation

Thursday, November 1, 12

Page 47: Cross-Platform Testing with Frank

Bwoken

Zucchini

tuneup.js

UISpec

NativeDriver

KIF

Calabash

Frank

alternatives to stock UIAutomation

Thursday, November 1, 12

Page 48: Cross-Platform Testing with Frank

extendUIAutomation

Bwoken

Zucchini

tuneup.js

UISpec

NativeDriver

KIF

Calabash

Frank

Thursday, November 1, 12

Page 49: Cross-Platform Testing with Frank

replaceUIAutomation

Bwoken

Zucchini

tuneup.js

UISpec

NativeDriver

KIF

Calabash

Frank

Thursday, November 1, 12

Page 50: Cross-Platform Testing with Frank

a third way:PublicAutomation

Thursday, November 1, 12

Page 51: Cross-Platform Testing with Frank

exposes Apple’s own

low-level UIAutomation private framework

PublicAutomation

Thursday, November 1, 12

Page 52: Cross-Platform Testing with Frank

provides the power of

Apple’s touch synthesis implementation

PublicAutomation

Thursday, November 1, 12

Page 53: Cross-Platform Testing with Frank

gives the freedom to build better integration

and tooling on top

PublicAutomation

Thursday, November 1, 12

Page 54: Cross-Platform Testing with Frank

has been Frank’s touch

synthesis library since 1.0

(replacing KIF)

PublicAutomation

Thursday, November 1, 12

Page 55: Cross-Platform Testing with Frank

open source and up on

github

bit.ly/publicautomation

PublicAutomation

Thursday, November 1, 12

Page 56: Cross-Platform Testing with Frank

Thanks!

Thursday, November 1, 12

Page 57: Cross-Platform Testing with Frank

Thanks!Pete Hodgson

@ph1

blog.thepete.net

[email protected]

Thursday, November 1, 12

Page 58: Cross-Platform Testing with Frank

Thursday, November 1, 12

Page 59: Cross-Platform Testing with Frank

onemore

thing...

Thursday, November 1, 12

Page 60: Cross-Platform Testing with Frank

Thursday, November 1, 12