SlideShare a Scribd company logo
iOS Parallel Automation:
Run faster than fast!
Viktar Karanevich
Content:
I. History of iOS Automation Frameworks (5 min)
II. Path to Current Approach at Badoo (10 min)
III. Summary (5 min)
IV. Movie: Test Run (3 min)
self.introduce =>
{
name: "Viktar Karanevich",
title: ["SSTAE", "SSDET", "SQAAE"],
languages: ["Java", "Ruby"],
experience: "iOS Automation 7+ years"
}
The original, largest and leading dating network:
330M+ registered users
800+ automated tests on iOS platform
50M+ downloads on iOS
Steve Jobs
Steve
Wozniak
I. History
Jun 2010
UI Automation
Apple
Jun 2010
UI Automation
Sep 2014
UI Automation
xcrun simctl
Apple
"xcrun simctl" is introduced in xCode 6
It is command line utility to control the Simulator
(create, delete, erase, install, uninstall, ...).
Jun 2010
UI Automation
Sep 2015
UI Automation
xcrun simctl
UI Testing
Apple
UI Testing is introduced as replacement
for UIAutomation in xCode 7
Sep 2014
UI Automation
xcrun simctl
Jun 2010
UI Automation
Sep 2016
UI Testing
xcrun simctl
Apple
Sep 2015
UI Automation
xcrun simctl
UI Testing
Sep 2014
UI Automation
xcrun simctl
UI Automation removed in xCode 8
Jun 2010
UI Automation
Sep 2014
xcrun simctl
Sep 2016
UI Testing
Sep 2016
UI Testing
Apple
Calabash
Nov 2009
UI Spec
Calabash
Nov 2009
UI Spec
Feb 2011
Frank
Calabash
Nov 2009
UI Spec
Feb 2011
Frank
Jan 2012
Calabash
Step Definitions
Ruby Client Library
Features
Developer host
Calabash server
Simulator
Your app
UIQuery
Touch Actions
Calabash
Apr 2013
Calabash +
UIAutomation
Link: https://github.com/calabash/run_loop
Step Definitions
Ruby Client Library
Features
Developer host
Calabash server
Simulator
Your app
UIQuery
Run loop:
UIAutomation
Calabash
Sep 2016
Calabash +
DeviceAgent
Link: https://github.com/calabash/run_loop/
tree/develop/lib/run_loop/device_agent
Developer host Simulator
Step Definitions
Ruby Client Library
XCTest Runner
Features
Calabash server
Your app
UIQuery
Device Agent
Calabash
Nov 2009
UI Spec
Feb 2011
Frank
Jan 2012
Calabash
iOSAutomation Frameworks
Apr 2013
Calabash +
UIAutomation
Sep 2016
Calabash +
DeviceAgent
Jun 2010
UI Automation
Sep 2016
UI Testing
xcrun simctl
Sep 2015
UI Automation
xcrun simctl
UI Testing
Sep 2014
UI Automation
xcrun simctl
Apple
3 years 1 year
Calabash
Nov 2009
UI Spec
Feb 2011
Frank
Jan 2012
Calabash
iOSAutomation Frameworks
Apr 2013
Calabash +
UIAutomation
Sep 2016
Calabash +
DeviceAgent
Jun 2010
UI Automation
Sep 2016
UI Testing
xcrun simctl
Sep 2015
UI Automation
xcrun simctl
UI Testing
Sep 2014
UI Automation
xcrun simctl
Apple
3 years 1 year
II. iOS Automation at Badoo
Approach
~80
flaky tests
80
data
fail tests
II. Before Parallel Run
Test Suite Run
Nightly Cucumber Report
Nightmare!
15h
total time
1
simulator
80
data
~500
tests
II. Before Parallel Run
Test Suite Run
Nightly Cucumber Report
Nightmare!
80
data
fail tests
1simulator
Key Issue: How to speed up Test Run?
15h
total time
~500
tests
1
simulator
Let's Parallel!
Let's Parallel!
Blocker Issue:
- Calabash does not support Parallel run on 1 desktop
Let's Parallel
with multi-desktops!
https://techblog.badoo.com
Tim's talk at Badoo: "Parallel Calabash Testing on iOS"
II. Test Result: multi-desktops
~4 hours regression suite run time
5 Desktops
II. Test Result: multi-desktops
Mac PRO (24 cores)
~2 hours regression suite run time
10 Desktops
X Desktops: host limit reached
II. Clustering Hosts
II. Clustering Hosts
- Parallel run on multi (virtual) hosts
- Mac Pro and hosts: test suite - ~1h 30 min
II. Clustering Hosts
Issues:
- multi-desktops start up is Flaky
- simulators can get stuck
II. Clustering Hosts
Is it possible to automate multi-simulators on one desktop?
III. Facebook: Web Driver Agent
Developer host Simulator
Selenium Driver
WDA Runner
Your app
FB UIA WDA
Key Change: Reimplemented UIAutomation dependency
Link: https://github.com/facebook/WebDriverAgent
Profit:
- 7 simulators on single desktop
- More stable! more efficient!
III. Full Migration to FB UIA
WDA
Issues:
- all tests have calabash code
III. Full Migration to FB UIA
WDA
Issues:
- all tests have calabash code
- custom app backdoors
III. Full Migration to FB UIA
WDA
Issues:
- all tests have calabash code
- custom app backdoors
- workarounds and other
III. Full Migration to FB UIA
WDA
Full Migration Costs: ~x hours
Is it possible to do Fast Migration?
III. Calabash + Facebook
Fast migration: Facebash!
Step Definitions
Ruby Client Library
Features
Developer host
Calabash server
Simulator
Your app
UIQuery
Run loop:
UIAutomation
III. Calabash + Facebook
Fast migration: Facebash!
Step Definitions
Ruby Client Library
Features
Developer host
Calabash server
Simulator
Your app
UIQuery
Run loop:
UIAutomation
Developer host Simulator
Step Definitions
Ruby Client Library
WDA Runner
Features
Calabash server
Your app
UIQuery
FB UIA WDA
IV. iOS 10 Update:
from UIAutomation WDAto XCTest WDA
Link: https://github.com/facebook/WebDriverAgent
Developer host Simulator
Selenium Driver
Your app
FB UIA WDA
WDA Runner
IV. iOS 10 Update:
from UIAutomation WDAto XCTest WDA
Link: https://github.com/facebook/WebDriverAgent
Developer host Simulator
Selenium Driver
Your app
FB UIA WDA
Developer host Simulator
Your app
FB XCTest WDA
WDA Runner
Selenium Driver
FB simctl
IV. iOS Hybrid 2.0
iOS 10 update
Developer host Simulator
Step Definitions
Ruby Client Library
WDA Runner
Features
Calabash server
Your app
UIQuery
FB UIA WDA
IV. iOS Hybrid 2.0
iOS 10 update
Developer host Simulator
Step Definitions
Ruby Client Library
WDA Runner
Features
Calabash server
Your app
UIQuery
FB UIA WDA
Developer host Simulator
Step Definitions
Ruby Client Library
FB simctl
Features
Calabash server
Your app
UIQuery
FB XCTest WDA
V. Summary: multi-desktops vs multi-simulators
Test Suite: 500 tests
Nightly Cucumber Report
Happy morning!
80
data
Mac PRO
Test Suite Run Time
0 min
225 min
450 min
675 min
900 min
1 sim 10 sims 16 sims
75 min
120 min
900 min
Multi
Desktops
Multi
Simulators
Developer host Simulator
Step Definitions
Ruby Client Library
FB simctl
Features
Calabash server
Your app
UIQuery
FB XCTest WDA
"Face"book + Cala"bash" = Facebash
V. Summary: current approach
- easy to set up Parallel Run on 1 Desktop
- keep using of backdoors
- full access to internal AUT state
- cross iOS app automation
- iOS simulator control with FBSimCtl
- FB WDA supports Selenium protocol
- FB WDA independent of Calabash/Appium
Facebook
Calabash
Calabash
Facebook
Facebook
Facebook
Facebook
V. Summary: PROs
- support framework parts: calabash server, FB WDA, fbsimctl, ...
- "poor" documentation
- using of mixed locator strategies
V. Summary: PROs and CONs
- Parallel Run in Headless Mode
- Simulator Start/Shutdown/Reset optimization
- Cold/Hot start iOS app with relogin
- record video per the each test in Parallel Run
V. TODO
Thank You!
v.karanevich@corp.badoo.com
Questions?

