SlideShare a Scribd company logo
1 of 15
Analytics Testing for iOS
Apps
Igor Dorovskikh
Engineering Manager at Tinder
Boris Gurtovoy
iOS Engineer at Tinder
“Management DO NOT fully trust the
data and analytics on which they are
basing their decisions”
Dr. Thomas Erwin, KPMG
B2C Analytics
• Convert first time users to long term
customers
• Provide customer with product they
desire
Why should I care?
• Analytics is everywhere – Google,
Facebook, Amazon…
• Companies make smart decisions base on
analytics data
• QA is being left behind
Manual Testing is Time Consuming
• Manual testing of Mobile clients is
somewhat cumbersome and requires
proxy tool as Charles.
• It is hard to test since data thrown off to
an Anytics server is not human readable
• Sometimes sent in batches, not per event
thus hard to catch duplication
A/B Testing
• A is existing screen
• B is an experiment
Manual Test Cycle for Mobile Apps
1. Open Charles Proxy
2. Launch simulator
3. Perform user actions
4. Check analytics events being fired during
session
Automating Analytics on iOS
What is XCTest/XCUITest?
• Integral framework in Xcode
• Exists since Xcode 7
• Part of XCTest library with extra classes for
UI tests
• Still evolving – parallel testing only
introduced in Xcode 10
Pros of XCUITest
• Apple’s native framework
• Easy to learn, no additional installations or
components required (to Xcode)
• Xcode Test Recorder (for XCUITest)
• Faster than many other popular functional
(and cross-platform) test frameworks
• Works with both Swift and Objective-C
Ambassador
How to Automate iOS Analytics?
lightweight HTTP server written in swift
https://github.com/envoy/Ambassador
Automation Test Cycle
• App is configured to hit lightweight http server
on localhost
• Automated Test perform action that should fire
particular analytics' event
• Upon event fired, we intercepted with
Amabassador and compare fired event with
expected json template
• Check for order of events fired and duplicates
Automating iOS App's Analytics with XCUITest
Automating iOS App's Analytics with XCUITest

More Related Content

Similar to Automating iOS App's Analytics with XCUITest

Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuit
Tina Su
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuit
Tina Su
 
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo EuteneuerStop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
JAXLondon_Conference
 

Similar to Automating iOS App's Analytics with XCUITest (20)

Juc oct 2014 final
Juc oct 2014 finalJuc oct 2014 final
Juc oct 2014 final
 
Agile Mobile Testing Workshop
Agile Mobile Testing WorkshopAgile Mobile Testing Workshop
Agile Mobile Testing Workshop
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Shift Left Mobile Application Testing
Shift Left Mobile Application TestingShift Left Mobile Application Testing
Shift Left Mobile Application Testing
 
Bugday bkk-2014 nitisak-auto_perf
Bugday bkk-2014 nitisak-auto_perfBugday bkk-2014 nitisak-auto_perf
Bugday bkk-2014 nitisak-auto_perf
 
Droid con slides 2013 mobileci-v1.0
Droid con slides 2013  mobileci-v1.0Droid con slides 2013  mobileci-v1.0
Droid con slides 2013 mobileci-v1.0
 
Thomas Haver - Mobile Testing.pdf
Thomas Haver - Mobile Testing.pdfThomas Haver - Mobile Testing.pdf
Thomas Haver - Mobile Testing.pdf
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuit
 
Speed to Market in Mobile Development
Speed to Market in Mobile DevelopmentSpeed to Market in Mobile Development
Speed to Market in Mobile Development
 
Velocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuitVelocity2013 mobile ci_intuit
Velocity2013 mobile ci_intuit
 
Mobile Automation Meetup Presentation [English]
Mobile Automation Meetup Presentation [English]Mobile Automation Meetup Presentation [English]
Mobile Automation Meetup Presentation [English]
 
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo EuteneuerStop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
 
Mobile Application Testing Training Presentation
Mobile Application Testing Training PresentationMobile Application Testing Training Presentation
Mobile Application Testing Training Presentation
 
Automated testing san francisco oct 2013
Automated testing san francisco oct 2013Automated testing san francisco oct 2013
Automated testing san francisco oct 2013
 
Velocity Conference: Increasing Speed To Market In Mobile Development Through...
Velocity Conference: Increasing Speed To Market In Mobile Development Through...Velocity Conference: Increasing Speed To Market In Mobile Development Through...
Velocity Conference: Increasing Speed To Market In Mobile Development Through...
 
Android Apps Testing in 2019
Android Apps Testing in 2019Android Apps Testing in 2019
Android Apps Testing in 2019
 
