SlideShare a Scribd company logo
HOW TO WRITE A
SYMPHONY OF
DAN CUELLAR
ABOUT THE SPEAKER
DAN CUELLAR
▸Creator of Appium
▸Experienced Software Engineering Manager
▸BS in Computer Science from Carnegie Mellon University
THE INCEPTION OF APPIUM
INSPIRATION
▸Selenium is a great tool for automating web applications
▸There were no good tools for automating mobile applications
▸Why can’t I automate mobile applications like I automate
web applications with Selenium
THE INCEPTION OF APPIUM
LEARNINGS
▸Automation is very generalizable across multiple
platforms/devices
▸Surprisingly little needed to be changed in the WebDriver
protocol to support iOS and Android
▸I should have asked, “Why can’t we automate everything like
I automate web applications with Selenium?”
▸Basing Appium on a widely accepted standard (WebDriver)
facilitating easy adoption and the growth of the Appium user
community
THE INCEPTION OF APPIUM
WHAT’S NEXT?
▸How can we start talking about automation at a more general
level such that we can use one framework to automate
anything?
▸What do we stand to gain from a common automation
standard?
▸How do we get device and operating system vendors on-
board so that this will all work out of the box?
▸No more automation frameworks
MUSIC
THE ULTIMATE PLUG AND PLAY
AN ANALOGY
MUSIC NOTATION
▸ The composer doesn’t know how to
play every instrument in the
orchestra, but can write for all of
them
▸ The musicians control the
instruments based on common
notation
▸ Capabilities constrain which
instruments play which parts
AN ANALOGY
THE WEBDRIVER PROTOCOL FOR
COMPOSERS
▸Instrument Capabilities
▸Name: Piano
▸Range: A1 to C8
▸Polyphony: true
▸Pitch Bends: false
▸Sustain Control: true
AN ANALOGY
IT GETS MORE COMPLICATED
▸A Guitar is polyphonic but…
▸Only 6 notes at a time
▸Each string can produce 1 of 25-ish notes
▸Some fingering would be impossible for a human
▸A Piano has sustain, but in several configurations
▸It can sustain only certain notes, but only in certain
configurations
AN ANALOGY
REPRESENTING COMPLEXITY
▸Capabilities as functions to cover complex states?
▸Each guitar string as its own input?
▸Each hand/foot/finger as an input to the piano?
GENERIC
AUTOMATION
A HIGHER LEVEL OF ABSTRACTION
GENERIC AUTOMATION
QUIRKS OF APPIUM BECAUSE IT’S
BASED ON WEBDRIVER
For a first pass as to what abstractions need to be made, you
can look at Appium’s methods and uncover it’s web-based
automation base:
▸element.click()
▸getPageSource()
▸browser
GENERIC AUTOMATION
OBVIOUS ABSTRACTIONS
▸.click() -> .press()?
▸browser -> device
▸getPageSource -> getUIHierachy()
GENERIC AUTOMATION
HIGHER-LEVEL ABSTRACTIONS
▸Devices have Operating Systems
▸Operating Systems have Applications, Inputs, and Outputs
▸Applications have user interfaces
▸User interfaces have elements
▸Elements are manipulated via inputs to affect outputs
GENERIC AUTOMATION
DEVICE LEVEL
▸Device Capabilities
▸Hardware Buttons (Power, Volume Up/Down)
▸Plug / Unplug Cable
GENERIC AUTOMATION
OPERATING SYSTEM LEVEL
▸Install Application
▸Launch Application
▸Is Application Installed
▸Set Date/Time, Language, etc.
▸Get Input / Output Interfaces
GENERIC AUTOMATION
APPLICATION LEVEL
▸Application Settings
▸Get User Interface Hierarchy
▸Interface with User Interface Element (using associated
inputs / outputs)
GENERIC AUTOMATION
INPUTS / OUTPUTS
▸Press / Gesture at coordinates on Touch Interface
▸Get Screenshot of Graphical Interface
▸Press Mouse Button
▸Type on Keyboard
▸Speak into Microphone
GENERIC AUTOMATION
AN EXAMPLE
▸An HP Pavilion is a device
▸The HP Pavilion has the Windows Operating System
▸Windows has the Firefox Application and a mouse, a display,
and a keyboard
▸The Firefox application has a user interface (web-based
interface)
GENERIC AUTOMATION
ANOTHER EXAMPLE
▸An iPhone is a device
▸An iPhone has the iOS operating system
▸The iOS Operating System has the Spotify application, a
touch input, an audio output, and a graphical output
▸Spotify has a user interface
GENERIC AUTOMATION
EXTENSIONS
▸Bluetooth headphones are an additional output / input (if
there are controls)
▸Should a wearable be represented as an additional input or
output or a separate device?
GAINS
WHY ABSTRACT?
WHY ABSTRACT?
TEST LEVELS
▸Tests can be written at any / all of these levels
▸If a test is written at the application level, then in theory it
could work on any operating system (provided the behavior
matches)
▸If a test is written at OS level then it could be run on any
device that supports that OS
▸Tests are inspectable and self-documenting
WHY ABSTRACT?
PLUG & PLAY
▸If Device and OS vendors are onboard you can add
automate new technologies without having to learn a new
framework
▸You can write tests that are future-proof
▸Onus is on the application developer to provide unified
paradigms and interfaces to support using multiple device
categories
WHY ABSTRACT?
CAPABILITIES
▸By capabilities can I tell where a test can run?
▸Can I add my own domain-specific capabilities to see where
my tests can run
▸Capabilities at application level and operating system level,
not just the device level
WHY ABSTRACT?
APPLICATION CAPABILITIES EXAMPLE
▸App Capabilities
▸Log in
▸Send a message
▸Read a message
WHY ABSTRACT?
IMAGINE…
▸AOL decides to release a new mobile phone operating
system
▸It ships with an automation framework that has binding for
generic automation
▸As a tester you can see what inputs, outputs, and
applications are available
▸You can now automate
WHY ABSTRACT?
IMAGINE…
▸I want to write a test that works across multiple devices
▸I use app-specific capabilities to expose what my app can do
▸I write automation at the application-level and it can run on
many devices
WHY ABSTRACT?
APPLICATION LEVEL AUTOMATION
▸1. Login
▸2. Compose a Message
▸3. Turn off Internet
▸4. Send Message
▸5. Verify Message in Outbox
▸6. Enable Internet Access
▸7. Verify Outbox is Empty
ADOPTION
HOW DO WE GET PEOPLE ON
BOARD?
STARDRIVER EVANGELISM
GAINING TRACTION
▸Build more WebDriver compatible automation frameworks
▸Add WebDriver adapters for those that don’t support it
▸KIF
▸Calabash
▸EarlGrey
▸etc.
▸Start writing an automation standard and stop writing frameworks (i.e.
replace the freshly minted W3C standard)
STARDRIVER EVANGELISM
GETTING THE WORD OUT
▸Conferences
▸Blogs
▸GitHub
▸Your Own Work
Q&A
ASK ME ANYTHING

