SlideShare a Scribd company logo
1 of 59
Download to read offline
T16
Concurrent Class
10/3/2013 1:30:00 PM

"Automate Mobile App TestingOr Go Crazy"
Presented by:
Stu Stern
Gorilla Logic

Brought to you by:

340 Corporate Way, Suite 300, Orange Park, FL 32073
888-268-8770 ∙ 904-278-0524 ∙ sqeinfo@sqe.com ∙ www.sqe.com
Stewart Stern
Gorilla Logic, Inc.
Stu Stern is CEO of Gorilla Logic, an enterprise IT consulting firm specializing in web and
mobile development, and the creators of several automation tools including FlexMonkey,
FoneMonkey, and MonkeyTalk. Prior to founding Gorilla Logic in 2002, Stu was head of Java
consulting at Sun Microsystems. Even further back, Stu spent many years building trading
systems on Wall Street. Although a long-time senior IT executive, after thirty years in the
industry Stu is proud to still be very much a geek
AUTOMATE MOBILE APP TESTING
(OR GO INSANE)
THE TOOL, THE STANDARD, THE CLOUD


STU STU STERN, CEOGORILLA LOGIC INC.
STERN, CEO, OF GORILLA LOGIC,
WELCOME TO GORILLA LOGIC
WE’RE TWO COMPANIES IN ONE

•  Enterprise Services

-  Mobile and Web App Development
-  Front-end and Back-end
-  Project outsourcing and talent acquisition

•  Testing Tools

-  MonkeyTalk
-  CloudMonkey
-  Support, training, quick start services

•  Founded in 2002 by ex-Sun execs
•  100 employees
•  Based in Boulder with offices in New York, Bangalore, and
Costa Rica
2
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
BROWSERS WERE BAD (FF, IE, SAFARI, …)
BUT MOBILE IS WORSE!

• 
• 
• 
• 

Android 2.x, 3.x, 4.x
iOS 4.x, 5.x, 6.x
Huge range of physical screen resolutions and pixel densities
Runtime differences among various device brands and
models

3
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
AN INSANE NUMBER OF TESTING TARGETS!
1.  Functional – Does the app work according to spec?
-  Verify on virtual device of each platform (2)

2.  OS compatibility – Does the app work on each OS version
-  Verify on virtual device of each version (6 - 12)

3.  Display compatibility
-  Verify on virtual device at each resolution (6 - 12)

•  Device compatibility
-  Run on each major make and model (dozens – hundreds)

Literally hundreds of possible configurations!

4
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
AUTOMATION MIGHT HELP ;)
•  MonkeyTalk is free and open source
•  Powerful script recording
-  But scripts can also be created or edited with any text editor

•  Simple script commands
•  Provides complete automation solution
- 
- 
- 
- 
- 

Android 2.2+, iOS 3.x+, Mobile Web
Full-featured Integrated Development Environment
Interactive script creation and execution
Command line script runner
Continuous Integration friendly

5
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
AGENDA

(ASPIRATIONAL)

• 
• 
• 
• 
• 
• 
• 
• 
• 

MonkeyTalk Platform Overview
Recording Tests
Understanding MonkeyTalk Commands
Running Tests
Reusing Parameterized Scripts
Data-Driving
Test Suites
Working with Variables
JavaScript Scripting

6
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MONKEY EVOLUTION
OUT OF MANY, ONE

•  Gorilla Logic Open Source Projects
-  2009 – FlexMonkey/FlexMonkium for Adobe Flex
-  2010 – FoneMonkey for iOS
-  2011 – FoneMonkey for Android

•  2012 – MonkeyTalk for iOS, Android, and Mobile Web
-  Unites FoneMonkey for iOS and Android and adds Mobile Web
support
-  Affero GNU Open Source License 
-  Downloaded 40,000+ times since first released in March, 2012

•  2013 – CloudMonkey
-  Mobile device testing farm

7
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MONKEYTALK 1.0 DESIGN PRECEPTS
POWERFULLY SIMPLE

•  High-level operation and gesture recording/scripting
-  Low-level events are too numerous for maintainable scripts

•  Low-punctuation scripting
-  MonkeyTalk uses a simple, readable, space-separated command
language

•  Easy script parameterization and data-driving
-  Built into MonkeyTalk Command Processing

•  Cross-Platform
-  iOS, Android, Mobile Web

•  “Natural” JavaScript Scripting
-  Generated JavaScript API wraps scripts and commands

8
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CROSS-PLATFORM FUNCTIONAL TESTING
RECORD ON ONE, PLAY BACK ON ANOTHER
Play

Rec

MOBILE
Native, Web, Hybrid

iOS	
  

9
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

Android	
  

WWW.GORILLALOGIC.COM	
  
OBJECT- VS IMAGE-BASED TESTING TOOLS
MONKEYTALK IS OBJECT-BASED
Object	
  

Image	
  

Mechanism	
  

Analyze	
  actual	
  user	
  
interface	
  components	
  

Analyze	
  bitmap	
  screen	
  
images	
  

Setup	
  

Link	
  agent	
  into	
  app	
  

Run	
  agent	
  on	
  host	
  

Ability	
  to	
  script	
  “outside”	
  
app	
  

No	
  

Yes	
  

Events	
  Recorded	
  

Higher	
  Level	
  

Lower	
  Level	
  

Script	
  Readability	
  

More	
  Readable	
  	
  

Less	
  Readable	
  

BriKleness	
  

Less	
  BriKle	
  

More	
  BriKle	
  

Jail-­‐Breaking	
  or	
  physical	
  
device	
  harness	
  

Not	
  Required	
  

Required	
  

10
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MONKEYTALK OPEN ARCHITECTURE
SWAPPABLE COMPONENT FRAMEWORK

MonkeyTalk	
  
Recorder	
  

Command	
  

MonkeyTalk	
  
Recording	
  
Protocol	
  

Command	
  

App	
  
Under	
  
Test	
  

MonkeyTalk	
  
Script	
  

MonkeyTalk	
  
Runner	
  

Command	
  

MonkeyTalk	
  
Playback	
  
Protocol	
  

11
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

MonkeyTalk	
  
Recording	
  
Agent	
  

Command	
  

MonkeyTalk	
  
Playback	
  
Agent	
  

WWW.GORILLALOGIC.COM	
  
AUTOMATING AUTOMATED TESTING
RUN INTERACTIVELY OR UNATTENDED

•  Various methods for running unattended MonkeyTalk tests
Command	
  
Line	
  Runner	
  

MonkeyTalk	
  
Test	
  Suite	
  

•  Scheduled	
  

Ant	
  Runner	
  

•  Build-­‐Time	
  
	
  

ConRnuous	
  
IntegraRon	
  

•  Commit	
  Time	
  

12
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MONKEYTALK IDE
FUNCTIONAL TEST SUITE CREATION AND MANAGEMENT WORKBENCH
Toolbar	
  

Editor	
  

Files	
  

Console	
  

13
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CREATE A MONKEYTALK PROJECT FOLDER
CONTAINS ALL YOUR SUITES, SCRIPTS, AND TEST DATA