More Related Content

What's hot

Appium mobile web+dev conference
Appium   mobile web+dev conferenceAppium   mobile web+dev conference
Appium mobile web+dev conference
Isaac Murchie
 
Debugging IE Performance Issues with xperf, ETW and NavigationTiming
Debugging IE Performance Issues with xperf, ETW and NavigationTimingDebugging IE Performance Issues with xperf, ETW and NavigationTiming
Debugging IE Performance Issues with xperf, ETW and NavigationTiming
Nicholas Jansma
 

What's hot (20)

Automated-Testing-inside-containers
Automated-Testing-inside-containersAutomated-Testing-inside-containers
Automated-Testing-inside-containers
 
Sergey Puzankov "How to see a bug the size of 1px"
Sergey Puzankov "How to see a bug the size of 1px"Sergey Puzankov "How to see a bug the size of 1px"
Sergey Puzankov "How to see a bug the size of 1px"
 
Genymotion with Jenkins
Genymotion with JenkinsGenymotion with Jenkins
Genymotion with Jenkins
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play Framework
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSH
 
Titanium appcelerator best practices
Titanium appcelerator best practicesTitanium appcelerator best practices
Titanium appcelerator best practices
 
iOS Automation with Cucumber, Appium and Saucelabs
iOS Automation with Cucumber, Appium and SaucelabsiOS Automation with Cucumber, Appium and Saucelabs
iOS Automation with Cucumber, Appium and Saucelabs
 
Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (English)Chrome Devtools Protocol via Selenium/Appium (English)
Chrome Devtools Protocol via Selenium/Appium (English)
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginners
 