Building Mobile (app) Masterpiece with Distributed Agile
Building Mobile (app) Masterpiece with Distributed AgileBuilding Mobile (app) Masterpiece with Distributed Agile
Building Mobile (app) Masterpiece with Distributed Agile
 
NYC MeetUp 10.9
NYC MeetUp 10.9NYC MeetUp 10.9
NYC MeetUp 10.9
 
Software testing
Software testingSoftware testing
Software testing
 

Recently uploaded

Blockchain Platforms for Developing DApps
Blockchain Platforms for Developing DAppsBlockchain Platforms for Developing DApps
Blockchain Platforms for Developing DApps
Intelisync
 
原版定制英国伦敦大学金史密斯学院毕业证原件一模一样
原版定制英国伦敦大学金史密斯学院毕业证原件一模一样原版定制英国伦敦大学金史密斯学院毕业证原件一模一样
原版定制英国伦敦大学金史密斯学院毕业证原件一模一样
AS
 
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Cara Menggugurkan Kandungan 087776558899
 

Recently uploaded (9)

Blockchain Platforms for Developing DApps
Blockchain Platforms for Developing DAppsBlockchain Platforms for Developing DApps
Blockchain Platforms for Developing DApps
 
Mobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsMobile Application Development-Components and Layouts
Mobile Application Development-Components and Layouts
 
Abortion pills in Riyadh+966572737505 cytotec jeddah
Abortion pills in Riyadh+966572737505 cytotec jeddahAbortion pills in Riyadh+966572737505 cytotec jeddah
Abortion pills in Riyadh+966572737505 cytotec jeddah
 
原版定制英国伦敦大学金史密斯学院毕业证原件一模一样
原版定制英国伦敦大学金史密斯学院毕业证原件一模一样原版定制英国伦敦大学金史密斯学院毕业证原件一模一样
原版定制英国伦敦大学金史密斯学院毕业证原件一模一样
 
Android Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesAndroid Application Components with Implementation & Examples
Android Application Components with Implementation & Examples
 
Mobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsMobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s Tools
 
Mobile App Penetration Testing Bsides312
Mobile App Penetration Testing Bsides312Mobile App Penetration Testing Bsides312
Mobile App Penetration Testing Bsides312
 
Mobile Application Development- Configuration and Android Installation
Mobile Application Development- Configuration and Android InstallationMobile Application Development- Configuration and Android Installation
Mobile Application Development- Configuration and Android Installation
 
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
 

Automating iOS App's Analytics with XCUITest

  • 2. Igor Dorovskikh Engineering Manager at Tinder Boris Gurtovoy iOS Engineer at Tinder
  • 3. “Management DO NOT fully trust the data and analytics on which they are basing their decisions” Dr. Thomas Erwin, KPMG
  • 4. B2C Analytics • Convert first time users to long term customers • Provide customer with product they desire
  • 5. Why should I care? • Analytics is everywhere – Google, Facebook, Amazon… • Companies make smart decisions base on analytics data • QA is being left behind
  • 6. Manual Testing is Time Consuming • Manual testing of Mobile clients is somewhat cumbersome and requires proxy tool as Charles. • It is hard to test since data thrown off to an Anytics server is not human readable • Sometimes sent in batches, not per event thus hard to catch duplication
  • 7. A/B Testing • A is existing screen • B is an experiment
  • 8. Manual Test Cycle for Mobile Apps 1. Open Charles Proxy 2. Launch simulator 3. Perform user actions 4. Check analytics events being fired during session
  • 10. What is XCTest/XCUITest? • Integral framework in Xcode • Exists since Xcode 7 • Part of XCTest library with extra classes for UI tests • Still evolving – parallel testing only introduced in Xcode 10
  • 11. Pros of XCUITest • Apple’s native framework • Easy to learn, no additional installations or components required (to Xcode) • Xcode Test Recorder (for XCUITest) • Faster than many other popular functional (and cross-platform) test frameworks • Works with both Swift and Objective-C
  • 12. Ambassador How to Automate iOS Analytics? lightweight HTTP server written in swift https://github.com/envoy/Ambassador
  • 13. Automation Test Cycle • App is configured to hit lightweight http server on localhost • Automated Test perform action that should fire particular analytics' event • Upon event fired, we intercepted with Amabassador and compare fired event with expected json template • Check for order of events fired and duplicates

Editor's Notes

  1. Poll – about analytics knowledge
  2. Web demo of Tinder
  3. Poll – have you heard about mock/stubbing?