14
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CREATE A NEW, EMPTY TEST SCRIPT
RIGHT-CLICK ON PROJECT

15
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
IDE AND APP COMMUNICATE OVER HTTP
VIA USB TETHER OR WI-FI CONNECTION

HTTP	
  

16
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CONNECTION SELECTOR

SELECTS DEVICE AND CONNECTION TYPE

App	
  must	
  
already	
  be	
  
running	
  
Status	
  reported	
  in	
  
console	
  

17
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CONNECTION BUTTON

INITIATES CONNECTION TO APP UNDER TEST

18
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
RECORD BUTTON

STARTS CAPTURING OF COMMANDS FROM APP UNDER TEST

Commands	
  

UI	
  AcRons	
  
Generate	
  
Commands	
  

19
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
STOP BUTTON
STOPS RECORDING

Commands	
  
Recorded	
  in	
  
Editor	
  

20
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
SIMPLE MONKEYTALK COMMAND FORMAT
EVERY COMMAND CONSISTS OF SAME COLUMNS

ComponentType MonkeyId Action Arguments…

"
	
  

Table	
  View	
  
Editor	
  

21
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CHOOSE YOUR EDITOR

EDIT WITH TABULAR OR TEXT EDITOR

# Comments begin with a hash-sign"
ComponentType MonkeyId Action Arguments…

"
	
  

MonkeyTalk	
  
Text	
  
Editor	
  

22
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MONKEYTALK IS OBJECT-ORIENTED

COMPONENT TYPE HIERARCHY AND ACTION INHERITANCE

ComponentType MonkeyId Action Arguments…"
	
  

Class	
  

Instance	
  

Automated	
  
Component	
  
Type	
  
Custom	
  
Subclass	
  

Method	
  

BuKon	
  
Subclass	
  inherits	
  all	
  record/playback	
  capabiliRes	
  	
  
MyBuKon	
  

23
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
LOGICAL COMPONENT TYPES

MAPPED TO EACH SDK FOR CROSS-PLATFORM PLAYBACK
MonkeyTalk	
  

iOS	
  

Android	
  

Web	
  

View	
  

UIView	
  

View	
  

Any	
  Tag	
  

Input	
  

UITextField	
  

EditText	
  

Input,	
  type(text)	
  

BuKon	
  

UIBuKon	
  

BuKon	
  

BuKon,	
  Input(submit)	
  

ItemSelector	
  

UIPicker	
  

Spinner	
  

Select	
  

CheckBox	
  

UISwitch	
  

CheckBox	
  

Input(checkbox)	
  

Table	
  

UITableView	
  

ListView	
  

Table	
  

TabBar	
  

UITabBar	
  

TabHost	
  

BuKonSelector	
  

UISegmentedControl	
  

RadioGroup	
  

Input(radiobuKon)	
  

TextArea	
  

UITextView	
  

EditText	
  

TextArea	
  

Menu	
  

TabBar	
  

Menu	
  

Label	
  

UILabel	
  

TextView	
  

Slider	
  

UISlider	
  

SeekBar	
  

HtmlTag	
  

Label,	
  Div	
  
Any	
  Tag	
  

Component	
  types	
  form	
  an	
  inheritance	
  hierarchy	
  
24
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MONKEY ID’S

DISTINGUISH BETWEEN COMPONENTS OF THE SAME TYPE

•  MonkeyTalk identifies a component by its textual label, or
other identifying property value
-  For example, the label value on a button
OK	
  

Cancel	
  

•  MonkeyId’s can be set explicitly by a developer via a
component’s accessibility label
-  iOS: UIView.accessibilityLabel
-  Android: View.contentDescription
•  Android components can also be identified by android:id

-  Web: id, name, title, or styleClass

25
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
COMPONENT TYPE + MONKEYID

COMBINATION IDENTIFIES UNIQUE COMPONENT

ComponentType MonkeyId Action Arguments…"
	
  

# Tap Some Buttons

Button OK Tap

Button Cancel Tap"
# Select the row with value “Belgium”"
Table Countries Select Belgium"

•  At playback, monkeyId must match some component’s text label, or the
accessibility label, or other componentType-specific id prop
•  If multiple components match, the upper-left-most one will be returned
•  If no component matches, the command will fail
•  MonkeyId’s with embedded blanks are enclosed in quotes
Button “Save All” Tap"

26
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
INDEXED MONKEYID’S