Get that Corner Office with Angular 2 and Electron
Get that Corner Office with Angular 2 and ElectronGet that Corner Office with Angular 2 and Electron
Get that Corner Office with Angular 2 and Electron
 
Appium mobile web+dev conference
Appium   mobile web+dev conferenceAppium   mobile web+dev conference
Appium mobile web+dev conference
 
Rick Blalock: Your Apps are Leaking - Controlling Memory Leaks
Rick Blalock: Your Apps are Leaking - Controlling Memory LeaksRick Blalock: Your Apps are Leaking - Controlling Memory Leaks
Rick Blalock: Your Apps are Leaking - Controlling Memory Leaks
 
Selenium, Appium, and Robots!
Selenium, Appium, and Robots!Selenium, Appium, and Robots!
Selenium, Appium, and Robots!
 
Debugging IE Performance Issues with xperf, ETW and NavigationTiming
Debugging IE Performance Issues with xperf, ETW and NavigationTimingDebugging IE Performance Issues with xperf, ETW and NavigationTiming
Debugging IE Performance Issues with xperf, ETW and NavigationTiming
 
Ionic2
Ionic2Ionic2
Ionic2
 
Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!
 
Jenkins & Selenium
Jenkins & SeleniumJenkins & Selenium
Jenkins & Selenium
 
Selenium Automation at Incapsula
Selenium Automation at IncapsulaSelenium Automation at Incapsula
Selenium Automation at Incapsula
 
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PhoneGap day 2016 EU: Simulating Cordova Plugins in the BrowserPhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
 

Similar to iOS Parallel Automation: run faster than fast — Viktar Karanevich — SeleniumCamp 2017

Session 2 - Silverlight Streaming, and Windows Live Search
Session 2 - Silverlight Streaming, and Windows Live SearchSession 2 - Silverlight Streaming, and Windows Live Search
Session 2 - Silverlight Streaming, and Windows Live Search
ukdpe
 

Similar to iOS Parallel Automation: run faster than fast — Viktar Karanevich — SeleniumCamp 2017 (20)

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel Automation
 
Mobile Development integration tests
Mobile Development integration testsMobile Development integration tests
Mobile Development integration tests
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
The Emergence of Choice in the .NET Ecosystem
The Emergence of Choice in the .NET EcosystemThe Emergence of Choice in the .NET Ecosystem
The Emergence of Choice in the .NET Ecosystem
 
Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Cloud meets Fog & Puppet A Story of Version Controlled InfrastructureCloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure
 
SaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
SaltStack's NetAPI at Photobucket - Denver SaltStack MeetupSaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
SaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
 
BBS Selenium & Docker
BBS Selenium & Docker BBS Selenium & Docker
BBS Selenium & Docker
 
AWS Tech Summit - Berlin 2011 - Running Java Applications on AWS
AWS Tech Summit - Berlin 2011 - Running Java Applications on AWSAWS Tech Summit - Berlin 2011 - Running Java Applications on AWS
AWS Tech Summit - Berlin 2011 - Running Java Applications on AWS
 
Robot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs IntegrationRobot Framework Introduction & Sauce Labs Integration
Robot Framework Introduction & Sauce Labs Integration
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
 
Deploy, Scale and Manage your Application with AWS Elastic Beanstalk
Deploy, Scale and Manage your Application with AWS Elastic BeanstalkDeploy, Scale and Manage your Application with AWS Elastic Beanstalk
Deploy, Scale and Manage your Application with AWS Elastic Beanstalk
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Watir Presentation Sumanth Krishna. A
Watir Presentation   Sumanth Krishna. AWatir Presentation   Sumanth Krishna. A
Watir Presentation Sumanth Krishna. A
 
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
2016 - Easing Your Way Into Docker: Lessons From a Journey to Production
 
