SlideShare a Scribd company logo
Appium Better Practices
Lessons learned the hard way
Matt Isaacs
Gilt
What is Gilt
Short story
Luxe brands up to 60% off
Inventory changes daily.
- Sales last 36 hours.
Sales start at noon ET.
- Bonus sales at 9PM, Sundays and Wednesdays.
Gilt Mobile
Goals
Understand how users use their devices.
Understand the capabilities of each device.
Understand our users and how the want to interact with Gilt.
Put these all together to create experiences that surprise and delight our users.
A brief tour
How we roll
By hand, with rigorous QA.
Engineers focus on app features + performance + fixes.
QA crew in Jordan takes over at the end of the day.
Repeat.
Seems to be working
"Perfect App !!! Well done"
"Awesome app! Love it!"
"OMG! Amazing!"
"Your app is great and keeps getting better."
"I LOOOOOOOVE YOU GUYS AND YOUR APP!"
Or is it..
"Since your update this app runs slower than ever"
"How do you get rid of this. It is like a incurable disease."
"Never using again. Sister and mom and friends have removed also. Horrible"
Some issues aren't Gilt Mobile's fault. But still..
It gets worse
Mobile First. So hot right now
Revenue from Mobile at ~40% and growing.
Future of Gilt is in our hands.
Increasingly involved with other teams at Gilt.
Negative experience becomes more costly.
Informal Process
Doesn't scale!
Leads to questions:
- Who's doing the build tonight?
- What's in this build?
- Which build must QA test?
Unit tests are run at the discretion of today's hand roller.
Surprise! Tests never get run.
What does it mean?
Potential for wasted QA time is high.
Expensive resource being used improperly.
Tough for outsiders to work with Gilt Mobile.
More shocking: We're not the only ones.
How can this be?
Tools have not kept up.
Apple tools lean in favour of the IDE.
xcodebuild test issues.
UIAutomation is part of intsruments.
XCode Bots is nice, but not quite ready.
Our way is easier.
Time for change
Road to automating
Change gradually.
CI - Nightly builds with Jenkins.
Internal distribution. Dogfooding!
Dust off old unit testing efforts.
UI Testing
What's the big deal with UI tests
Special time saving powers for QA.
Sanity tests are time consuming.
STR can also be time consumig.
UI tests are QA enablers.
Appium
Why?
Philosophy works for us.
Test the app you release
Language/Framework independent.
Uses popular standard API - Selenium WebDriver.
Thriving open source community.
Support for multiple mobile platforms.
Sounds great but...
Sometimes tests work. Sometimes they don't.
Reliability issues widespread enough to prompt development of Flaky tool.
UIAutomation is the root of a lot of the chaos.
- "Instruments unexpectedly quit"
- Random delays when searching tableviews.
Sometimes Apple breaks it altogether - Xcode 5.0.1.
Expect some misery on iOS + XCode major releases.
One test at a time. Sauce has you covered.
The setup at Gilt
Basic set of sanity tests.
- New user registration.
- Existing user sign on.
- Product purchase flow.
- Product Waitlist flow.
Scala + ScalaTest. Allows us to leverage existing Selenium infrastructure. Why reinvent
the wheel?
Still a little too brittle.
Some lessons learned.
Accessibility
Not just good for your user base.
UIAutomation leverages accessibility to drive your app.
Accessibility = Testability.
Setting AccessibilityLabel and isAccessibilityElement only takes you so far.
Container views are troublesome. If marked as accessible, their contents will be
masked. UIAccessibilityContainer has you covered.
The special case
Table cells are containers and so need the aforementioned special care.
UIAccessibilityContainer might not be necessary.
Set the accessibility label of the cell, unless you like surprises.
Product Detail Page Example
PDP Navbar title AccessibilityLabel = Product Name (which is what it should be)
How can a test identify this page?
Dynamic Accessibility labels? UIAccessibilityIdentification is for you.
"Using an identifier allows you to avoid inappropriately setting or accessing an
element’s accessibility label."
Complex actions.
What if we want to search for unavailable products?
For each sale:
- Wait for the product list and inventory to load,
- Search elements for "Sold Out" or "Reserved"
- Do some string processing to determine which of the products for a given cell is
unavailable.
Or we could just use our API.
Complex navigations and searches with many moving parts can be susceptible to
reliability issues.
Patterns
Action - Locator has a couple issues that are more promininent on mobile.
- No state. What page am I on?
- No convetion: When do I check page? Before or after?
- Found ourselves fine tuning delays.
Page Objects formalize some conventions on top of Actions and Locators.
- All actions return page objects
- No assertions in page object actions.
Never reuse page objects. Element IDs sometimes change.
Some page actions dont always return the same page. Use page source to identify
page.
Since we dont have the luxury of navigating by URL.
- Restart the driver
- Recovery calls
Final nugget of sage wisdom
Be wary of "clever" UI hacks. Expect testing + accessibility misery.
Pass throughs and overlays:
- Underlying views may be visible by you, but can't be acted upon because they are
"hidden".
- Tests become an error prone jumble of "mobile: tap" calls.
Appium needs you
Use it.
File those radar issues for Instruments and UIAutomation.
Contribute to Appium! - https://github.com/appium
IRC: #appium on freenode
Special Thanks
Sauce for hosting.
Appium community.
Everyone that joined and is still with us.
Thank you
Matt Isaacs
Gilt
http://gilt.com (http://gilt.com)
@gilttech (http://twitter.com/gilttech)
@haveahennessy (http://twitter.com/haveahennessy)

More Related Content

What's hot

Horseshoes, Hand Grenades, and Agile - Where CLOSE Counts
Horseshoes, Hand Grenades, and Agile - Where CLOSE CountsHorseshoes, Hand Grenades, and Agile - Where CLOSE Counts
Horseshoes, Hand Grenades, and Agile - Where CLOSE Counts
Scott Pringle
 
Making JavaScript Accessible
Making JavaScript AccessibleMaking JavaScript Accessible
Making JavaScript Accessible
Dennis Lembree
 
Shift left-devoxx-pl
Shift left-devoxx-plShift left-devoxx-pl
Shift left-devoxx-pl
John Ferguson Smart Limited
 
Key note Manish and Deepa
Key note Manish and DeepaKey note Manish and Deepa
Key note Manish and Deepa
vodQA
 
Appurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CIAppurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CI
Manish Lachwani
 
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Pebble Technology
 
b4usolution_Appium Mobile Automation Testing Made Awesome
b4usolution_AppiumMobile Automation Testing Made Awesomeb4usolution_AppiumMobile Automation Testing Made Awesome
b4usolution_Appium Mobile Automation Testing Made Awesome
b4usolution .
 
Java script framework-roller-coaster
Java script framework-roller-coasterJava script framework-roller-coaster
Java script framework-roller-coaster
Ryan McColeman
 
Google Mobileageddon: Sydney Product Mavens Meetup April, 15th
Google Mobileageddon: Sydney Product Mavens Meetup April, 15thGoogle Mobileageddon: Sydney Product Mavens Meetup April, 15th
Google Mobileageddon: Sydney Product Mavens Meetup April, 15th
Lisa Davis
 
Building Drupal Apps for Distributions
Building Drupal Apps for DistributionsBuilding Drupal Apps for Distributions
Building Drupal Apps for Distributions
Phase2
 
Testing for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityTesting for Inclusive Web: Accessibility
Testing for Inclusive Web: Accessibility
Manoj Kumar Kumar
 
Failing @ Scaling Agile? Don’t Panic! & Carry a Towel
Failing @ Scaling Agile? Don’t Panic! & Carry a TowelFailing @ Scaling Agile? Don’t Panic! & Carry a Towel
Failing @ Scaling Agile? Don’t Panic! & Carry a Towel
Em Campbell-Pretty
 
System Center Universe 2015 - Monitoring of the SQL Server with System Center
System Center Universe 2015 - Monitoring of the SQL Server with System CenterSystem Center Universe 2015 - Monitoring of the SQL Server with System Center
System Center Universe 2015 - Monitoring of the SQL Server with System Center
Roman Yuferev
 
A Principles Based Approach to SAFe
A Principles Based Approach to SAFeA Principles Based Approach to SAFe
A Principles Based Approach to SAFe
Em Campbell-Pretty
 
The API and APP-ification of the Web
The API and APP-ification of the WebThe API and APP-ification of the Web
The API and APP-ification of the Web
3scale
 
8 Blind Spots Often Overlooked When Testing on Mobile
8 Blind Spots Often Overlooked When Testing on Mobile8 Blind Spots Often Overlooked When Testing on Mobile
8 Blind Spots Often Overlooked When Testing on Mobile
Neotys
 
Api Days Berlin - Continuous Updating
Api Days Berlin - Continuous UpdatingApi Days Berlin - Continuous Updating
Api Days Berlin - Continuous Updating
Robert Reiz
 
Why is mobile testing important?
Why is mobile testing important?Why is mobile testing important?
Why is mobile testing important?
TobieDk
 
Develop Like a Designer: The Art of APIs
Develop Like a Designer: The Art of APIsDevelop Like a Designer: The Art of APIs
Develop Like a Designer: The Art of APIs
Jenny Wanger
 

What's hot (19)

Horseshoes, Hand Grenades, and Agile - Where CLOSE Counts
Horseshoes, Hand Grenades, and Agile - Where CLOSE CountsHorseshoes, Hand Grenades, and Agile - Where CLOSE Counts
Horseshoes, Hand Grenades, and Agile - Where CLOSE Counts
 
Making JavaScript Accessible
Making JavaScript AccessibleMaking JavaScript Accessible
Making JavaScript Accessible
 
Shift left-devoxx-pl
Shift left-devoxx-plShift left-devoxx-pl
Shift left-devoxx-pl
 
Key note Manish and Deepa
Key note Manish and DeepaKey note Manish and Deepa
Key note Manish and Deepa
 
Appurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CIAppurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CI
 
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
Thomas Sarlandie Kickoff Talk | Pebble Developer Retreat 2014
 
b4usolution_Appium Mobile Automation Testing Made Awesome
b4usolution_AppiumMobile Automation Testing Made Awesomeb4usolution_AppiumMobile Automation Testing Made Awesome
b4usolution_Appium Mobile Automation Testing Made Awesome
 
Java script framework-roller-coaster
Java script framework-roller-coasterJava script framework-roller-coaster
Java script framework-roller-coaster
 
Google Mobileageddon: Sydney Product Mavens Meetup April, 15th
Google Mobileageddon: Sydney Product Mavens Meetup April, 15thGoogle Mobileageddon: Sydney Product Mavens Meetup April, 15th
Google Mobileageddon: Sydney Product Mavens Meetup April, 15th
 
Building Drupal Apps for Distributions
Building Drupal Apps for DistributionsBuilding Drupal Apps for Distributions
Building Drupal Apps for Distributions
 
Testing for Inclusive Web: Accessibility
Testing for Inclusive Web: AccessibilityTesting for Inclusive Web: Accessibility
Testing for Inclusive Web: Accessibility
 
Failing @ Scaling Agile? Don’t Panic! & Carry a Towel
Failing @ Scaling Agile? Don’t Panic! & Carry a TowelFailing @ Scaling Agile? Don’t Panic! & Carry a Towel
Failing @ Scaling Agile? Don’t Panic! & Carry a Towel
 
System Center Universe 2015 - Monitoring of the SQL Server with System Center
System Center Universe 2015 - Monitoring of the SQL Server with System CenterSystem Center Universe 2015 - Monitoring of the SQL Server with System Center
System Center Universe 2015 - Monitoring of the SQL Server with System Center
 
A Principles Based Approach to SAFe
A Principles Based Approach to SAFeA Principles Based Approach to SAFe
A Principles Based Approach to SAFe
 
The API and APP-ification of the Web
The API and APP-ification of the WebThe API and APP-ification of the Web
The API and APP-ification of the Web
 
8 Blind Spots Often Overlooked When Testing on Mobile
8 Blind Spots Often Overlooked When Testing on Mobile8 Blind Spots Often Overlooked When Testing on Mobile
8 Blind Spots Often Overlooked When Testing on Mobile
 
Api Days Berlin - Continuous Updating
Api Days Berlin - Continuous UpdatingApi Days Berlin - Continuous Updating
Api Days Berlin - Continuous Updating
 
Why is mobile testing important?
Why is mobile testing important?Why is mobile testing important?
Why is mobile testing important?
 
Develop Like a Designer: The Art of APIs
Develop Like a Designer: The Art of APIsDevelop Like a Designer: The Art of APIs
Develop Like a Designer: The Art of APIs
 

Similar to Automating Mobile Testing at Gilt with Appium

Mobile Testing at Gilt
Mobile Testing at GiltMobile Testing at Gilt
Mobile Testing at Gilt
Gilt Tech Talks
 
iOS Testing With Appium at Gilt
iOS Testing With Appium at GiltiOS Testing With Appium at Gilt
iOS Testing With Appium at Gilt
Gilt Tech Talks
 
Justin Ison
Justin IsonJustin Ison
Justin Ison
CodeFest
 
Automated Exploratory Testing
Automated Exploratory TestingAutomated Exploratory Testing
Automated Exploratory Testing
Justin Ison
 
Mobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B ExperimentsMobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B Experiments
lacyrhoades
 
Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...
Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...
Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...
Vipin Jain
 
Ui qa tools
Ui qa toolsUi qa tools
Ui qa tools
Sevilla QA
 
Seven Bad Habits to Avoid As a QA Engineer
Seven Bad Habits to Avoid As a QA EngineerSeven Bad Habits to Avoid As a QA Engineer
Seven Bad Habits to Avoid As a QA Engineer
Rock Interview
 
Shift Left Mobile Application Testing
Shift Left Mobile Application TestingShift Left Mobile Application Testing
Shift Left Mobile Application Testing
Josiah Renaudin
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Sauce Labs
 
Introduction to UI Automation Framework
Introduction to UI Automation FrameworkIntroduction to UI Automation Framework
Introduction to UI Automation Framework
Priya Rajagopal
 
Prototype Development in Mobile-Learning Design Research
Prototype Development in Mobile-Learning Design ResearchPrototype Development in Mobile-Learning Design Research
Prototype Development in Mobile-Learning Design Research
Alan Foley
 
Automated UI testing done right (DDDSydney)
Automated UI testing done right (DDDSydney)Automated UI testing done right (DDDSydney)
Automated UI testing done right (DDDSydney)
Mehdi Khalili
 
Colorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latestColorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latest
Onur Baskirt
 
Web Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas VersionWeb Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas Version
Dave Olsen
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
Leif Janzik
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.js
Luís Bastião Silva
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
Alexandru Bolboaca
 
DeKnowledge - Try us
DeKnowledge - Try usDeKnowledge - Try us
DeKnowledge - Try us
Bob Pinto
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
Chen Feldman
 

Similar to Automating Mobile Testing at Gilt with Appium (20)

Mobile Testing at Gilt
Mobile Testing at GiltMobile Testing at Gilt
Mobile Testing at Gilt
 
iOS Testing With Appium at Gilt
iOS Testing With Appium at GiltiOS Testing With Appium at Gilt
iOS Testing With Appium at Gilt
 
Justin Ison
Justin IsonJustin Ison
Justin Ison
 
Automated Exploratory Testing
Automated Exploratory TestingAutomated Exploratory Testing
Automated Exploratory Testing
 
Mobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B ExperimentsMobile App Feature Configuration and A/B Experiments
Mobile App Feature Configuration and A/B Experiments
 
Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...
Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...
Agile and Startups - What can go wrong - a Case study (Presented at ExpoQA 20...
 
Ui qa tools
Ui qa toolsUi qa tools
Ui qa tools
 
Seven Bad Habits to Avoid As a QA Engineer
Seven Bad Habits to Avoid As a QA EngineerSeven Bad Habits to Avoid As a QA Engineer
Seven Bad Habits to Avoid As a QA Engineer
 
Shift Left Mobile Application Testing
Shift Left Mobile Application TestingShift Left Mobile Application Testing
Shift Left Mobile Application Testing
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
 
Introduction to UI Automation Framework
Introduction to UI Automation FrameworkIntroduction to UI Automation Framework
Introduction to UI Automation Framework
 
Prototype Development in Mobile-Learning Design Research
Prototype Development in Mobile-Learning Design ResearchPrototype Development in Mobile-Learning Design Research
Prototype Development in Mobile-Learning Design Research
 
Automated UI testing done right (DDDSydney)
Automated UI testing done right (DDDSydney)Automated UI testing done right (DDDSydney)
Automated UI testing done right (DDDSydney)
 
Colorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latestColorful world-of-visual-automation-testing-latest
Colorful world-of-visual-automation-testing-latest
 
Web Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas VersionWeb Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas Version
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.js
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
DeKnowledge - Try us
DeKnowledge - Try usDeKnowledge - Try us
DeKnowledge - Try us
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
 

More from Sauce Labs

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

More from Sauce Labs (20)

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

Recently uploaded

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 

Recently uploaded (20)

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 

Automating Mobile Testing at Gilt with Appium

  • 1. Appium Better Practices Lessons learned the hard way Matt Isaacs Gilt
  • 3. Short story Luxe brands up to 60% off Inventory changes daily. - Sales last 36 hours. Sales start at noon ET. - Bonus sales at 9PM, Sundays and Wednesdays.
  • 5. Goals Understand how users use their devices. Understand the capabilities of each device. Understand our users and how the want to interact with Gilt. Put these all together to create experiences that surprise and delight our users.
  • 7. How we roll By hand, with rigorous QA. Engineers focus on app features + performance + fixes. QA crew in Jordan takes over at the end of the day. Repeat.
  • 8. Seems to be working "Perfect App !!! Well done" "Awesome app! Love it!" "OMG! Amazing!" "Your app is great and keeps getting better." "I LOOOOOOOVE YOU GUYS AND YOUR APP!"
  • 9. Or is it.. "Since your update this app runs slower than ever" "How do you get rid of this. It is like a incurable disease." "Never using again. Sister and mom and friends have removed also. Horrible" Some issues aren't Gilt Mobile's fault. But still..
  • 11. Mobile First. So hot right now Revenue from Mobile at ~40% and growing. Future of Gilt is in our hands. Increasingly involved with other teams at Gilt. Negative experience becomes more costly.
  • 12. Informal Process Doesn't scale! Leads to questions: - Who's doing the build tonight? - What's in this build? - Which build must QA test? Unit tests are run at the discretion of today's hand roller. Surprise! Tests never get run.
  • 13. What does it mean? Potential for wasted QA time is high. Expensive resource being used improperly. Tough for outsiders to work with Gilt Mobile. More shocking: We're not the only ones.
  • 14. How can this be? Tools have not kept up. Apple tools lean in favour of the IDE. xcodebuild test issues. UIAutomation is part of intsruments. XCode Bots is nice, but not quite ready. Our way is easier.
  • 16. Road to automating Change gradually. CI - Nightly builds with Jenkins. Internal distribution. Dogfooding! Dust off old unit testing efforts. UI Testing
  • 17. What's the big deal with UI tests Special time saving powers for QA. Sanity tests are time consuming. STR can also be time consumig. UI tests are QA enablers.
  • 19. Why? Philosophy works for us. Test the app you release Language/Framework independent. Uses popular standard API - Selenium WebDriver. Thriving open source community. Support for multiple mobile platforms.
  • 20. Sounds great but... Sometimes tests work. Sometimes they don't. Reliability issues widespread enough to prompt development of Flaky tool. UIAutomation is the root of a lot of the chaos. - "Instruments unexpectedly quit" - Random delays when searching tableviews. Sometimes Apple breaks it altogether - Xcode 5.0.1. Expect some misery on iOS + XCode major releases. One test at a time. Sauce has you covered.
  • 21. The setup at Gilt Basic set of sanity tests. - New user registration. - Existing user sign on. - Product purchase flow. - Product Waitlist flow. Scala + ScalaTest. Allows us to leverage existing Selenium infrastructure. Why reinvent the wheel? Still a little too brittle.
  • 23. Accessibility Not just good for your user base. UIAutomation leverages accessibility to drive your app. Accessibility = Testability. Setting AccessibilityLabel and isAccessibilityElement only takes you so far. Container views are troublesome. If marked as accessible, their contents will be masked. UIAccessibilityContainer has you covered.
  • 24. The special case Table cells are containers and so need the aforementioned special care. UIAccessibilityContainer might not be necessary. Set the accessibility label of the cell, unless you like surprises.
  • 25. Product Detail Page Example PDP Navbar title AccessibilityLabel = Product Name (which is what it should be) How can a test identify this page? Dynamic Accessibility labels? UIAccessibilityIdentification is for you. "Using an identifier allows you to avoid inappropriately setting or accessing an element’s accessibility label."
  • 26. Complex actions. What if we want to search for unavailable products? For each sale: - Wait for the product list and inventory to load, - Search elements for "Sold Out" or "Reserved" - Do some string processing to determine which of the products for a given cell is unavailable. Or we could just use our API. Complex navigations and searches with many moving parts can be susceptible to reliability issues.
  • 27. Patterns Action - Locator has a couple issues that are more promininent on mobile. - No state. What page am I on? - No convetion: When do I check page? Before or after? - Found ourselves fine tuning delays. Page Objects formalize some conventions on top of Actions and Locators. - All actions return page objects - No assertions in page object actions. Never reuse page objects. Element IDs sometimes change. Some page actions dont always return the same page. Use page source to identify page. Since we dont have the luxury of navigating by URL. - Restart the driver - Recovery calls
  • 28. Final nugget of sage wisdom Be wary of "clever" UI hacks. Expect testing + accessibility misery. Pass throughs and overlays: - Underlying views may be visible by you, but can't be acted upon because they are "hidden". - Tests become an error prone jumble of "mobile: tap" calls.
  • 29. Appium needs you Use it. File those radar issues for Instruments and UIAutomation. Contribute to Appium! - https://github.com/appium IRC: #appium on freenode
  • 30. Special Thanks Sauce for hosting. Appium community. Everyone that joined and is still with us.
  • 31. Thank you Matt Isaacs Gilt http://gilt.com (http://gilt.com) @gilttech (http://twitter.com/gilttech) @haveahennessy (http://twitter.com/haveahennessy)