IDENTIFY COMPONENTS BY POSITION
•  Indexes are specified as #N, beginning with 1 (not zero), eg, #1, #2, #3…
•  #1 is the upper-leftmost component of the specified type
•  A MonkeyId of asterisk (*) matches the first component of the specified
type (same as #1)
•  You can also index the monkeyID value with an index value in
parentheses



# First Input Field"
Input #1 EnterText Fred"
Input #2 EnterText Mertz"
# Second Button"
Button #2 Tap"
# Only one TabBar"
TabBar * Select Places"
Table * Select Madagascar"
# Tap the second OK button"
Button OK(2) Tap"

27
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
PLAYBACK

IDE SENDS COMMANDS TO APP UNDER TEST

Commands	
  

28
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
PLAYBACK RESULTS LOG
DISPLAYED IN CONSOLE VIEW

29
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
COMMANDS RETRIED BY DEFAULT
UNTIL SUCCESS OR TIMEOUT



• 

Timeout – Maximum time to
retry the command before
failing
- 

• 

Defaults to 2000 ms

ThinkTime – How long to
pause before executing the
command
- 

Defaults to 500 ms

Set	
  Timeout	
  to	
  
max	
  Rme	
  to	
  wait	
  
for	
  a	
  command	
  
to	
  succeed	
  

30
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
VERIFY COMMANDS

COMPARE EXPECTED AND ACTUAL VALUES
ComponentType MonkeyId Verify expectedValue [propertyName] [failMsg]!

•  Several different Verify commands
- 
- 
- 
- 

Verify – Tests for a perfect match
VerifyWildcard – Tests against a wildcard expression
VerifyRegex – Tests against a regular expression
VerifyNot, VerifyNotWildcard and VerifyNotRegex test for a non-matching
value

•  The default propertyName is “value”
Slider Speed Verify 123 value"
Label Greeting VerifyWildcard “Hello *”"
Input ssn VerifyRegex d{3]-d{2}-d{4} value “Invalid SSN”"

31
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
LOGICAL COMPONENT PROPERTIES
VALID ACROSS PLATFORMS

•  size	
  –	
  number	
  of	
  items	
  in	
  a	
  list	
  or	
  other	
  item	
  selector	
  
•  min,	
  max	
  –	
  mininun	
  value	
  for	
  a	
  slider	
  or	
  other	
  numeric	
  
selectors	
  
	
  	
  

Table Countries Verify 196 size"
Slider Speed Verify 200 max “Speed exceeds maximum”"

•  Platform-specific properties can be specified by prefixing the
property name with a dot
# Test if the label’s text property equals “Banana”"
Label Name Verify Banana .text"

32
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
‘ITEMS’ ARRAY PROPERTY
REFERENCES TABLE ITEMS

•  Specify the index (starting with 1) of the item as list reference
in parentheses: (n)
•  Optional second dimension denotes the column: (row, col)
•  On iOS, second dimension can also refer to the table section
# See if the fourth item is “American Samoa”"
Table * Verify “American Samoa” items(4)"
# Test the first item of the second section"
Table * Verify Blue items(1,2) "

33
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
‘GET’ ACTION

RETRIEVES COMPONENT PROPERTY VALUES
ComponenType MonkeyId Get varName propName"

•  Works like an assignment statement (varName = propName)
•  The default property is “value”
// Get label value currently displayed"
Label lastname Get name!
// Enter name into input field"
Input query EnterText ${name}!
"
// Get the first table item"
Table countries Get country items[1]!
// Enter into input field"
Input * EnterText ${country} "
"

34
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
ACTIONS CAN BE HIGH OR LOW LEVEL
UI EVENTS, GESTURES, OR OPERATIONS
Low-­‐level	
  
UI	
  Event	
  
Recording	
  

TouchDown	
  5	
  5	
  
TouchMove	
  5	
  6	
  
TouchMove	
  5	
  7	
  
TouchMove	
  5	
  8	
  
TouchUp	
  5	
  9	
  

Gesture	
  
Recording	
  

High-­‐Level	
  	
  
OperaRon	
  
Recording	
  

Swipe	
  Up	
  

Select	
  “Chocolate	
  Cake”	
  

35
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
COMMON ACTIONS

MANY ACTIONS ARE COMMON ACROSS COMPONENT TYPES

• 
• 
• 
• 
• 

Tap – Tap on a component
EnterText – Enter text into a field
Select – Select an item from a list by value
SelectIndex – Select an item from a list by position
On, Off – Turn a switch on or off



Button OK Tap"
Input “First Name” EnterText Fred"
RadioButtons Gender Select Male"
Table Countries SelectIndex 2"
Toggle Enabled On"
AcRons	
  are	
  not	
  case-­‐sensiRve	
  (eg,	
  tap,	
  Tap,	
  TAP	
  are	
  equivalent)	
  
Button OK tap"
Input “First Name” entertext Fred"

36
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
POSITIONAL ARGUMENTS

SOME COMMANDS REQUIRE ONE OR MORE ARGUMENTS

•  Arguments are space separated
-  Embedded blanks are quoted

•  Some arguments are optional
•  Use asterisk (*) as placeholder for default value
•  For example, specifying “enter” for EnterText’s second argument
triggers an Enter key tap after text entry
Input name EnterText “Fred Mertz” enter"
# Omit the second arg to enter text without Enter key"
TextArea address EnterText “125 Main St” "

•  Timeout and ThinkTime are specified after any arguments, using the
%timeout and %thinktime “command modifiers”

37
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
COMMAND MODIFIERS
THINKTIME AND TIMEOUT

•  Specified with %name=value format
•  Follow arguments (if any) on any command
•  Two built-in modifiers
-  Thinktime
-  Timeout
# Retry until true or until 4 second timeout"
Label message VerifyWildcard “Welcome *” %timeout=4000"
#Pause two seconds before executing command"
Button OK Tap %thinktime=2000"

38
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
REUSING SCRIPTS

SCRIPTS CAN BE CALLED FROM OTHER SCRIPTS
Script ScriptName Run"

•  Scripts can call other scripts by filename
•  MonkeyTalk looks for called scripts in the project’s root folder
•  MonkeyTalk scripts have an .mt file extension
# Call the login script"
Script login.mt Run"
# Do other stuff after login"
Button OK Tap"

39
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
PARAMETERIZING SCRIPTS

DEFINE SUBSTITUTION VARIABLES WITH THE ‘VARS’ ACTION

•  Parameterize a script so you can run it with different values
-  For example, login and password values in a login script

•  Scripts can pass positional arguments to called scripts
•  Use the Vars * Define command to declare variable names,
positions, and default values
Vars * Define var1=defaultValue1 var2=defaultValue2…



# Example"
Vars * Define user=fred password=1234"

40
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
WORKING WITH PARAMETERS
PASS VALUES TO CALLED SCRIPTS

•  Substitution variables use $-curly format: ${varname}
# login.mt"
Vars * Define user=fred password=pw123"
Input username EnterText ${user}!
Input password EnterText ${password}!
Button OK Tap"
Label message Verify “Welcome ${user}!"

•  Call	
  ther	
  Script	
  
# Call
Script
# Call
Script

with substitution values for user and password"
login.mt Run ethel secret234"
with default values (fred pw123)"
login.mt Run"

41
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
DATA-DRIVING A SCRIPT

RUNNING A SCRIPT FOR EACH DATA ROW FROM A FILE

•  Use the RunWith action to pass a CSV (comma-separatedvalues) file to a script
•  First line of CSV must contain parameter names
corresponding to the columns of data stored in the file
•  Script is called once for each data line in the file
Script login.mt RunWith logins.csv"
logins.csv	
  
user, password"
fred, pw123"
Johnr, secrets"
sally, m0nday "
	
  

# login.mt"
Vars * Define user=fred password=pw123"
Input username EnterText ${user}"
Input password EnterText ${password}"
Button OK Tap"
Label message Verify “Welcome ${user}!"

42
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
TEST SUITES

RUNS MULTIPLE SCRIPTS WITH AGGREGATE RECORDING

•  Right-click on a project to create a test suite

43
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
SUITES CALL SCRIPTS OR OTHER SUITES
SUITES MAKE IT EASY TO RUN COLLECTIONS OF TESTS

•  Suite files have an .mts extenstion
•  Four types of commands permitted
- 
- 
- 
- 

Test – runs a script as a test
Suite – runs another suite
SetUp – a script to run before each test in the suite
TearDown – a script to run after each test in a suite

•  Both Run (with args) and RunWith (with csv) supported

•  Suites can call other suites
Suite CoreTests.mts Run"
Suite MoreTests.mts Run"

44
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
SUITE RESULT REPORTING

DISPLAYED IN IDE AND SAVED IN REPORTS FOLDER

45
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CUSTOM COMMANDS

MONKEYTALK CAN BE EXTENDED WITH NEW COMMANDS
CustomCmdName monkeyIdArg CustomActionName args…"

•  Define a custom command by saving a script with a 2-part
name of the form CmdName.ActionName.mt
•  Optionally use the %{monkeyId} built-in substituion variable
to access monkeyId argument value

46
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
USING CUSTOM COMMANDS
CALL USING COMMAND OR RUN SYNTAX

•  Command Syntax
User ethel Login secret123"

•  Use Script Syntax for data-driving (monkeyId set to script
name)
Script user.login.mt RunWith logins.csv"

•  Call Custom Commands From Suites by Invoking as
Tests
Test user.login.mt Run ethel secret123"

47
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
GENERATING JAVASCRIPT

USE MONKEYTALK JAVASCRIPT API FOR COMPLEX SCRIPT LOGIC

•  The JavaScript Tab displays a JavaScript function generated
from the MonkeyTalk Script
•  Export button Opens JavaScript Editor

48
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
EDIT AND SAVING A SCRIPT

CLICKING THE EXPORT BUTTON OPENS JAVASCRIPT EDITOR

•  Edit to add any required additional logic

49
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CALLING JAVASCRIPT FROM MONKEYTALK
CALL JAVASCRIPT LIKE ANY OTHER MONKEYTALK SCRIPT

•  Call .js Script Files in Same Way as .mt Scripts

•  JavaScript	
  Can	
  Also	
  Be	
  Data-­‐Driven	
  
Script login.js RunWith logins.csv"

50
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
JAVASCRIPT API

MIRRORS MONKEYTALK COMMAND SYNTAX
#	
  BuKon	
  OK	
  Tap	
  
this.app.bu=on(“OK”).tap()	
  
	
  
#	
  Input	
  firstname	
  EnterText	
  fred	
  
this.app.input(“firstname”).enterText(“fred”);	
  
	
  
#	
  Label	
  message	
  Verify	
  “Hello,	
  fred”	
  
this.app.label(“message”).verify(“Hello,	
  fred”);	
  
	
  
#	
  Script	
  login.mt	
  Run	
  ethel	
  secret123	
  
this.app.script(“login.mt”).run(“ethel”,	
  “secret123”);	
  
#	
  Script	
  login.mt	
  RunWith	
  logins.csv	
  
this.app.script(“login.mt”).runWith(“logins.csv”);	
  
	
  
#	
  Custom	
  commands	
  too	
  
#	
  User	
  ethel	
  Login	
  secret123	
  
this.app.user(“ethel”).login(“secret123”)	
  

51
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CUSTOM COMMANDS IN JAVASCRIPT
JAVASCRIPT CAN BE CALLED AS CUSTOM COMMAND

•  Give JavaScript file a two-part, Command.Action.js name.

•  Call	
  user.login.js	
  
User ethel Login secret123"

52
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
OVERRIDING AN .MT SCRIPT

JAVASCRIPT OVERRIDES MT FILE WITH SAME NAME

•  If no file extension specified, MonkeyTalk looks first for a .js
file and if none is found, searches for an .mt file of the same
name
# Assume both login.js and login.mt files exist"
"
# Run user.login.js"
Script login Run ethel secret123"
"
# Run user.login.mt"
Script login.mt Run ethel secret123"
"
# Run user.login.js (assuming it exists, otherwise run

# user.login.mt)"
User ethel Login secret123 "

53
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
HYBRID NATIVE/WEBVIEW APP TESTING
SCRIPT HTML COMPONENTS SAME AS NATIVE ONES

•  MonkeyTalk commands also work with
embedded web views
•  Component Types mapped to HTML
tags

# Select native tab"
TabBar * Select Web"
# Tap HTML button"
Button “Click Me” Tap"
# Select HTML table cell"
Table * SelectIndex 3 3"

54
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
MOBILE WEB BROWSER APP TESTING
THE MONKEYTALK ‘MTBROWSER’

•  Use MTBrowser for mobile web app testing
-  Mobile Browsers linked with MonkeyTalk agents

•  Supports Browser component actions
-  Browser * Open URL
-  Browser * Back 
-  Browser * Forward

55
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
CLOUDMONKEY

“MOBILE DEVICE FARM IN A BOX”

Device	
  Manager	
  

On-­‐demand	
  
Test	
  Job	
  
Queue	
  

Test	
  Jobs	
  
Test	
  Results	
  
HTML	
  

ConRnuous	
  
IntegraRon	
  

XML	
  

Logs	
  

Job	
  Output	
  

Screen	
  
Shots	
  

CloudMonkey	
  On-­‐Premises	
  Appliance	
  
“Device	
  Farm	
  in	
  a	
  Box”	
  

56
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.

WWW.GORILLALOGIC.COM	
  
THE TOOL, THE STANDARD, THE CLOUD
STU STERN, CEO OF GORILLA LOGIC, INC.
STU STERN
STU.STERN@GORILLALOGIC.COM

More Related Content

Viewers also liked

Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolVivek Pansara
 
How to configure monkey talk android agent
How to configure monkey talk android agentHow to configure monkey talk android agent
How to configure monkey talk android agentDasun Eranthika
 
Congruent Coaching: An Interactive Exploration
Congruent Coaching: An Interactive ExplorationCongruent Coaching: An Interactive Exploration
Congruent Coaching: An Interactive ExplorationTechWell
 
CAN I USE THIS?—A Mnemonic for Usability Testing
CAN I USE THIS?—A Mnemonic for Usability TestingCAN I USE THIS?—A Mnemonic for Usability Testing
CAN I USE THIS?—A Mnemonic for Usability TestingTechWell
 
Improving the Mobile Application User Experience (UX)
Improving the Mobile Application User Experience (UX)Improving the Mobile Application User Experience (UX)
Improving the Mobile Application User Experience (UX)TechWell
 
Rapid Software Testing: Reporting
Rapid Software Testing: ReportingRapid Software Testing: Reporting
Rapid Software Testing: ReportingTechWell
 
User Acceptance Testing: Make the User a Part of the Team
User Acceptance Testing: Make the User a Part of the TeamUser Acceptance Testing: Make the User a Part of the Team
User Acceptance Testing: Make the User a Part of the TeamTechWell
 
Designing for Testability: Differentiator in a Competitive Market
Designing for Testability: Differentiator in a Competitive MarketDesigning for Testability: Differentiator in a Competitive Market
Designing for Testability: Differentiator in a Competitive MarketTechWell
 
A Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional TestingvA Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional TestingvTechWell
 
Measurement and Metrics for Test Managers
Measurement and Metrics for Test ManagersMeasurement and Metrics for Test Managers
Measurement and Metrics for Test ManagersTechWell
 
Essential Test Management and Planning
Essential Test Management and PlanningEssential Test Management and Planning
Essential Test Management and PlanningTechWell
 
Critical Thinking for Software Testers
Critical Thinking for Software TestersCritical Thinking for Software Testers
Critical Thinking for Software TestersTechWell
 
The Art of Complex System Testing
The Art of Complex System TestingThe Art of Complex System Testing
The Art of Complex System TestingTechWell
 
Testing in the Wild: Practices for Testing Beyond the Lab
Testing in the Wild: Practices for Testing Beyond the LabTesting in the Wild: Practices for Testing Beyond the Lab
Testing in the Wild: Practices for Testing Beyond the LabTechWell
 
Extreme Automation: Software Quality for the Next Generation Enterprise
Extreme Automation: Software Quality for the Next Generation EnterpriseExtreme Automation: Software Quality for the Next Generation Enterprise
Extreme Automation: Software Quality for the Next Generation EnterpriseTechWell
 
Continuous Test Automation
Continuous Test AutomationContinuous Test Automation
Continuous Test AutomationTechWell
 
Monkey runner & Monkey testing
Monkey runner & Monkey testingMonkey runner & Monkey testing
Monkey runner & Monkey testingSWAAM Tech
 

Viewers also liked (18)

Mobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk ToolMobile Application Test automation using MonkeyTalk Tool
Mobile Application Test automation using MonkeyTalk Tool
 
How to configure monkey talk android agent
How to configure monkey talk android agentHow to configure monkey talk android agent
How to configure monkey talk android agent
 
Congruent Coaching: An Interactive Exploration
Congruent Coaching: An Interactive ExplorationCongruent Coaching: An Interactive Exploration
Congruent Coaching: An Interactive Exploration
 
CAN I USE THIS?—A Mnemonic for Usability Testing
CAN I USE THIS?—A Mnemonic for Usability TestingCAN I USE THIS?—A Mnemonic for Usability Testing
CAN I USE THIS?—A Mnemonic for Usability Testing
 
Improving the Mobile Application User Experience (UX)
Improving the Mobile Application User Experience (UX)Improving the Mobile Application User Experience (UX)
Improving the Mobile Application User Experience (UX)
 
Rapid Software Testing: Reporting
Rapid Software Testing: ReportingRapid Software Testing: Reporting
Rapid Software Testing: Reporting
 
User Acceptance Testing: Make the User a Part of the Team
User Acceptance Testing: Make the User a Part of the TeamUser Acceptance Testing: Make the User a Part of the Team
User Acceptance Testing: Make the User a Part of the Team
 
T1
T1T1
T1
 
Designing for Testability: Differentiator in a Competitive Market
Designing for Testability: Differentiator in a Competitive MarketDesigning for Testability: Differentiator in a Competitive Market
Designing for Testability: Differentiator in a Competitive Market
 
A Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional TestingvA Guide to Cross-Browser Functional Testingv
A Guide to Cross-Browser Functional Testingv
 
Measurement and Metrics for Test Managers
Measurement and Metrics for Test ManagersMeasurement and Metrics for Test Managers
Measurement and Metrics for Test Managers
 
Essential Test Management and Planning
Essential Test Management and PlanningEssential Test Management and Planning
Essential Test Management and Planning
 
Critical Thinking for Software Testers
Critical Thinking for Software TestersCritical Thinking for Software Testers
Critical Thinking for Software Testers
 
The Art of Complex System Testing
The Art of Complex System TestingThe Art of Complex System Testing
The Art of Complex System Testing
 
Testing in the Wild: Practices for Testing Beyond the Lab
Testing in the Wild: Practices for Testing Beyond the LabTesting in the Wild: Practices for Testing Beyond the Lab
Testing in the Wild: Practices for Testing Beyond the Lab
 
Extreme Automation: Software Quality for the Next Generation Enterprise
Extreme Automation: Software Quality for the Next Generation EnterpriseExtreme Automation: Software Quality for the Next Generation Enterprise
Extreme Automation: Software Quality for the Next Generation Enterprise
 
Continuous Test Automation
Continuous Test AutomationContinuous Test Automation
Continuous Test Automation
 
Monkey runner & Monkey testing
Monkey runner & Monkey testingMonkey runner & Monkey testing
Monkey runner & Monkey testing
 

Similar to Automate Mobile App Testing—Or Go Crazy

Android automation tools
Android automation toolsAndroid automation tools
Android automation toolsSSGMCE SHEGAON
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648Eing Ong
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)François
 
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...Mobodexter
 
