Upload
priya-rajagopal
View
319
Download
0
Embed Size (px)
DESCRIPTION
Functional Testing is system level , end-to-end testing of your app from a user's perspective. Automating the process of functional testing of your app offers several benefits – it saves time and effort, it's repeatable, simplifies regression testing, enables testing with large data sets and it can be tied into your Continuous Integration process. UI Automations is an automated functional test framework from Apple. Here, user interactions are driven by test scripts are written in JavaScript and executed using the Instruments Automation tool.
Citation preview
UI Automation : A Primer
Cocoaheads, Ann Arbor October, 2013
About Myself…
Principal Software Developer @ Barracuda Networks Freelance App Developer & Consultant
www.priyaontech.com www.lunariasoftware.com
TwiIer:@rajagp
www.priyaontech.com 2
Test Categories • Unit Testing
o Testing from developer’s perspective. o Testing that a particular function is right o Rest of system mocked up
• Functional Testing o Testing from user’s perspective. o Testing that system behaves right
Today we talk about Functional Testing
www.priyaontech.com 3
Functional Testing -‐‑ Manual
• Pros
o Non programmer can do it o No special hardware/software required o Some aspects have to be manually tested – eg. the actual
rendering, user experience
• Cons o Time consuming (regression, large data sets and use cases) o Lack of Reproducibility/ traceability (“Not sure what I did
exactly to cause the app to crash..”)
www.priyaontech.com 4
Functional Testing -‐‑ Automated
• Pros o Saves time , effort
• Will offset the initial cost of writing the test scripts o Consistency / Repeatable / Traceable o Regression o Large numbers of test data sets o Continuous Integration
• Cons o Need some programming skills
www.priyaontech.com 5
Options
www.priyaontech.com 6
Tool Platform Scripting Language Technical Details
Calabash iOS/Andoird (Device & Simulator)
BDD. Feature descriptions wriIen in Gherkin. Test steps in Ruby.
Uses Cucumber for driving tests. A HTTP bounjour server runs in your app and accepts commands from test driver (HTTP/JSON). Open Source. Uses Private APIs
Frank iOS (Device & Simulator)
BDD. Feature descriptions wriIen in Gherkin. Test steps in Ruby.
Uses Cucumber for driving tests. A HTTP Frank server runs in your app and accepts commands from test driver over “Franky” protocol (HTTP/JSON). Open Source Uses Private APIs
KIF iOS ( Simulator/device)
Objective-‐‑C Framework integrated into app. No HTTP server or external driver. Open Source. Uses Private APIs
Options
www.priyaontech.com 7
Tool Platform Scripting Language Technical Details
Fone Monkey/ Monkey Talk
iOS/Andoird (Device & Simulator) & Web Apps
JS, Obj-‐‑C, monkeyTalk scripts
Record actions using MonkeyTalk console, save/edit script & playback. Open Source . Premium Support will cost $$$
We’ll discuss UIAutomations today
UI Automation • Automated functional test framework
from Apple • UI interactions with app driven using
test scripts • Test scripts written in Javascript • Test scripts executed using
“Automation” instrument • Actively developed & maintained
(well….maybe) www.priyaontech.com 8
UI Automation • Good user interaction coverage • Can work with no/minimal app
changes (recommend UIAccessibility) • Works on simulators and devices • Only on apps that are signed with
development profile • Simplicity
www.priyaontech.com 9
UI Accessibility • Informal Protocol • Interface to assist people with disabilities • Uniquely identify every element in the view
hierarchy • Every UIKit element can be specified to be
accessible, using "label" attribute • Recommended to use w/ UI Automations
o In order to interact with an element, you need to identify it
• Identifying element by position makes script fragile
www.priyaontech.com 10
UI Accessibility Rules • Individual View
o Enable Accessibility o Set Accessibility Label on the view
• Container View o Disable Accessibility on container view o Enable Accessibility on every contained view
that you want accessible o Specify Labels for container and contained views
www.priyaontech.com 11
UI Element Hierarchy
www.priyaontech.com 12
Target
Application
Window
View View
UIATarget.localTarget()
.frontMostApp()
.mainWindow()
[UIAElement].logElementTree()
Tuneup.js • A set of Javascript utilities to facilitate writing
of UIAutomation scripts • Lot of convenience Wrapper functions to
handle repetitive tasks(isDeviceiPad, isDeviceiPhone ,assertLeftButtonNamed …)
• Enforce a structure to your test scripts – Invoke “test” function
• Alex Vollmer, http://www.tuneupjs.org
www.priyaontech.com 13
Demo Get it at : hIp://priyaontech.com/ndownloads
www.priyaontech.com 14
Thank you! Further Reading : Test iOS Apps with UI Automation Bug Hunting Made Easy
By Jonathan Penn
www.priyaontech.com @rajagp
www.priyaontech.com 15