SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Fashionable XCUITest for iOS Apps
SauceCon 2019
Shashikant Jagtap
@Shashikant86
About Me
• Shashikant Jagtap [ XCTEQ Limited ]
• Background: Mobile DevOps, CI/CD & Test Automation
• XCUITest, XCTest, Swift,  Developer Tools, CI Scripting
• XCBLOG [https://shashikantjagtap.net]
@Shashikant86
Topics
• State of iOS App Testing
• XCUITest
• Protocol Oriented Test Design Pattern
• Tips and Tricks for DevOps friendly XCUITests
@Shashikant86
iOS Testing without XCUITest
• Heavy Manual Testing
• Use of third-party tools
• Slow and Flaky Test Automation
• Hard to integrate with CI/CD pipeline
@Shashikant86
XCUITest
• Xcode UI Testing framework from 
• Allows UI Testing using Swift or Objective-C programming languages
• Based on Accessibility technology
• Black Box
@Shashikant86
How to learn XCUITest
• Apple WWDC Videos

https://developer.apple.com/videos/play/wwdc2015/406/
• Apple Official Documentation on UI Testing 

https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
• Test Automation University Course on XCUITest 

https://testautomationu.applitools.com/introduction-to-ios-test-automation-with-xcuitest/
@Shashikant86
XCUITest Test Design Pattern
• Page Object Pattern or Screen Play Pattern
@Shashikant86
XCUITest Test Design Pattern
• Page Object Pattern or Screen Play Pattern
• Why?
@Shashikant86
XCUITest Test Design Pattern
• Page Object Pattern or Screen Play Pattern
• Why?
• Swift is protocol oriented language 

https://developer.apple.com/videos/play/wwdc2015/408/
@Shashikant86
XCUITest Test Design Pattern
• Page Object Pattern or Screen Play Pattern
• Why?
• Swift is protocol oriented language 

https://developer.apple.com/videos/play/wwdc2015/408/
• We can use Protocol Oriented Approach for test designing too!
@Shashikant86
Protocol Oriented XCUITest
@Shashikant86
https://testautomationu.applitools.com/introduction-to-ios-test-automation-with-xcuitest/
Protocol Oriented XCUITest
• Scalable Steps across UI Test Target
• One Suite for both iPad and Phone
• Human Readable and Re-usable Steps with XCTActivity
• Easy to Configure on CI
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance
Testing
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance
Testing
• Make Accessibility Identifiers mandatory all UI elements
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance
Testing
• Make Accessibility Identifiers mandatory all UI elements
• Separate Configuration for testing. Don’t use debug or release.
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance
Testing
• Make Accessibility Identifiers mandatory all UI elements
• Separate Configuration for testing. Don’t use debug or release
• Think if testing on real devices required?
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance
Testing
• Make Accessibility Identifiers mandatory all UI elements
• Separate Configuration for testing. Don’t use debug or release
• Think if testing on real devices required?
• Write loads of API and Contract Tests, Reduce the burden on UI testing
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance
Testing
• Make Accessibility Identifiers mandatory all UI elements
• Separate Configuration for testing. Don’t use debug or release
• Think if testing on real devices required?
• Write loads of API and Contract Tests, Reduce the burden on UI testing
• Write performance tests for detecting run time issues
@Shashikant86
Effective XCTest for iOS
• Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing
• Make Accessibility Identifiers mandatory all UI elements
• Separate Configuration for testing. Don’t use debug or release
• Think if testing on real devices required?
• Write loads of API and Contract Tests, Reduce the burden on UI testing
• Write performance tests for detecting run time issues
• Keep separate Xcode schemes for UI and Performance tests
@Shashikant86
Stub/Mock for XCUITest
• Stubbing or mocking is hard with Swift. Harder for XCUITest
@Shashikant86
Stub/Mock for XCUITest
• Stubbing or mocking is hard with Swift. Harder for XCUITest
• Launch Arguments Or Launch Environments in application code
@Shashikant86
Stub/Mock for XCUITest
• Stubbing or mocking is hard with Swift. Harder for XCUITest
• Launch Arguments Or Launch Environments in application code
• Local Networking Stubbing ( Swifter, Embassy, SBTUITestTunnel, Server
Side Swift framework, SwiftLocalhost etc)
@Shashikant86
Stub/Mock for XCUITest
• Stubbing or mocking is hard with Swift. Harder for XCUITest
• Launch Arguments Or Launch Environments in application code
• Local Networking Stubbing ( Swifter, Embassy, SBTUITestTunnel, Server
Side Swift framework, SwiftLocalhost etc)
• Stub if really needed. Keep UI tests as real tests.
@Shashikant86
CI Friendly XCUITest
• Select smart CI Server/Services
@Shashikant86
CI Friendly XCUITest
• Select smart CI Server/Services
• Avoid third party tools/Services if possible for shorter build time
@Shashikant86
CI Friendly XCUITest
• Select smart CI Server/Services
• Avoid third party tools/Services if possible for shorter build time
• Don’t build app twice. Use build-for-testing and test-without-building
option from xcodebuild tool
@Shashikant86
CI Friendly XCUITest
• Select smart CI Server/Services
• Avoid third party tools/Services if possible for shorter build time
• Don’t build app twice. Use build-for-testing and test-without-building
option from xcodebuild tool
• Avoid Flaky CI scripting, Keep it native.
@Shashikant86
CI Friendly XCUITest
• Select smart CI Server/Services
• Avoid third party tools/Services if possible for shorter build time
• Don’t build app twice. Use build-for-testing and test-without-building
option from xcodebuild tool
• Avoid Flaky CI scripting, Keep it native.
• Smart parallelisation of XCTest to speed up builds
@Shashikant86
Dealing with Flakiness
• You can’t simply avoid flakiness in UI tests ( trade-off )
@Shashikant86
Dealing with Flakiness
• You can’t simply avoid flakiness in UI tests ( trade-off )
• UI Tests != Unit Tests
@Shashikant86
Dealing with Flakiness
• You can’t simply avoid flakiness in UI tests ( trade-off )
• UI Tests != Unit Tests
• Root of flakiness aren not your test. It can be anything out of your control.
e.g Environment, Flaky app architecture, Test data, Network etc
@Shashikant86
Dealing with Flakiness
• You can’t simply avoid flakiness in UI tests ( trade-off )
• UI Tests != Unit Tests
• Root of flakiness aren not your test. It can be anything out of your control.
e.g Environment, Flaky app architecture, Test data, Network etc
@Shashikant86
Dealing with Flakiness
• “Your test code requires maintenance. There is no getting around this.”

Angie Jones 



[ https://dzone.com/articles/testing-in-ci ]
@Shashikant86
Benefits of XCUITest
• Native and Fast
• Collaboration with app developers
• Easy to integrate with CI/CD
• Enhance the accessibility of the iOS apps
• Maintained by Apple
@Shashikant86
Excuses for not using XCUITest
• XCUITest is great but we made decision in the past to use other third-party
tool. We invested heavily in it.
@Shashikant86
Excuses for not using XCUITest
• XCUITest is great but we made decision in the past to use other third-party
tool. We invested heavily in it.
• We want cross-platform solution for both iOS and Android
@Shashikant86
Excuses for not using XCUITest
• XCUITest is great but we made decision in the past to use other third-party
tool. We invested heavily in it.
• We want cross-platform solution for both iOS and Android
• Where should we find engineers with Swift and XCUITest skills?
@Shashikant86
Excuses for not using XCUITest
• XCUITest is great but we made decision in the past to use other third-party
tool. We invested heavily in it.
• We want cross-platform solution for both iOS and Android
• Where should we find engineers with Swift and XCUITest skills?
• It’s still a new and buggy!
@Shashikant86
Excuses for not using XCUITest
• XCUITest is great but we made decision in the past to use other third-party
tool. We invested heavily in it.
• We want cross-platform solution for both iOS and Android
• Where should we find engineers with Swift and XCUITest skills?
• It’s still a new and buggy!
• We keep using existing tool as long as it works.
@Shashikant86
Recap
• XCUITest should be used for native iOS Apps
• Cross-platform mobile development, you can choose cross-platform
testing tools
• XCUITest gives chance to collaborate with developers and finds internal
issues in the app.
@Shashikant86
Question Time
@Shashikant86
Thanks
• Contact Me: @Shashikant86
• Email: shashikant.jagtap@xcteq.co.uk
• Website: [ https://shashikantjagtap.net ]
@Shashikant86

Mais conteúdo relacionado

Mais procurados

Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions		Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions Sauce Labs
 
Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013
Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013
Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013TEST Huddle
 
Mobile automation using appium.pptx
Mobile automation using appium.pptxMobile automation using appium.pptx
Mobile automation using appium.pptxSai Krishna
 
Choosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for YouChoosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for YouPerfecto by Perforce
 
CookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomationCookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomationKazuaki Matsuo
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecAdam Paxton
 
SauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: Testing @ the Speed of ConcurrencySauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: Testing @ the Speed of ConcurrencySauce Labs
 
Introduction to UI Automation Framework
Introduction to UI Automation FrameworkIntroduction to UI Automation Framework
Introduction to UI Automation FrameworkPriya Rajagopal
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperMike Melusky
 
Android development at mercari 2015
Android development at mercari 2015Android development at mercari 2015
Android development at mercari 2015Tomoaki Imai
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Adam Paxton
 
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelinesdeliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery PipelinesEsteban Garcia
 
Session on Testing Activities in Continuous Integration and Delivery as an Ex...
Session on Testing Activities in Continuous Integration and Delivery as an Ex...Session on Testing Activities in Continuous Integration and Delivery as an Ex...
Session on Testing Activities in Continuous Integration and Delivery as an Ex...Agile Testing Alliance
 
Selenium Camp 2016 - Kiev, Ukraine
Selenium Camp 2016 -  Kiev, UkraineSelenium Camp 2016 -  Kiev, Ukraine
Selenium Camp 2016 - Kiev, UkraineJustin Ison
 
GitHub as a Landing Page
GitHub as a Landing Page GitHub as a Landing Page
GitHub as a Landing Page Pronovix
 
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -sandeep kumar gupta
 
Luis Correia - Instituto de Informática - OSL19
Luis Correia - Instituto de Informática - OSL19Luis Correia - Instituto de Informática - OSL19
Luis Correia - Instituto de Informática - OSL19marketingsyone
 

Mais procurados (20)

Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions		Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions
 
Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013
Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013
Kristian Karl - Experiences of Test Automation at Spotify - EuroSTAR 2013
 
Mobile automation using appium.pptx
Mobile automation using appium.pptxMobile automation using appium.pptx
Mobile automation using appium.pptx
 
Choosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for YouChoosing the Best Open Source Test Automation Tool for You
Choosing the Best Open Source Test Automation Tool for You
 
CookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomationCookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomation
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
 
Eclipse UI automation
Eclipse UI automationEclipse UI automation
Eclipse UI automation
 
SauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: Testing @ the Speed of ConcurrencySauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: Testing @ the Speed of Concurrency
 
Introduction to UI Automation Framework
Introduction to UI Automation FrameworkIntroduction to UI Automation Framework
Introduction to UI Automation Framework
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
 
Android development at mercari 2015
Android development at mercari 2015Android development at mercari 2015
Android development at mercari 2015
 
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
Intro to Appcelerator Titanium - Code for Fort Lauderdale 2015
 
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelinesdeliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
deliver:agile - Enable your Agile Team with Continuous Delivery Pipelines
 
Session on Testing Activities in Continuous Integration and Delivery as an Ex...
Session on Testing Activities in Continuous Integration and Delivery as an Ex...Session on Testing Activities in Continuous Integration and Delivery as an Ex...
Session on Testing Activities in Continuous Integration and Delivery as an Ex...
 
Selenium Camp 2016 - Kiev, Ukraine
Selenium Camp 2016 -  Kiev, UkraineSelenium Camp 2016 -  Kiev, Ukraine
Selenium Camp 2016 - Kiev, Ukraine
 
GitHub as a Landing Page
GitHub as a Landing Page GitHub as a Landing Page
GitHub as a Landing Page
 
DevOps Unicorns
DevOps UnicornsDevOps Unicorns
DevOps Unicorns
 
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
Mca 02 year_exp_unit_automation_testing_ldra_rtrt_c -
 
Luis Correia - Instituto de Informática - OSL19
Luis Correia - Instituto de Informática - OSL19Luis Correia - Instituto de Informática - OSL19
Luis Correia - Instituto de Informática - OSL19
 
IOS ecosystem
IOS ecosystemIOS ecosystem
IOS ecosystem
 

Semelhante a SauceCon19: Fashionable XCUITest for iOS App

Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScriptRob Scaduto
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingGetting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingBitbar
 
ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloudITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloudIstanbul Tech Talks
 
Ci for i-os-codemash-01.2013
Ci for i-os-codemash-01.2013Ci for i-os-codemash-01.2013
Ci for i-os-codemash-01.2013Kevin Munc
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy VirinCocoaHeads France
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Applitools
 
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015Burcu Geneci
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsSmartBear
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 
iOS Application Security
iOS Application SecurityiOS Application Security
iOS Application SecurityEgor Tolstoy
 
How To Make A Framework Plugin That Does Not Suck
How To Make A Framework Plugin That Does Not SuckHow To Make A Framework Plugin That Does Not Suck
How To Make A Framework Plugin That Does Not SuckMax Andersen
 
The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015Christian Heilmann
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projectsAppsDojo
 
Effectively Using UI Automation
Effectively Using UI AutomationEffectively Using UI Automation
Effectively Using UI AutomationAlexander Repty
 
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...Adam Paxton
 
Be armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeBe armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeAnastasia Kazakova
 
Reliable mobile test automation
Reliable mobile test automationReliable mobile test automation
Reliable mobile test automationVishal Banthia
 
Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)Luis Merino
 

Semelhante a SauceCon19: Fashionable XCUITest for iOS App (20)

Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingGetting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
 
ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloudITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
 
Ci for i-os-codemash-01.2013
Ci for i-os-codemash-01.2013Ci for i-os-codemash-01.2013
Ci for i-os-codemash-01.2013
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
 
Appium vs Espresso and XCUI Test
Appium vs Espresso and XCUI TestAppium vs Espresso and XCUI Test
Appium vs Espresso and XCUI Test
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
 
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
WWDC 15 - Apple's Developer Event @ 8-12 June, 2015
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script Extensions
 
Suparna - XCUITest
Suparna - XCUITestSuparna - XCUITest
Suparna - XCUITest
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
iOS Application Security
iOS Application SecurityiOS Application Security
iOS Application Security
 
How To Make A Framework Plugin That Does Not Suck
How To Make A Framework Plugin That Does Not SuckHow To Make A Framework Plugin That Does Not Suck
How To Make A Framework Plugin That Does Not Suck
 
The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
 
Effectively Using UI Automation
Effectively Using UI AutomationEffectively Using UI Automation
Effectively Using UI Automation
 
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
 
Be armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeBe armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS code
 
Reliable mobile test automation
Reliable mobile test automationReliable mobile test automation
Reliable mobile test automation
 
Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)Building Pistachio with Sencha Touch 2 (introductory)
Building Pistachio with Sencha Touch 2 (introductory)
 

Mais de Shashikant Jagtap

iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsShashikant Jagtap
 
Provisioning iOS CI Server with Ansible
Provisioning iOS CI Server with AnsibleProvisioning iOS CI Server with Ansible
Provisioning iOS CI Server with AnsibleShashikant Jagtap
 
Dockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber ExampleDockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber ExampleShashikant Jagtap
 
Dockerising Appium : London Appium Meetup
Dockerising Appium : London Appium MeetupDockerising Appium : London Appium Meetup
Dockerising Appium : London Appium MeetupShashikant Jagtap
 
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsiOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsShashikant Jagtap
 
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 SaucelabsShashikant Jagtap
 
Headless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationHeadless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationShashikant Jagtap
 
ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)Shashikant Jagtap
 