More Related Content

PPTX
Developing AIR for Android with Flash Professional CS5
PPTX
Developing for Xoom with Flash and AIR
PPTX
Manymo Tool Review
PDF
Mobile Quality Night Vienna 2015 - Testobject Appium in der Cloud
PPTX
#Fame case study
PDF
Desarrollo de app móviles con tecnlogías web
PPTX
Android Flash Development
PPTX
What is Omnis?
Developing AIR for Android with Flash Professional CS5
Developing for Xoom with Flash and AIR
Manymo Tool Review
Mobile Quality Night Vienna 2015 - Testobject Appium in der Cloud
#Fame case study
Desarrollo de app móviles con tecnlogías web
Android Flash Development
What is Omnis?

Similar to How To Write a Symphony of Automation With Appium by Dan Cuellar sauce con18 (20)

PPTX
Appium Overview - by Daniel Puterman
PDF
The Present and Future of Mobile Test Automation with Appium
PPT
PPTX
Appium.pptx
PDF
Designing an effective hybrid apps automation framework
PPT
The Future of Selenium Testing for Mobile Web and Native Apps
PPT
Android & iOS Automation Using Appium
PPTX
Appium overview (Selenium Israel #2, Feb. 2014)
PDF
SauceCon 2017: Making Your Mobile App Automatable
PPT
Using Selenium to Test Native Apps (Wait, you can do that?)
PPTX
appiumpresent-211128171811.pptx projet de presentation
PDF
Introduction to UI Automation Framework
PDF
A Step-by-Step Guide to Test Automation with Appium.pdf
PPTX
Appium - test automation for mobile apps
PPTX
Appium meet up noida
PPTX
Appium solution
PPTX
Appium Presentation
PPTX
Next level of Appium
PPTX
Appium solution artizone
PPTX
When & How to Successfully use Test Automation for Mobile Applications
Appium Overview - by Daniel Puterman
The Present and Future of Mobile Test Automation with Appium
Appium.pptx
Designing an effective hybrid apps automation framework
The Future of Selenium Testing for Mobile Web and Native Apps
Android & iOS Automation Using Appium
Appium overview (Selenium Israel #2, Feb. 2014)
SauceCon 2017: Making Your Mobile App Automatable
Using Selenium to Test Native Apps (Wait, you can do that?)
appiumpresent-211128171811.pptx projet de presentation
Introduction to UI Automation Framework
A Step-by-Step Guide to Test Automation with Appium.pdf
Appium - test automation for mobile apps
Appium meet up noida
Appium solution
Appium Presentation
Next level of Appium
Appium solution artizone
When & How to Successfully use Test Automation for Mobile Applications
Ad

More from Sauce Labs (20)

PDF
Simplify Salesforce Testing with AI-Driven Codeless Tools
PDF
Testing on Mobile Devices with Location Services
PDF
Your Framework for Success: introduction to JavaScript Testing at Scale
PDF
Automating Hybrid Applications with Appium
PDF
Quality at Speed: More API Testing, Less UI Testing
PPTX
Creating Digital Confidence with Test Automation
PDF
Just Enough (Automated) Testing
PDF
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
PDF
How Open Source Helps to Bring Back Product Obsession
PDF
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
PDF
[Deu] Test Automatisierung Mit Web Driver.io
PDF
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
PDF
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
PDF
How to Measure Success in Continuous Testing
PDF
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
PDF
5 Steps to Jump Start Your Test Automation
PDF
Sauce Labs Webinar: Rising Importance of Software Testing
PDF
BDD With Selenide by Hima Bindu Peteti
PDF
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
PDF
Continuous Delivery for "Mature" Codebases by Melisa Benua
Simplify Salesforce Testing with AI-Driven Codeless Tools
Testing on Mobile Devices with Location Services
Your Framework for Success: introduction to JavaScript Testing at Scale
Automating Hybrid Applications with Appium
Quality at Speed: More API Testing, Less UI Testing
Creating Digital Confidence with Test Automation
Just Enough (Automated) Testing
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
How Open Source Helps to Bring Back Product Obsession
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
[Deu] Test Automatisierung Mit Web Driver.io
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
How to Measure Success in Continuous Testing
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
5 Steps to Jump Start Your Test Automation
Sauce Labs Webinar: Rising Importance of Software Testing
BDD With Selenide by Hima Bindu Peteti
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Continuous Delivery for "Mature" Codebases by Melisa Benua
Ad

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Big Data Technologies - Introduction.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Empathic Computing: Creating Shared Understanding
MYSQL Presentation for SQL database connectivity
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Spectral efficient network and resource selection model in 5G networks
Unlocking AI with Model Context Protocol (MCP)
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Network Security Unit 5.pdf for BCA BBA.
20250228 LYD VKU AI Blended-Learning.pptx
sap open course for s4hana steps from ECC to s4
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Programs and apps: productivity, graphics, security and other tools
Big Data Technologies - Introduction.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Chapter 3 Spatial Domain Image Processing.pdf
Understanding_Digital_Forensics_Presentation.pptx
Empathic Computing: Creating Shared Understanding

How To Write a Symphony of Automation With Appium by Dan Cuellar sauce con18

  • 1. HOW TO WRITE A SYMPHONY OF DAN CUELLAR
  • 2. ABOUT THE SPEAKER DAN CUELLAR ▸Creator of Appium ▸Experienced Software Engineering Manager ▸BS in Computer Science from Carnegie Mellon University
  • 3. THE INCEPTION OF APPIUM INSPIRATION ▸Selenium is a great tool for automating web applications ▸There were no good tools for automating mobile applications ▸Why can’t I automate mobile applications like I automate web applications with Selenium
  • 4. THE INCEPTION OF APPIUM LEARNINGS ▸Automation is very generalizable across multiple platforms/devices ▸Surprisingly little needed to be changed in the WebDriver protocol to support iOS and Android ▸I should have asked, “Why can’t we automate everything like I automate web applications with Selenium?” ▸Basing Appium on a widely accepted standard (WebDriver) facilitating easy adoption and the growth of the Appium user community
  • 5. THE INCEPTION OF APPIUM WHAT’S NEXT? ▸How can we start talking about automation at a more general level such that we can use one framework to automate anything? ▸What do we stand to gain from a common automation standard? ▸How do we get device and operating system vendors on- board so that this will all work out of the box? ▸No more automation frameworks
  • 7. AN ANALOGY MUSIC NOTATION ▸ The composer doesn’t know how to play every instrument in the orchestra, but can write for all of them ▸ The musicians control the instruments based on common notation ▸ Capabilities constrain which instruments play which parts
  • 8. AN ANALOGY THE WEBDRIVER PROTOCOL FOR COMPOSERS ▸Instrument Capabilities ▸Name: Piano ▸Range: A1 to C8 ▸Polyphony: true ▸Pitch Bends: false ▸Sustain Control: true
  • 9. AN ANALOGY IT GETS MORE COMPLICATED ▸A Guitar is polyphonic but… ▸Only 6 notes at a time ▸Each string can produce 1 of 25-ish notes ▸Some fingering would be impossible for a human ▸A Piano has sustain, but in several configurations ▸It can sustain only certain notes, but only in certain configurations
  • 10. AN ANALOGY REPRESENTING COMPLEXITY ▸Capabilities as functions to cover complex states? ▸Each guitar string as its own input? ▸Each hand/foot/finger as an input to the piano?
  • 12. GENERIC AUTOMATION QUIRKS OF APPIUM BECAUSE IT’S BASED ON WEBDRIVER For a first pass as to what abstractions need to be made, you can look at Appium’s methods and uncover it’s web-based automation base: ▸element.click() ▸getPageSource() ▸browser
  • 13. GENERIC AUTOMATION OBVIOUS ABSTRACTIONS ▸.click() -> .press()? ▸browser -> device ▸getPageSource -> getUIHierachy()
  • 14. GENERIC AUTOMATION HIGHER-LEVEL ABSTRACTIONS ▸Devices have Operating Systems ▸Operating Systems have Applications, Inputs, and Outputs ▸Applications have user interfaces ▸User interfaces have elements ▸Elements are manipulated via inputs to affect outputs
  • 15. GENERIC AUTOMATION DEVICE LEVEL ▸Device Capabilities ▸Hardware Buttons (Power, Volume Up/Down) ▸Plug / Unplug Cable
  • 16. GENERIC AUTOMATION OPERATING SYSTEM LEVEL ▸Install Application ▸Launch Application ▸Is Application Installed ▸Set Date/Time, Language, etc. ▸Get Input / Output Interfaces
  • 17. GENERIC AUTOMATION APPLICATION LEVEL ▸Application Settings ▸Get User Interface Hierarchy ▸Interface with User Interface Element (using associated inputs / outputs)
  • 18. GENERIC AUTOMATION INPUTS / OUTPUTS ▸Press / Gesture at coordinates on Touch Interface ▸Get Screenshot of Graphical Interface ▸Press Mouse Button ▸Type on Keyboard ▸Speak into Microphone
  • 19. GENERIC AUTOMATION AN EXAMPLE ▸An HP Pavilion is a device ▸The HP Pavilion has the Windows Operating System ▸Windows has the Firefox Application and a mouse, a display, and a keyboard ▸The Firefox application has a user interface (web-based interface)
  • 20. GENERIC AUTOMATION ANOTHER EXAMPLE ▸An iPhone is a device ▸An iPhone has the iOS operating system ▸The iOS Operating System has the Spotify application, a touch input, an audio output, and a graphical output ▸Spotify has a user interface
  • 21. GENERIC AUTOMATION EXTENSIONS ▸Bluetooth headphones are an additional output / input (if there are controls) ▸Should a wearable be represented as an additional input or output or a separate device?
  • 23. WHY ABSTRACT? TEST LEVELS ▸Tests can be written at any / all of these levels ▸If a test is written at the application level, then in theory it could work on any operating system (provided the behavior matches) ▸If a test is written at OS level then it could be run on any device that supports that OS ▸Tests are inspectable and self-documenting
  • 24. WHY ABSTRACT? PLUG & PLAY ▸If Device and OS vendors are onboard you can add automate new technologies without having to learn a new framework ▸You can write tests that are future-proof ▸Onus is on the application developer to provide unified paradigms and interfaces to support using multiple device categories
  • 25. WHY ABSTRACT? CAPABILITIES ▸By capabilities can I tell where a test can run? ▸Can I add my own domain-specific capabilities to see where my tests can run ▸Capabilities at application level and operating system level, not just the device level
  • 26. WHY ABSTRACT? APPLICATION CAPABILITIES EXAMPLE ▸App Capabilities ▸Log in ▸Send a message ▸Read a message
  • 27. WHY ABSTRACT? IMAGINE… ▸AOL decides to release a new mobile phone operating system ▸It ships with an automation framework that has binding for generic automation ▸As a tester you can see what inputs, outputs, and applications are available ▸You can now automate
  • 28. WHY ABSTRACT? IMAGINE… ▸I want to write a test that works across multiple devices ▸I use app-specific capabilities to expose what my app can do ▸I write automation at the application-level and it can run on many devices
  • 29. WHY ABSTRACT? APPLICATION LEVEL AUTOMATION ▸1. Login ▸2. Compose a Message ▸3. Turn off Internet ▸4. Send Message ▸5. Verify Message in Outbox ▸6. Enable Internet Access ▸7. Verify Outbox is Empty
  • 30. ADOPTION HOW DO WE GET PEOPLE ON BOARD?
  • 31. STARDRIVER EVANGELISM GAINING TRACTION ▸Build more WebDriver compatible automation frameworks ▸Add WebDriver adapters for those that don’t support it ▸KIF ▸Calabash ▸EarlGrey ▸etc. ▸Start writing an automation standard and stop writing frameworks (i.e. replace the freshly minted W3C standard)
  • 32. STARDRIVER EVANGELISM GETTING THE WORD OUT ▸Conferences ▸Blogs ▸GitHub ▸Your Own Work