How to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidHow to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidOptimizely
 
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...Agile Testing Alliance
 
Open Source Power Tools - Opensouthcode 2018-06-02
Open Source Power Tools - Opensouthcode 2018-06-02Open Source Power Tools - Opensouthcode 2018-06-02
Open Source Power Tools - Opensouthcode 2018-06-02Jorge Hidalgo
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)Bitbar
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microserviceGiulio De Donato
 
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015Burcu Geneci
 
Lesson learned from 3 years with hybrid apps
Lesson learned from 3 years with hybrid appsLesson learned from 3 years with hybrid apps
Lesson learned from 3 years with hybrid appsPatrik Malmquist
 
Cooking security sans@night
Cooking security sans@nightCooking security sans@night
Cooking security sans@nightjtimberman
 
Fixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World RomaniaFixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World RomaniaChristian Heilmann
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth Pilli
 
Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527August Lin
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10Eing Ong
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Gergely Kis
 
Webinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
Webinar: Extend The Power of The ForgeRock Identity Platform Through ScriptingWebinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
Webinar: Extend The Power of The ForgeRock Identity Platform Through ScriptingForgeRock
 

Similar to Automate Mobile App Testing—Or Go Crazy (20)

Android automation tools
Android automation toolsAndroid automation tools
Android automation tools
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Boodskap overview
Boodskap overview Boodskap overview
Boodskap overview
 