BDD using Behat, Selenium,Sahi and SauceLabs
BDD using Behat, Selenium,Sahi and SauceLabsBDD using Behat, Selenium,Sahi and SauceLabs
BDD using Behat, Selenium,Sahi and SauceLabsShashikant Jagtap
 
BDD with Behat Selenium, Sahi and Sauce
BDD with Behat Selenium, Sahi and SauceBDD with Behat Selenium, Sahi and Sauce
BDD with Behat Selenium, Sahi and SauceShashikant Jagtap
 
Test Framework for Acne Selenium+Sahi
Test Framework for Acne Selenium+SahiTest Framework for Acne Selenium+Sahi
Test Framework for Acne Selenium+SahiShashikant Jagtap
 

Mais de Shashikant Jagtap (14)

iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
 
Vapor london March 2018
Vapor london March 2018Vapor london March 2018
Vapor london March 2018
 
Provisioning iOS CI Server with Ansible
Provisioning iOS CI Server with AnsibleProvisioning iOS CI Server with Ansible
Provisioning iOS CI Server with Ansible
 
Dockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber ExampleDockerizing BDD : Ruby-Cucumber Example
Dockerizing BDD : Ruby-Cucumber Example
 
Dockerising Appium : London Appium Meetup
Dockerising Appium : London Appium MeetupDockerising Appium : London Appium Meetup
Dockerising Appium : London Appium Meetup
 
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsiOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
 
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
 