Running Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkRunning Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic Beanstalk
 
Session 2 - Silverlight Streaming, and Windows Live Search
Session 2 - Silverlight Streaming, and Windows Live SearchSession 2 - Silverlight Streaming, and Windows Live Search
Session 2 - Silverlight Streaming, and Windows Live Search
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)
 
Build mini - Windows 10 Dev & Cross platform Dev
Build mini - Windows 10 Dev & Cross platform DevBuild mini - Windows 10 Dev & Cross platform Dev
Build mini - Windows 10 Dev & Cross platform Dev
 
The Present and Future of Mobile Test Automation with Appium
The Present and Future of Mobile Test Automation with AppiumThe Present and Future of Mobile Test Automation with Appium
The Present and Future of Mobile Test Automation with Appium
 

Recently uploaded

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 

iOS Parallel Automation: run faster than fast — Viktar Karanevich — SeleniumCamp 2017

  • 1. iOS Parallel Automation: Run faster than fast! Viktar Karanevich
  • 2. Content: I. History of iOS Automation Frameworks (5 min) II. Path to Current Approach at Badoo (10 min) III. Summary (5 min) IV. Movie: Test Run (3 min)
  • 3. self.introduce => { name: "Viktar Karanevich", title: ["SSTAE", "SSDET", "SQAAE"], languages: ["Java", "Ruby"], experience: "iOS Automation 7+ years" }
  • 4. The original, largest and leading dating network: 330M+ registered users 800+ automated tests on iOS platform 50M+ downloads on iOS
  • 7. Jun 2010 UI Automation Sep 2014 UI Automation xcrun simctl Apple "xcrun simctl" is introduced in xCode 6 It is command line utility to control the Simulator (create, delete, erase, install, uninstall, ...).
  • 8. Jun 2010 UI Automation Sep 2015 UI Automation xcrun simctl UI Testing Apple UI Testing is introduced as replacement for UIAutomation in xCode 7 Sep 2014 UI Automation xcrun simctl
  • 9. Jun 2010 UI Automation Sep 2016 UI Testing xcrun simctl Apple Sep 2015 UI Automation xcrun simctl UI Testing Sep 2014 UI Automation xcrun simctl UI Automation removed in xCode 8
  • 10.
  • 11. Jun 2010 UI Automation Sep 2014 xcrun simctl Sep 2016 UI Testing Sep 2016 UI Testing Apple Calabash Nov 2009 UI Spec
  • 13. Calabash Nov 2009 UI Spec Feb 2011 Frank Jan 2012 Calabash Step Definitions Ruby Client Library Features Developer host Calabash server Simulator Your app UIQuery Touch Actions
  • 14. Calabash Apr 2013 Calabash + UIAutomation Link: https://github.com/calabash/run_loop Step Definitions Ruby Client Library Features Developer host Calabash server Simulator Your app UIQuery Run loop: UIAutomation
  • 15. Calabash Sep 2016 Calabash + DeviceAgent Link: https://github.com/calabash/run_loop/ tree/develop/lib/run_loop/device_agent Developer host Simulator Step Definitions Ruby Client Library XCTest Runner Features Calabash server Your app UIQuery Device Agent
  • 16. Calabash Nov 2009 UI Spec Feb 2011 Frank Jan 2012 Calabash iOSAutomation Frameworks Apr 2013 Calabash + UIAutomation Sep 2016 Calabash + DeviceAgent Jun 2010 UI Automation Sep 2016 UI Testing xcrun simctl Sep 2015 UI Automation xcrun simctl UI Testing Sep 2014 UI Automation xcrun simctl Apple 3 years 1 year
  • 17. Calabash Nov 2009 UI Spec Feb 2011 Frank Jan 2012 Calabash iOSAutomation Frameworks Apr 2013 Calabash + UIAutomation Sep 2016 Calabash + DeviceAgent Jun 2010 UI Automation Sep 2016 UI Testing xcrun simctl Sep 2015 UI Automation xcrun simctl UI Testing Sep 2014 UI Automation xcrun simctl Apple 3 years 1 year
  • 18. II. iOS Automation at Badoo Approach ~80 flaky tests 80 data fail tests
  • 19. II. Before Parallel Run Test Suite Run Nightly Cucumber Report Nightmare! 15h total time 1 simulator 80 data ~500 tests
  • 20. II. Before Parallel Run Test Suite Run Nightly Cucumber Report Nightmare! 80 data fail tests 1simulator Key Issue: How to speed up Test Run? 15h total time ~500 tests 1 simulator
  • 22. Let's Parallel! Blocker Issue: - Calabash does not support Parallel run on 1 desktop
  • 24. https://techblog.badoo.com Tim's talk at Badoo: "Parallel Calabash Testing on iOS"
  • 25. II. Test Result: multi-desktops ~4 hours regression suite run time 5 Desktops
  • 26. II. Test Result: multi-desktops Mac PRO (24 cores) ~2 hours regression suite run time 10 Desktops
  • 27.
  • 28. X Desktops: host limit reached
  • 30. II. Clustering Hosts - Parallel run on multi (virtual) hosts - Mac Pro and hosts: test suite - ~1h 30 min
  • 31. II. Clustering Hosts Issues: - multi-desktops start up is Flaky - simulators can get stuck
  • 32. II. Clustering Hosts Is it possible to automate multi-simulators on one desktop?
  • 33. III. Facebook: Web Driver Agent
  • 34. Developer host Simulator Selenium Driver WDA Runner Your app FB UIA WDA Key Change: Reimplemented UIAutomation dependency Link: https://github.com/facebook/WebDriverAgent
  • 35. Profit: - 7 simulators on single desktop - More stable! more efficient!
  • 36. III. Full Migration to FB UIA WDA Issues: - all tests have calabash code
  • 37. III. Full Migration to FB UIA WDA Issues: - all tests have calabash code - custom app backdoors
  • 38. III. Full Migration to FB UIA WDA Issues: - all tests have calabash code - custom app backdoors - workarounds and other
  • 39. III. Full Migration to FB UIA WDA Full Migration Costs: ~x hours Is it possible to do Fast Migration?
  • 40. III. Calabash + Facebook Fast migration: Facebash! Step Definitions Ruby Client Library Features Developer host Calabash server Simulator Your app UIQuery Run loop: UIAutomation
  • 41. III. Calabash + Facebook Fast migration: Facebash! Step Definitions Ruby Client Library Features Developer host Calabash server Simulator Your app UIQuery Run loop: UIAutomation Developer host Simulator Step Definitions Ruby Client Library WDA Runner Features Calabash server Your app UIQuery FB UIA WDA
  • 42. IV. iOS 10 Update: from UIAutomation WDAto XCTest WDA Link: https://github.com/facebook/WebDriverAgent Developer host Simulator Selenium Driver Your app FB UIA WDA WDA Runner
  • 43. IV. iOS 10 Update: from UIAutomation WDAto XCTest WDA Link: https://github.com/facebook/WebDriverAgent Developer host Simulator Selenium Driver Your app FB UIA WDA Developer host Simulator Your app FB XCTest WDA WDA Runner Selenium Driver FB simctl
  • 44. IV. iOS Hybrid 2.0 iOS 10 update Developer host Simulator Step Definitions Ruby Client Library WDA Runner Features Calabash server Your app UIQuery FB UIA WDA
  • 45. IV. iOS Hybrid 2.0 iOS 10 update Developer host Simulator Step Definitions Ruby Client Library WDA Runner Features Calabash server Your app UIQuery FB UIA WDA Developer host Simulator Step Definitions Ruby Client Library FB simctl Features Calabash server Your app UIQuery FB XCTest WDA
  • 46. V. Summary: multi-desktops vs multi-simulators Test Suite: 500 tests Nightly Cucumber Report Happy morning! 80 data Mac PRO Test Suite Run Time 0 min 225 min 450 min 675 min 900 min 1 sim 10 sims 16 sims 75 min 120 min 900 min Multi Desktops Multi Simulators
  • 47. Developer host Simulator Step Definitions Ruby Client Library FB simctl Features Calabash server Your app UIQuery FB XCTest WDA "Face"book + Cala"bash" = Facebash V. Summary: current approach
  • 48. - easy to set up Parallel Run on 1 Desktop - keep using of backdoors - full access to internal AUT state - cross iOS app automation - iOS simulator control with FBSimCtl - FB WDA supports Selenium protocol - FB WDA independent of Calabash/Appium Facebook Calabash Calabash Facebook Facebook Facebook Facebook V. Summary: PROs
  • 49. - support framework parts: calabash server, FB WDA, fbsimctl, ... - "poor" documentation - using of mixed locator strategies V. Summary: PROs and CONs
  • 50.
  • 51. - Parallel Run in Headless Mode - Simulator Start/Shutdown/Reset optimization - Cold/Hot start iOS app with relogin - record video per the each test in Parallel Run V. TODO