2012 java one-con3648
2012 java one-con36482012 java one-con3648
2012 java one-con3648
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
 
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
 
How to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidHow to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and Android
 
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
 
Open Source Power Tools - Opensouthcode 2018-06-02
Open Source Power Tools - Opensouthcode 2018-06-02Open Source Power Tools - Opensouthcode 2018-06-02
Open Source Power Tools - Opensouthcode 2018-06-02
 
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
 
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
 
Lesson learned from 3 years with hybrid apps
Lesson learned from 3 years with hybrid appsLesson learned from 3 years with hybrid apps
Lesson learned from 3 years with hybrid apps
 
Cooking security sans@night
Cooking security sans@nightCooking security sans@night
Cooking security sans@night
 
Fixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World RomaniaFixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World Romania
 
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latestSrikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
 
Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
 
Webinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
Webinar: Extend The Power of The ForgeRock Identity Platform Through ScriptingWebinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
Webinar: Extend The Power of The ForgeRock Identity Platform Through Scripting
 

More from TechWell

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and RecoveringTechWell
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization TechWell
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTechWell
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartTechWell
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyTechWell
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTechWell
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowTechWell
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityTechWell
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyTechWell
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTechWell
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipTechWell
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsTechWell
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GameTechWell
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsTechWell
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationTechWell
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessTechWell
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateTechWell
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessTechWell
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTechWell
 

More from TechWell (20)

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and Recovering
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build Architecture
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good Start
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test Strategy
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for Success
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your Sanity
 
Ma 15
Ma 15Ma 15
Ma 15
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps Strategy
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOps
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—Leadership
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile Teams
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile Game
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps Implementation
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery Process
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to Automate
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for Success
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile Transformation
 

Recently uploaded

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?SANGHEE SHIN
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServiceRenan Moreira de Oliveira
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceMartin Humpolec
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 

Recently uploaded (20)

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your Salesforce
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 