Headless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationHeadless BDD & Responsive Test Automation
Headless BDD & Responsive Test Automation
 
Headless BDD
Headless BDDHeadless BDD
Headless BDD
 
ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)
 
Behat sauce
Behat sauceBehat sauce
Behat sauce
 
BDD using Behat, Selenium,Sahi and SauceLabs
BDD using Behat, Selenium,Sahi and SauceLabsBDD using Behat, Selenium,Sahi and SauceLabs
BDD using Behat, Selenium,Sahi and SauceLabs
 
BDD with Behat Selenium, Sahi and Sauce
BDD with Behat Selenium, Sahi and SauceBDD with Behat Selenium, Sahi and Sauce
BDD with Behat Selenium, Sahi and Sauce
 
Test Framework for Acne Selenium+Sahi
Test Framework for Acne Selenium+SahiTest Framework for Acne Selenium+Sahi
Test Framework for Acne Selenium+Sahi
 

Último

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Último (20)

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

SauceCon19: Fashionable XCUITest for iOS App

  • 1. Fashionable XCUITest for iOS Apps SauceCon 2019 Shashikant Jagtap @Shashikant86
  • 2. About Me • Shashikant Jagtap [ XCTEQ Limited ] • Background: Mobile DevOps, CI/CD & Test Automation • XCUITest, XCTest, Swift,  Developer Tools, CI Scripting • XCBLOG [https://shashikantjagtap.net] @Shashikant86
  • 3. Topics • State of iOS App Testing • XCUITest • Protocol Oriented Test Design Pattern • Tips and Tricks for DevOps friendly XCUITests @Shashikant86
  • 4. iOS Testing without XCUITest • Heavy Manual Testing • Use of third-party tools • Slow and Flaky Test Automation • Hard to integrate with CI/CD pipeline @Shashikant86
  • 5. XCUITest • Xcode UI Testing framework from  • Allows UI Testing using Swift or Objective-C programming languages • Based on Accessibility technology • Black Box @Shashikant86
  • 6. How to learn XCUITest • Apple WWDC Videos
 https://developer.apple.com/videos/play/wwdc2015/406/ • Apple Official Documentation on UI Testing 
 https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html • Test Automation University Course on XCUITest 
 https://testautomationu.applitools.com/introduction-to-ios-test-automation-with-xcuitest/ @Shashikant86
  • 7. XCUITest Test Design Pattern • Page Object Pattern or Screen Play Pattern @Shashikant86
  • 8. XCUITest Test Design Pattern • Page Object Pattern or Screen Play Pattern • Why? @Shashikant86
  • 9. XCUITest Test Design Pattern • Page Object Pattern or Screen Play Pattern • Why? • Swift is protocol oriented language 
 https://developer.apple.com/videos/play/wwdc2015/408/ @Shashikant86
  • 10. XCUITest Test Design Pattern • Page Object Pattern or Screen Play Pattern • Why? • Swift is protocol oriented language 
 https://developer.apple.com/videos/play/wwdc2015/408/ • We can use Protocol Oriented Approach for test designing too! @Shashikant86
  • 12. Protocol Oriented XCUITest • Scalable Steps across UI Test Target • One Suite for both iPad and Phone • Human Readable and Re-usable Steps with XCTActivity • Easy to Configure on CI @Shashikant86
  • 13. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing @Shashikant86
  • 14. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing • Make Accessibility Identifiers mandatory all UI elements @Shashikant86
  • 15. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing • Make Accessibility Identifiers mandatory all UI elements • Separate Configuration for testing. Don’t use debug or release. @Shashikant86
  • 16. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing • Make Accessibility Identifiers mandatory all UI elements • Separate Configuration for testing. Don’t use debug or release • Think if testing on real devices required? @Shashikant86
  • 17. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing • Make Accessibility Identifiers mandatory all UI elements • Separate Configuration for testing. Don’t use debug or release • Think if testing on real devices required? • Write loads of API and Contract Tests, Reduce the burden on UI testing @Shashikant86
  • 18. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing • Make Accessibility Identifiers mandatory all UI elements • Separate Configuration for testing. Don’t use debug or release • Think if testing on real devices required? • Write loads of API and Contract Tests, Reduce the burden on UI testing • Write performance tests for detecting run time issues @Shashikant86
  • 19. Effective XCTest for iOS • Use XCTest for all kinds of tests. Unit, Integration, API, UI and Performance Testing • Make Accessibility Identifiers mandatory all UI elements • Separate Configuration for testing. Don’t use debug or release • Think if testing on real devices required? • Write loads of API and Contract Tests, Reduce the burden on UI testing • Write performance tests for detecting run time issues • Keep separate Xcode schemes for UI and Performance tests @Shashikant86
  • 20. Stub/Mock for XCUITest • Stubbing or mocking is hard with Swift. Harder for XCUITest @Shashikant86
  • 21. Stub/Mock for XCUITest • Stubbing or mocking is hard with Swift. Harder for XCUITest • Launch Arguments Or Launch Environments in application code @Shashikant86
  • 22. Stub/Mock for XCUITest • Stubbing or mocking is hard with Swift. Harder for XCUITest • Launch Arguments Or Launch Environments in application code • Local Networking Stubbing ( Swifter, Embassy, SBTUITestTunnel, Server Side Swift framework, SwiftLocalhost etc) @Shashikant86
  • 23. Stub/Mock for XCUITest • Stubbing or mocking is hard with Swift. Harder for XCUITest • Launch Arguments Or Launch Environments in application code • Local Networking Stubbing ( Swifter, Embassy, SBTUITestTunnel, Server Side Swift framework, SwiftLocalhost etc) • Stub if really needed. Keep UI tests as real tests. @Shashikant86
  • 24. CI Friendly XCUITest • Select smart CI Server/Services @Shashikant86
  • 25. CI Friendly XCUITest • Select smart CI Server/Services • Avoid third party tools/Services if possible for shorter build time @Shashikant86
  • 26. CI Friendly XCUITest • Select smart CI Server/Services • Avoid third party tools/Services if possible for shorter build time • Don’t build app twice. Use build-for-testing and test-without-building option from xcodebuild tool @Shashikant86
  • 27. CI Friendly XCUITest • Select smart CI Server/Services • Avoid third party tools/Services if possible for shorter build time • Don’t build app twice. Use build-for-testing and test-without-building option from xcodebuild tool • Avoid Flaky CI scripting, Keep it native. @Shashikant86
  • 28. CI Friendly XCUITest • Select smart CI Server/Services • Avoid third party tools/Services if possible for shorter build time • Don’t build app twice. Use build-for-testing and test-without-building option from xcodebuild tool • Avoid Flaky CI scripting, Keep it native. • Smart parallelisation of XCTest to speed up builds @Shashikant86
  • 29. Dealing with Flakiness • You can’t simply avoid flakiness in UI tests ( trade-off ) @Shashikant86
  • 30. Dealing with Flakiness • You can’t simply avoid flakiness in UI tests ( trade-off ) • UI Tests != Unit Tests @Shashikant86
  • 31. Dealing with Flakiness • You can’t simply avoid flakiness in UI tests ( trade-off ) • UI Tests != Unit Tests • Root of flakiness aren not your test. It can be anything out of your control. e.g Environment, Flaky app architecture, Test data, Network etc @Shashikant86
  • 32. Dealing with Flakiness • You can’t simply avoid flakiness in UI tests ( trade-off ) • UI Tests != Unit Tests • Root of flakiness aren not your test. It can be anything out of your control. e.g Environment, Flaky app architecture, Test data, Network etc @Shashikant86
  • 33. Dealing with Flakiness • “Your test code requires maintenance. There is no getting around this.”
 Angie Jones 
 
 [ https://dzone.com/articles/testing-in-ci ] @Shashikant86
  • 34. Benefits of XCUITest • Native and Fast • Collaboration with app developers • Easy to integrate with CI/CD • Enhance the accessibility of the iOS apps • Maintained by Apple @Shashikant86
  • 35. Excuses for not using XCUITest • XCUITest is great but we made decision in the past to use other third-party tool. We invested heavily in it. @Shashikant86
  • 36. Excuses for not using XCUITest • XCUITest is great but we made decision in the past to use other third-party tool. We invested heavily in it. • We want cross-platform solution for both iOS and Android @Shashikant86
  • 37. Excuses for not using XCUITest • XCUITest is great but we made decision in the past to use other third-party tool. We invested heavily in it. • We want cross-platform solution for both iOS and Android • Where should we find engineers with Swift and XCUITest skills? @Shashikant86
  • 38. Excuses for not using XCUITest • XCUITest is great but we made decision in the past to use other third-party tool. We invested heavily in it. • We want cross-platform solution for both iOS and Android • Where should we find engineers with Swift and XCUITest skills? • It’s still a new and buggy! @Shashikant86
  • 39. Excuses for not using XCUITest • XCUITest is great but we made decision in the past to use other third-party tool. We invested heavily in it. • We want cross-platform solution for both iOS and Android • Where should we find engineers with Swift and XCUITest skills? • It’s still a new and buggy! • We keep using existing tool as long as it works. @Shashikant86
  • 40. Recap • XCUITest should be used for native iOS Apps • Cross-platform mobile development, you can choose cross-platform testing tools • XCUITest gives chance to collaborate with developers and finds internal issues in the app. @Shashikant86
  • 42. Thanks • Contact Me: @Shashikant86 • Email: shashikant.jagtap@xcteq.co.uk • Website: [ https://shashikantjagtap.net ] @Shashikant86