Automate Mobile App Testing—Or Go Crazy

  • 1. T16 Concurrent Class 10/3/2013 1:30:00 PM "Automate Mobile App TestingOr Go Crazy" Presented by: Stu Stern Gorilla Logic Brought to you by: 340 Corporate Way, Suite 300, Orange Park, FL 32073 888-268-8770 ∙ 904-278-0524 ∙ sqeinfo@sqe.com ∙ www.sqe.com
  • 2. Stewart Stern Gorilla Logic, Inc. Stu Stern is CEO of Gorilla Logic, an enterprise IT consulting firm specializing in web and mobile development, and the creators of several automation tools including FlexMonkey, FoneMonkey, and MonkeyTalk. Prior to founding Gorilla Logic in 2002, Stu was head of Java consulting at Sun Microsystems. Even further back, Stu spent many years building trading systems on Wall Street. Although a long-time senior IT executive, after thirty years in the industry Stu is proud to still be very much a geek
  • 3. AUTOMATE MOBILE APP TESTING (OR GO INSANE) THE TOOL, THE STANDARD, THE CLOUD STU STU STERN, CEOGORILLA LOGIC INC. STERN, CEO, OF GORILLA LOGIC,
  • 4. WELCOME TO GORILLA LOGIC WE’RE TWO COMPANIES IN ONE •  Enterprise Services -  Mobile and Web App Development -  Front-end and Back-end -  Project outsourcing and talent acquisition •  Testing Tools -  MonkeyTalk -  CloudMonkey -  Support, training, quick start services •  Founded in 2002 by ex-Sun execs •  100 employees •  Based in Boulder with offices in New York, Bangalore, and Costa Rica 2 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 5. BROWSERS WERE BAD (FF, IE, SAFARI, …) BUT MOBILE IS WORSE! •  •  •  •  Android 2.x, 3.x, 4.x iOS 4.x, 5.x, 6.x Huge range of physical screen resolutions and pixel densities Runtime differences among various device brands and models 3 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 6. AN INSANE NUMBER OF TESTING TARGETS! 1.  Functional – Does the app work according to spec? -  Verify on virtual device of each platform (2) 2.  OS compatibility – Does the app work on each OS version -  Verify on virtual device of each version (6 - 12) 3.  Display compatibility -  Verify on virtual device at each resolution (6 - 12) •  Device compatibility -  Run on each major make and model (dozens – hundreds) Literally hundreds of possible configurations! 4 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 7. AUTOMATION MIGHT HELP ;) •  MonkeyTalk is free and open source •  Powerful script recording -  But scripts can also be created or edited with any text editor •  Simple script commands •  Provides complete automation solution -  -  -  -  -  Android 2.2+, iOS 3.x+, Mobile Web Full-featured Integrated Development Environment Interactive script creation and execution Command line script runner Continuous Integration friendly 5 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 8. AGENDA (ASPIRATIONAL) •  •  •  •  •  •  •  •  •  MonkeyTalk Platform Overview Recording Tests Understanding MonkeyTalk Commands Running Tests Reusing Parameterized Scripts Data-Driving Test Suites Working with Variables JavaScript Scripting 6 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 9. MONKEY EVOLUTION OUT OF MANY, ONE •  Gorilla Logic Open Source Projects -  2009 – FlexMonkey/FlexMonkium for Adobe Flex -  2010 – FoneMonkey for iOS -  2011 – FoneMonkey for Android •  2012 – MonkeyTalk for iOS, Android, and Mobile Web -  Unites FoneMonkey for iOS and Android and adds Mobile Web support -  Affero GNU Open Source License -  Downloaded 40,000+ times since first released in March, 2012 •  2013 – CloudMonkey -  Mobile device testing farm 7 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 10. MONKEYTALK 1.0 DESIGN PRECEPTS POWERFULLY SIMPLE •  High-level operation and gesture recording/scripting -  Low-level events are too numerous for maintainable scripts •  Low-punctuation scripting -  MonkeyTalk uses a simple, readable, space-separated command language •  Easy script parameterization and data-driving -  Built into MonkeyTalk Command Processing •  Cross-Platform -  iOS, Android, Mobile Web •  “Natural” JavaScript Scripting -  Generated JavaScript API wraps scripts and commands 8 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 11. CROSS-PLATFORM FUNCTIONAL TESTING RECORD ON ONE, PLAY BACK ON ANOTHER Play Rec MOBILE Native, Web, Hybrid iOS   9 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. Android   WWW.GORILLALOGIC.COM  
  • 12. OBJECT- VS IMAGE-BASED TESTING TOOLS MONKEYTALK IS OBJECT-BASED Object   Image   Mechanism   Analyze  actual  user   interface  components   Analyze  bitmap  screen   images   Setup   Link  agent  into  app   Run  agent  on  host   Ability  to  script  “outside”   app   No   Yes   Events  Recorded   Higher  Level   Lower  Level   Script  Readability   More  Readable     Less  Readable   BriKleness   Less  BriKle   More  BriKle   Jail-­‐Breaking  or  physical   device  harness   Not  Required   Required   10 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 13. MONKEYTALK OPEN ARCHITECTURE SWAPPABLE COMPONENT FRAMEWORK MonkeyTalk   Recorder   Command   MonkeyTalk   Recording   Protocol   Command   App   Under   Test   MonkeyTalk   Script   MonkeyTalk   Runner   Command   MonkeyTalk   Playback   Protocol   11 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. MonkeyTalk   Recording   Agent   Command   MonkeyTalk   Playback   Agent   WWW.GORILLALOGIC.COM  
  • 14. AUTOMATING AUTOMATED TESTING RUN INTERACTIVELY OR UNATTENDED •  Various methods for running unattended MonkeyTalk tests Command   Line  Runner   MonkeyTalk   Test  Suite   •  Scheduled   Ant  Runner   •  Build-­‐Time     ConRnuous   IntegraRon   •  Commit  Time   12 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 15. MONKEYTALK IDE FUNCTIONAL TEST SUITE CREATION AND MANAGEMENT WORKBENCH Toolbar   Editor   Files   Console   13 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 16. CREATE A MONKEYTALK PROJECT FOLDER CONTAINS ALL YOUR SUITES, SCRIPTS, AND TEST DATA 14 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 17. CREATE A NEW, EMPTY TEST SCRIPT RIGHT-CLICK ON PROJECT 15 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 18. IDE AND APP COMMUNICATE OVER HTTP VIA USB TETHER OR WI-FI CONNECTION HTTP   16 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 19. CONNECTION SELECTOR SELECTS DEVICE AND CONNECTION TYPE App  must   already  be   running   Status  reported  in   console   17 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 20. CONNECTION BUTTON INITIATES CONNECTION TO APP UNDER TEST 18 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 21. RECORD BUTTON STARTS CAPTURING OF COMMANDS FROM APP UNDER TEST Commands   UI  AcRons   Generate   Commands   19 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 22. STOP BUTTON STOPS RECORDING Commands   Recorded  in   Editor   20 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 23. SIMPLE MONKEYTALK COMMAND FORMAT EVERY COMMAND CONSISTS OF SAME COLUMNS ComponentType MonkeyId Action Arguments…
 "   Table  View   Editor   21 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 24. CHOOSE YOUR EDITOR EDIT WITH TABULAR OR TEXT EDITOR # Comments begin with a hash-sign" ComponentType MonkeyId Action Arguments…
 "   MonkeyTalk   Text   Editor   22 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 25. MONKEYTALK IS OBJECT-ORIENTED COMPONENT TYPE HIERARCHY AND ACTION INHERITANCE ComponentType MonkeyId Action Arguments…"   Class   Instance   Automated   Component   Type   Custom   Subclass   Method   BuKon   Subclass  inherits  all  record/playback  capabiliRes     MyBuKon   23 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 26. LOGICAL COMPONENT TYPES MAPPED TO EACH SDK FOR CROSS-PLATFORM PLAYBACK MonkeyTalk   iOS   Android   Web   View   UIView   View   Any  Tag   Input   UITextField   EditText   Input,  type(text)   BuKon   UIBuKon   BuKon   BuKon,  Input(submit)   ItemSelector   UIPicker   Spinner   Select   CheckBox   UISwitch   CheckBox   Input(checkbox)   Table   UITableView   ListView   Table   TabBar   UITabBar   TabHost   BuKonSelector   UISegmentedControl   RadioGroup   Input(radiobuKon)   TextArea   UITextView   EditText   TextArea   Menu   TabBar   Menu   Label   UILabel   TextView   Slider   UISlider   SeekBar   HtmlTag   Label,  Div   Any  Tag   Component  types  form  an  inheritance  hierarchy   24 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 27. MONKEY ID’S DISTINGUISH BETWEEN COMPONENTS OF THE SAME TYPE •  MonkeyTalk identifies a component by its textual label, or other identifying property value -  For example, the label value on a button OK   Cancel   •  MonkeyId’s can be set explicitly by a developer via a component’s accessibility label -  iOS: UIView.accessibilityLabel -  Android: View.contentDescription •  Android components can also be identified by android:id -  Web: id, name, title, or styleClass 25 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 28. COMPONENT TYPE + MONKEYID COMBINATION IDENTIFIES UNIQUE COMPONENT ComponentType MonkeyId Action Arguments…"   # Tap Some Buttons
 Button OK Tap
 Button Cancel Tap" # Select the row with value “Belgium”" Table Countries Select Belgium" •  At playback, monkeyId must match some component’s text label, or the accessibility label, or other componentType-specific id prop •  If multiple components match, the upper-left-most one will be returned •  If no component matches, the command will fail •  MonkeyId’s with embedded blanks are enclosed in quotes Button “Save All” Tap" 26 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 29. INDEXED MONKEYID’S IDENTIFY COMPONENTS BY POSITION •  Indexes are specified as #N, beginning with 1 (not zero), eg, #1, #2, #3… •  #1 is the upper-leftmost component of the specified type •  A MonkeyId of asterisk (*) matches the first component of the specified type (same as #1) •  You can also index the monkeyID value with an index value in parentheses # First Input Field" Input #1 EnterText Fred" Input #2 EnterText Mertz" # Second Button" Button #2 Tap" # Only one TabBar" TabBar * Select Places" Table * Select Madagascar" # Tap the second OK button" Button OK(2) Tap" 27 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 30. PLAYBACK IDE SENDS COMMANDS TO APP UNDER TEST Commands   28 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 31. PLAYBACK RESULTS LOG DISPLAYED IN CONSOLE VIEW 29 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 32. COMMANDS RETRIED BY DEFAULT UNTIL SUCCESS OR TIMEOUT •  Timeout – Maximum time to retry the command before failing -  •  Defaults to 2000 ms ThinkTime – How long to pause before executing the command -  Defaults to 500 ms Set  Timeout  to   max  Rme  to  wait   for  a  command   to  succeed   30 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 33. VERIFY COMMANDS COMPARE EXPECTED AND ACTUAL VALUES ComponentType MonkeyId Verify expectedValue [propertyName] [failMsg]! •  Several different Verify commands -  -  -  -  Verify – Tests for a perfect match VerifyWildcard – Tests against a wildcard expression VerifyRegex – Tests against a regular expression VerifyNot, VerifyNotWildcard and VerifyNotRegex test for a non-matching value •  The default propertyName is “value” Slider Speed Verify 123 value" Label Greeting VerifyWildcard “Hello *”" Input ssn VerifyRegex d{3]-d{2}-d{4} value “Invalid SSN”" 31 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 34. LOGICAL COMPONENT PROPERTIES VALID ACROSS PLATFORMS •  size  –  number  of  items  in  a  list  or  other  item  selector   •  min,  max  –  mininun  value  for  a  slider  or  other  numeric   selectors       Table Countries Verify 196 size" Slider Speed Verify 200 max “Speed exceeds maximum”" •  Platform-specific properties can be specified by prefixing the property name with a dot # Test if the label’s text property equals “Banana”" Label Name Verify Banana .text" 32 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 35. ‘ITEMS’ ARRAY PROPERTY REFERENCES TABLE ITEMS •  Specify the index (starting with 1) of the item as list reference in parentheses: (n) •  Optional second dimension denotes the column: (row, col) •  On iOS, second dimension can also refer to the table section # See if the fourth item is “American Samoa”" Table * Verify “American Samoa” items(4)" # Test the first item of the second section" Table * Verify Blue items(1,2) " 33 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 36. ‘GET’ ACTION RETRIEVES COMPONENT PROPERTY VALUES ComponenType MonkeyId Get varName propName" •  Works like an assignment statement (varName = propName) •  The default property is “value” // Get label value currently displayed" Label lastname Get name! // Enter name into input field" Input query EnterText ${name}! " // Get the first table item" Table countries Get country items[1]! // Enter into input field" Input * EnterText ${country} " " 34 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 37. ACTIONS CAN BE HIGH OR LOW LEVEL UI EVENTS, GESTURES, OR OPERATIONS Low-­‐level   UI  Event   Recording   TouchDown  5  5   TouchMove  5  6   TouchMove  5  7   TouchMove  5  8   TouchUp  5  9   Gesture   Recording   High-­‐Level     OperaRon   Recording   Swipe  Up   Select  “Chocolate  Cake”   35 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 38. COMMON ACTIONS MANY ACTIONS ARE COMMON ACROSS COMPONENT TYPES •  •  •  •  •  Tap – Tap on a component EnterText – Enter text into a field Select – Select an item from a list by value SelectIndex – Select an item from a list by position On, Off – Turn a switch on or off Button OK Tap" Input “First Name” EnterText Fred" RadioButtons Gender Select Male" Table Countries SelectIndex 2" Toggle Enabled On" AcRons  are  not  case-­‐sensiRve  (eg,  tap,  Tap,  TAP  are  equivalent)   Button OK tap" Input “First Name” entertext Fred" 36 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 39. POSITIONAL ARGUMENTS SOME COMMANDS REQUIRE ONE OR MORE ARGUMENTS •  Arguments are space separated -  Embedded blanks are quoted •  Some arguments are optional •  Use asterisk (*) as placeholder for default value •  For example, specifying “enter” for EnterText’s second argument triggers an Enter key tap after text entry Input name EnterText “Fred Mertz” enter" # Omit the second arg to enter text without Enter key" TextArea address EnterText “125 Main St” " •  Timeout and ThinkTime are specified after any arguments, using the %timeout and %thinktime “command modifiers” 37 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 40. COMMAND MODIFIERS THINKTIME AND TIMEOUT •  Specified with %name=value format •  Follow arguments (if any) on any command •  Two built-in modifiers -  Thinktime -  Timeout # Retry until true or until 4 second timeout" Label message VerifyWildcard “Welcome *” %timeout=4000" #Pause two seconds before executing command" Button OK Tap %thinktime=2000" 38 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 41. REUSING SCRIPTS SCRIPTS CAN BE CALLED FROM OTHER SCRIPTS Script ScriptName Run" •  Scripts can call other scripts by filename •  MonkeyTalk looks for called scripts in the project’s root folder •  MonkeyTalk scripts have an .mt file extension # Call the login script" Script login.mt Run" # Do other stuff after login" Button OK Tap" 39 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 42. PARAMETERIZING SCRIPTS DEFINE SUBSTITUTION VARIABLES WITH THE ‘VARS’ ACTION •  Parameterize a script so you can run it with different values -  For example, login and password values in a login script •  Scripts can pass positional arguments to called scripts •  Use the Vars * Define command to declare variable names, positions, and default values Vars * Define var1=defaultValue1 var2=defaultValue2…
 
 # Example" Vars * Define user=fred password=1234" 40 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 43. WORKING WITH PARAMETERS PASS VALUES TO CALLED SCRIPTS •  Substitution variables use $-curly format: ${varname} # login.mt" Vars * Define user=fred password=pw123" Input username EnterText ${user}! Input password EnterText ${password}! Button OK Tap" Label message Verify “Welcome ${user}!" •  Call  ther  Script   # Call Script # Call Script with substitution values for user and password" login.mt Run ethel secret234" with default values (fred pw123)" login.mt Run" 41 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 44. DATA-DRIVING A SCRIPT RUNNING A SCRIPT FOR EACH DATA ROW FROM A FILE •  Use the RunWith action to pass a CSV (comma-separatedvalues) file to a script •  First line of CSV must contain parameter names corresponding to the columns of data stored in the file •  Script is called once for each data line in the file Script login.mt RunWith logins.csv" logins.csv   user, password" fred, pw123" Johnr, secrets" sally, m0nday "   # login.mt" Vars * Define user=fred password=pw123" Input username EnterText ${user}" Input password EnterText ${password}" Button OK Tap" Label message Verify “Welcome ${user}!" 42 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 45. TEST SUITES RUNS MULTIPLE SCRIPTS WITH AGGREGATE RECORDING •  Right-click on a project to create a test suite 43 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 46. SUITES CALL SCRIPTS OR OTHER SUITES SUITES MAKE IT EASY TO RUN COLLECTIONS OF TESTS •  Suite files have an .mts extenstion •  Four types of commands permitted -  -  -  -  Test – runs a script as a test Suite – runs another suite SetUp – a script to run before each test in the suite TearDown – a script to run after each test in a suite •  Both Run (with args) and RunWith (with csv) supported •  Suites can call other suites Suite CoreTests.mts Run" Suite MoreTests.mts Run" 44 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 47. SUITE RESULT REPORTING DISPLAYED IN IDE AND SAVED IN REPORTS FOLDER 45 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 48. CUSTOM COMMANDS MONKEYTALK CAN BE EXTENDED WITH NEW COMMANDS CustomCmdName monkeyIdArg CustomActionName args…" •  Define a custom command by saving a script with a 2-part name of the form CmdName.ActionName.mt •  Optionally use the %{monkeyId} built-in substituion variable to access monkeyId argument value 46 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 49. USING CUSTOM COMMANDS CALL USING COMMAND OR RUN SYNTAX •  Command Syntax User ethel Login secret123" •  Use Script Syntax for data-driving (monkeyId set to script name) Script user.login.mt RunWith logins.csv" •  Call Custom Commands From Suites by Invoking as Tests Test user.login.mt Run ethel secret123" 47 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 50. GENERATING JAVASCRIPT USE MONKEYTALK JAVASCRIPT API FOR COMPLEX SCRIPT LOGIC •  The JavaScript Tab displays a JavaScript function generated from the MonkeyTalk Script •  Export button Opens JavaScript Editor 48 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 51. EDIT AND SAVING A SCRIPT CLICKING THE EXPORT BUTTON OPENS JAVASCRIPT EDITOR •  Edit to add any required additional logic 49 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 52. CALLING JAVASCRIPT FROM MONKEYTALK CALL JAVASCRIPT LIKE ANY OTHER MONKEYTALK SCRIPT •  Call .js Script Files in Same Way as .mt Scripts •  JavaScript  Can  Also  Be  Data-­‐Driven   Script login.js RunWith logins.csv" 50 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 53. JAVASCRIPT API MIRRORS MONKEYTALK COMMAND SYNTAX #  BuKon  OK  Tap   this.app.bu=on(“OK”).tap()     #  Input  firstname  EnterText  fred   this.app.input(“firstname”).enterText(“fred”);     #  Label  message  Verify  “Hello,  fred”   this.app.label(“message”).verify(“Hello,  fred”);     #  Script  login.mt  Run  ethel  secret123   this.app.script(“login.mt”).run(“ethel”,  “secret123”);   #  Script  login.mt  RunWith  logins.csv   this.app.script(“login.mt”).runWith(“logins.csv”);     #  Custom  commands  too   #  User  ethel  Login  secret123   this.app.user(“ethel”).login(“secret123”)   51 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 54. CUSTOM COMMANDS IN JAVASCRIPT JAVASCRIPT CAN BE CALLED AS CUSTOM COMMAND •  Give JavaScript file a two-part, Command.Action.js name. •  Call  user.login.js   User ethel Login secret123" 52 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 55. OVERRIDING AN .MT SCRIPT JAVASCRIPT OVERRIDES MT FILE WITH SAME NAME •  If no file extension specified, MonkeyTalk looks first for a .js file and if none is found, searches for an .mt file of the same name # Assume both login.js and login.mt files exist" " # Run user.login.js" Script login Run ethel secret123" " # Run user.login.mt" Script login.mt Run ethel secret123" " # Run user.login.js (assuming it exists, otherwise run
 # user.login.mt)" User ethel Login secret123 " 53 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 56. HYBRID NATIVE/WEBVIEW APP TESTING SCRIPT HTML COMPONENTS SAME AS NATIVE ONES •  MonkeyTalk commands also work with embedded web views •  Component Types mapped to HTML tags # Select native tab" TabBar * Select Web" # Tap HTML button" Button “Click Me” Tap" # Select HTML table cell" Table * SelectIndex 3 3" 54 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 57. MOBILE WEB BROWSER APP TESTING THE MONKEYTALK ‘MTBROWSER’ •  Use MTBrowser for mobile web app testing -  Mobile Browsers linked with MonkeyTalk agents •  Supports Browser component actions -  Browser * Open URL -  Browser * Back -  Browser * Forward 55 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 58. CLOUDMONKEY “MOBILE DEVICE FARM IN A BOX” Device  Manager   On-­‐demand   Test  Job   Queue   Test  Jobs   Test  Results   HTML   ConRnuous   IntegraRon   XML   Logs   Job  Output   Screen   Shots   CloudMonkey  On-­‐Premises  Appliance   “Device  Farm  in  a  Box”   56 THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. WWW.GORILLALOGIC.COM  
  • 59. THE TOOL, THE STANDARD, THE CLOUD STU STERN, CEO OF GORILLA LOGIC, INC. STU STERN STU.STERN@GORILLALOGIC.COM