SlideShare a Scribd company logo
1 of 41
Overview
for device farms
Anna Klueva
annaklueva888@gmail.com
Anna Klueva
Position: Automation QA Engineer at Grid Dynamics
Experience: 5 years & 2 years in mobile automation
Email: annaklueva888@gmail.com
Agenda
● Why cloud?
● Overview of device farms:
○ Kobiton
○ Saucelabs
○ AWS Device farm
○ Bitbar
● Parallelization
● Summary
3
4
Emulator Real device
vs.
5
Why cloud?
6
Privileged and Confidential 7
Kobiton: Pros & Cons
● Easy of use
● Easy of setup
● Reporting: no affect on custom
reports
● Cheap
Pros
● Supports ONLY Appium
● Appium version can't be
changed
Cons
8
Kobiton: How it works?
1) Upload app to Kobiton
2) Configure Driver and desired
capabilities in your project
3) Run test on local machine
Example of configuration:
String APPIUM_URL =
"https://username:apiKey@api.kobiton.com";
driver = new AndroidDriver<MobileElement>(
new URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities());
private static DesiredCapabilities getCapabilities() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", “Galaxy Note3”);
capabilities.setCapability("platformVersion", “6”);
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("app", pathToRemoteApp);
return desiredCapabilities;
}
9
10
Upload App to repo
Get info about devices
Get device status
Get logs info
Kobiton: Api description
11
Kobiton Api
Kobiton: How CI/CD process can be organized?
12
1) Health-check for your application
2) Supports different build tools: Maven, Gradle
Kobiton: Specific feature
13
14
Saucelabs: Pros & Cons
● Support different frameworks
● Easy of use
● Easy of setup
● Reporting: no affect on custom
reports
Pros
● Not cheap
Cons
15
1) Upload app via Api
2) Configure driver and
DesiredCapabilities
3) Run tests
Saucelabs: How it works?
String APPIUM_URL = “https://eu1.appium.testobject.com”;
driver = new AndroidDriver<MobileElement>(new
URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities());
private static DesiredCapabilities getCapabilities() {
DesiredCapabilities desiredCapabilities = new
DesiredCapabilities();
desiredCapabilities.setCapability("platformName","Android");
desiredCapabilities.setCapability("testobject_api_key",
SAUCELABS_API_KEY);
desiredCapabilities.setCapability("testobject_app_id",
SAUCELABS_UPLOADED_APP_ID);
return desiredCapabilities;
}
16
17
Saucelabs (TestObject) provides:
Saucelabs: Api
Storage API (upload app)
Test Reports API
Logs API
Devices API
Appium Suites API
18
Two ways:
1) Sauce plugins for Jenkins, TeamCity, Bamboo
2) API
Saucelabs: How to integrate with CI/CD flow?
19
Automated Quality Report
Tests included in the Quality Report are:
● Install and Launch tests
● Stress tests
Saucelabs: Specific feature
20
AWS Device farm
21
AWS Device farm: Pros & Cons
● Supports different frameworks
● Ability to test specific cases
● Rich test analytics
Pros
● No local run
● No custom reports, just aws
reports
Cons
22
1) Your project with tests:
1. Configure Driver and DesiredCapabilities
2. Archive project
2) AWS: Upload application to AWS
Device farm
3) AWS: Upload zipped project to aws
5) AWS: Select device and run type
6) AWS: Run test on server
AWS Device farm: How it works?
Example:
String APPIUM_URL = “http://127.0.0.1:4723”;
driver = new AndroidDriver<MobileElement>(new
URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities());
/*** We do not need to and SHOULD NOT set our own
DesiredCapabilities* Device Farm creates custom settings at the
server level. Setting your own DesiredCapabilities will result in
unexpected results and failures.**/
private static DesiredCapabilities getCapabilities() {
return new DesiredCapabilities();
}
23
24
Upload app
Upload package with tests
Get info about devices
Get info about user
Run tests on AWS Device cloud
AWS device farm: API description
25
Two ways:
1) Jenkins plugin
“aws-device-farm”
2) API
AWS Device farm: How to integrate with CI/CD flow?
26
1) Build tools: Maven, Gradle
2) AWS Device farm client application
AWS Device farm: Specific feature
27
28
Bitbar: Pros & Cons
● Supports different frameworks
● Easy of use
● Rich test analytics
● Integration with third party
systems
Pros
● Not easy of setup
● Not cheap
Cons
29
Client-side: run tests locally on remote real devices
Server-side: run tests on Bitbar server on remote real device
Bitbar: How it works?
30
1) Upload app to Bitbar server
2) Configure Driver and
DesiredCapabilities
3) Bitbar: create project
4) Run tests
Bitbar: client-side run
Example of configuration:
String APPIUM_URL = “https://appium.bitbar.com”;
driver = new AndroidDriver<MobileElement>(new URL(APPIUM_URL+"/wd/hub"),
Configuration.getCapabilities());
private static DesiredCapabilities getCapabilities() {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("platformName","Android");
desiredCapabilities.setCapability("deviceName", "Android Device");
desiredCapabilities.setCapability("testdroid_apiKey", BITBAR_API_KEY);
desiredCapabilities.setCapability("testdroid_project", BITBAR_PROJECT);
desiredCapabilities.setCapability("testdroid_testrun", "Demo1");
desiredCapabilities.setCapability("testdroid_app",UPLOADED_APP_PATH);
desiredCapabilities.setCapability("testdroid_device","LG Google Nexus 5");
desiredCapabilities.setCapability("testdroid_target", "Android");
return desiredCapabilities;
}
31
1) Upload app to server
2) Configure Driver and Desired
Capabilities
3) Archive and upload your tests to
Bitbar server
4) Select devices
5) Run tests on server
Bitbar: server-side run
Example:
String APPIUM_URL = “http://127.0.0.1:4723”;
driver = new AndroidDriver<MobileElement>(new
URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities());
/** app - don't change path to the .apk and .apk name. Bitbar stores you
uploaded app application.apk*/
private static DesiredCapabilities getCapabilities() {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("platformName","Android");
desiredCapabilities.setCapability("deviceName", "Android Device");
desiredCapabilities.setCapability("app",
System.getProperty("user.dir") + "/application.apk");
return desiredCapabilities;
}
32
33
Bitbar API provides:
Bitbar: API description
Upload app
Get info about devices
Run tests and get results
34
Two ways:
1) Jenkins plugin: “Bitbar Run-in-Cloud”
2) Bitbar API
Bitbar: How to integrate with CI/CD flow?
35
● AI Testbot and AppCrawler
● Integration with JIRA, Slack, Hipchat
Bitbar: Specific feature
36
Parallelization in Saucelabs:
Parallelization
Parallelization in Bitbar and AWS:
Set of tests Test cases
Result(Runs on real devices)
Test Test sessions/scripts
Results
(Runs on real devices)
37
Let’s summarize
Kobiton Saucelabs AWS Device farm Bitbar
Easy of setup
Easy of use
Reporting tools
Documentation
Pricing 0. 10$ per minute 0. 18$ per minute 0. 17$ per minute 0. 19$ per minute
Parallel
38
Supported frameworks
Kobiton Saucelabs AWS Device farm Bitbar
Appium
Calabash
Espresso
Robotium
XCUITest
KIF
39
1) If you use third party apps (Google Account,
Apple ID), the personal data can not be deleted
2) Appium version is updated randomly
3) Documentation is not up-to-date
Tricky cases
Q & A
www.griddynamics.com
Thank you!

More Related Content

What's hot

Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2Yakov Fain
 
Desarrollo de aplicaciones con Grails 3, Angular JS y Spring Security
Desarrollo de aplicaciones con Grails 3, Angular JS y Spring SecurityDesarrollo de aplicaciones con Grails 3, Angular JS y Spring Security
Desarrollo de aplicaciones con Grails 3, Angular JS y Spring SecurityAlvaro Sanchez-Mariscal
 
Nakal think test_2015
Nakal think test_2015Nakal think test_2015
Nakal think test_2015Rajdeep Varma
 
Debug production server by counter
Debug production server by counterDebug production server by counter
Debug production server by counterRoy Chung-Cheng Lou
 
Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20
Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20
Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20CodeValue
 
Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016
Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016
Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016ManageIQ
 
Mastering Grails 3 Plugins - GR8Conf US 2016
Mastering Grails 3 Plugins - GR8Conf US 2016Mastering Grails 3 Plugins - GR8Conf US 2016
Mastering Grails 3 Plugins - GR8Conf US 2016Alvaro Sanchez-Mariscal
 
Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppAtlassian
 
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...Alvaro Sanchez-Mariscal
 
Continuously deploy a containerized app to “Azure App Service”
Continuously deploy a containerized app to “Azure App Service”Continuously deploy a containerized app to “Azure App Service”
Continuously deploy a containerized app to “Azure App Service”Seven Peaks Speaks
 
Advanced Spring Boot with Consul
Advanced Spring Boot with ConsulAdvanced Spring Boot with Consul
Advanced Spring Boot with ConsulVMware Tanzu
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...COMAQA.BY
 
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...Alvaro Sanchez-Mariscal
 
Angular, the New Angular JS
Angular, the New Angular JSAngular, the New Angular JS
Angular, the New Angular JSKenzan
 
Universal JavaScript - Frontend United Athens 2017
Universal JavaScript - Frontend United Athens 2017Universal JavaScript - Frontend United Athens 2017
Universal JavaScript - Frontend United Athens 2017Luciano Mammino
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させようYuki Hattori
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web componentsHYS Enterprise
 
Tales of an open source library
Tales of an open source libraryTales of an open source library
Tales of an open source libraryAdam Klein
 

What's hot (20)

Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2
 
Desarrollo de aplicaciones con Grails 3, Angular JS y Spring Security
Desarrollo de aplicaciones con Grails 3, Angular JS y Spring SecurityDesarrollo de aplicaciones con Grails 3, Angular JS y Spring Security
Desarrollo de aplicaciones con Grails 3, Angular JS y Spring Security
 
Nakal think test_2015
Nakal think test_2015Nakal think test_2015
Nakal think test_2015
 
Debug production server by counter
Debug production server by counterDebug production server by counter
Debug production server by counter
 
Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20
Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20
Alon Fliess: APM – What Is It, and Why Do I Need It? - Architecture Next 20
 
Angular 2
Angular 2Angular 2
Angular 2
 
Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016
Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016
Ansible Tower - Drew Bomhof, Brandon Dunne - ManageIQ Design Summit 2016
 
Mastering Grails 3 Plugins - GR8Conf US 2016
Mastering Grails 3 Plugins - GR8Conf US 2016Mastering Grails 3 Plugins - GR8Conf US 2016
Mastering Grails 3 Plugins - GR8Conf US 2016
 
Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version App
 
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
Creating applications with Grails, Angular JS and Spring Security - G3 Summit...
 
PostGraphQL
PostGraphQLPostGraphQL
PostGraphQL
 
Continuously deploy a containerized app to “Azure App Service”
Continuously deploy a containerized app to “Azure App Service”Continuously deploy a containerized app to “Azure App Service”
Continuously deploy a containerized app to “Azure App Service”
 
Advanced Spring Boot with Consul
Advanced Spring Boot with ConsulAdvanced Spring Boot with Consul
Advanced Spring Boot with Consul
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
 
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...
Creating applications with Grails, Angular JS and Spring Security - GR8Conf U...
 
Angular, the New Angular JS
Angular, the New Angular JSAngular, the New Angular JS
Angular, the New Angular JS
 
Universal JavaScript - Frontend United Athens 2017
Universal JavaScript - Frontend United Athens 2017Universal JavaScript - Frontend United Athens 2017
Universal JavaScript - Frontend United Athens 2017
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web components
 
Tales of an open source library
Tales of an open source libraryTales of an open source library
Tales of an open source library
 

Similar to Overview for device farm for mobile testing

The wild wild west of Selenium Capabilities
The wild wild west of Selenium CapabilitiesThe wild wild west of Selenium Capabilities
The wild wild west of Selenium CapabilitiesAdi Ofri
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
 
Continuous mobile automation in build pipeline
Continuous mobile automation in build pipelineContinuous mobile automation in build pipeline
Continuous mobile automation in build pipelinedm l
 
How to work with Selenium Grid and Cloud Solutions
How to work with Selenium Grid and Cloud SolutionsHow to work with Selenium Grid and Cloud Solutions
How to work with Selenium Grid and Cloud SolutionsNoam Zakai
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersJavan Rasokat
 
Android UI Testing with Appium
Android UI Testing with AppiumAndroid UI Testing with Appium
Android UI Testing with AppiumLuke Maung
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & DevelopmentGlobalLogic Ukraine
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsChris Munns
 
AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings Adam Book
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudAndrew Coleman
 
Building microservices sample application
Building microservices sample applicationBuilding microservices sample application
Building microservices sample applicationAnil Allewar
 
Integration and Automation @ mobile.de (eBay Tech Talk)
Integration and Automation @ mobile.de (eBay Tech Talk)Integration and Automation @ mobile.de (eBay Tech Talk)
Integration and Automation @ mobile.de (eBay Tech Talk)Karen Almog
 
Cloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWSCloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWSAmine Sadry
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on WebinarParallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on WebinarBitbar
 

Similar to Overview for device farm for mobile testing (20)

The wild wild west of Selenium Capabilities
The wild wild west of Selenium CapabilitiesThe wild wild west of Selenium Capabilities
The wild wild west of Selenium Capabilities
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
 
Continuous mobile automation in build pipeline
Continuous mobile automation in build pipelineContinuous mobile automation in build pipeline
Continuous mobile automation in build pipeline
 
How to work with Selenium Grid and Cloud Solutions
How to work with Selenium Grid and Cloud SolutionsHow to work with Selenium Grid and Cloud Solutions
How to work with Selenium Grid and Cloud Solutions
 
Android CI and Appium
Android CI and AppiumAndroid CI and Appium
Android CI and Appium
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
Android UI Testing with Appium
Android UI Testing with AppiumAndroid UI Testing with Appium
Android UI Testing with Appium
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless Applications
 
A Jouney Through Wonderland - Jimdo
A Jouney Through Wonderland - JimdoA Jouney Through Wonderland - Jimdo
A Jouney Through Wonderland - Jimdo
 
AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings
 
Browser_Stack_Intro
Browser_Stack_IntroBrowser_Stack_Intro
Browser_Stack_Intro
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
 
Building microservices sample application
Building microservices sample applicationBuilding microservices sample application
Building microservices sample application
 
Integration and Automation @ mobile.de (eBay Tech Talk)
Integration and Automation @ mobile.de (eBay Tech Talk)Integration and Automation @ mobile.de (eBay Tech Talk)
Integration and Automation @ mobile.de (eBay Tech Talk)
 
Cloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWSCloud 101: Hands-on Heroku & AWS
Cloud 101: Hands-on Heroku & AWS
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on WebinarParallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
 

Recently uploaded

BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 

Recently uploaded (7)

BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 

Overview for device farm for mobile testing

  • 1. Overview for device farms Anna Klueva annaklueva888@gmail.com
  • 2. Anna Klueva Position: Automation QA Engineer at Grid Dynamics Experience: 5 years & 2 years in mobile automation Email: annaklueva888@gmail.com
  • 3. Agenda ● Why cloud? ● Overview of device farms: ○ Kobiton ○ Saucelabs ○ AWS Device farm ○ Bitbar ● Parallelization ● Summary 3
  • 6. 6
  • 7. Privileged and Confidential 7 Kobiton: Pros & Cons ● Easy of use ● Easy of setup ● Reporting: no affect on custom reports ● Cheap Pros ● Supports ONLY Appium ● Appium version can't be changed Cons
  • 8. 8 Kobiton: How it works? 1) Upload app to Kobiton 2) Configure Driver and desired capabilities in your project 3) Run test on local machine Example of configuration: String APPIUM_URL = "https://username:apiKey@api.kobiton.com"; driver = new AndroidDriver<MobileElement>( new URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities()); private static DesiredCapabilities getCapabilities() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", “Galaxy Note3”); capabilities.setCapability("platformVersion", “6”); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("app", pathToRemoteApp); return desiredCapabilities; }
  • 9. 9
  • 10. 10 Upload App to repo Get info about devices Get device status Get logs info Kobiton: Api description
  • 11. 11 Kobiton Api Kobiton: How CI/CD process can be organized?
  • 12. 12 1) Health-check for your application 2) Supports different build tools: Maven, Gradle Kobiton: Specific feature
  • 13. 13
  • 14. 14 Saucelabs: Pros & Cons ● Support different frameworks ● Easy of use ● Easy of setup ● Reporting: no affect on custom reports Pros ● Not cheap Cons
  • 15. 15 1) Upload app via Api 2) Configure driver and DesiredCapabilities 3) Run tests Saucelabs: How it works? String APPIUM_URL = “https://eu1.appium.testobject.com”; driver = new AndroidDriver<MobileElement>(new URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities()); private static DesiredCapabilities getCapabilities() { DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability("platformName","Android"); desiredCapabilities.setCapability("testobject_api_key", SAUCELABS_API_KEY); desiredCapabilities.setCapability("testobject_app_id", SAUCELABS_UPLOADED_APP_ID); return desiredCapabilities; }
  • 16. 16
  • 17. 17 Saucelabs (TestObject) provides: Saucelabs: Api Storage API (upload app) Test Reports API Logs API Devices API Appium Suites API
  • 18. 18 Two ways: 1) Sauce plugins for Jenkins, TeamCity, Bamboo 2) API Saucelabs: How to integrate with CI/CD flow?
  • 19. 19 Automated Quality Report Tests included in the Quality Report are: ● Install and Launch tests ● Stress tests Saucelabs: Specific feature
  • 21. 21 AWS Device farm: Pros & Cons ● Supports different frameworks ● Ability to test specific cases ● Rich test analytics Pros ● No local run ● No custom reports, just aws reports Cons
  • 22. 22 1) Your project with tests: 1. Configure Driver and DesiredCapabilities 2. Archive project 2) AWS: Upload application to AWS Device farm 3) AWS: Upload zipped project to aws 5) AWS: Select device and run type 6) AWS: Run test on server AWS Device farm: How it works? Example: String APPIUM_URL = “http://127.0.0.1:4723”; driver = new AndroidDriver<MobileElement>(new URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities()); /*** We do not need to and SHOULD NOT set our own DesiredCapabilities* Device Farm creates custom settings at the server level. Setting your own DesiredCapabilities will result in unexpected results and failures.**/ private static DesiredCapabilities getCapabilities() { return new DesiredCapabilities(); }
  • 23. 23
  • 24. 24 Upload app Upload package with tests Get info about devices Get info about user Run tests on AWS Device cloud AWS device farm: API description
  • 25. 25 Two ways: 1) Jenkins plugin “aws-device-farm” 2) API AWS Device farm: How to integrate with CI/CD flow?
  • 26. 26 1) Build tools: Maven, Gradle 2) AWS Device farm client application AWS Device farm: Specific feature
  • 27. 27
  • 28. 28 Bitbar: Pros & Cons ● Supports different frameworks ● Easy of use ● Rich test analytics ● Integration with third party systems Pros ● Not easy of setup ● Not cheap Cons
  • 29. 29 Client-side: run tests locally on remote real devices Server-side: run tests on Bitbar server on remote real device Bitbar: How it works?
  • 30. 30 1) Upload app to Bitbar server 2) Configure Driver and DesiredCapabilities 3) Bitbar: create project 4) Run tests Bitbar: client-side run Example of configuration: String APPIUM_URL = “https://appium.bitbar.com”; driver = new AndroidDriver<MobileElement>(new URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities()); private static DesiredCapabilities getCapabilities() { DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability("platformName","Android"); desiredCapabilities.setCapability("deviceName", "Android Device"); desiredCapabilities.setCapability("testdroid_apiKey", BITBAR_API_KEY); desiredCapabilities.setCapability("testdroid_project", BITBAR_PROJECT); desiredCapabilities.setCapability("testdroid_testrun", "Demo1"); desiredCapabilities.setCapability("testdroid_app",UPLOADED_APP_PATH); desiredCapabilities.setCapability("testdroid_device","LG Google Nexus 5"); desiredCapabilities.setCapability("testdroid_target", "Android"); return desiredCapabilities; }
  • 31. 31 1) Upload app to server 2) Configure Driver and Desired Capabilities 3) Archive and upload your tests to Bitbar server 4) Select devices 5) Run tests on server Bitbar: server-side run Example: String APPIUM_URL = “http://127.0.0.1:4723”; driver = new AndroidDriver<MobileElement>(new URL(APPIUM_URL+"/wd/hub"), Configuration.getCapabilities()); /** app - don't change path to the .apk and .apk name. Bitbar stores you uploaded app application.apk*/ private static DesiredCapabilities getCapabilities() { DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability("platformName","Android"); desiredCapabilities.setCapability("deviceName", "Android Device"); desiredCapabilities.setCapability("app", System.getProperty("user.dir") + "/application.apk"); return desiredCapabilities; }
  • 32. 32
  • 33. 33 Bitbar API provides: Bitbar: API description Upload app Get info about devices Run tests and get results
  • 34. 34 Two ways: 1) Jenkins plugin: “Bitbar Run-in-Cloud” 2) Bitbar API Bitbar: How to integrate with CI/CD flow?
  • 35. 35 ● AI Testbot and AppCrawler ● Integration with JIRA, Slack, Hipchat Bitbar: Specific feature
  • 36. 36 Parallelization in Saucelabs: Parallelization Parallelization in Bitbar and AWS: Set of tests Test cases Result(Runs on real devices) Test Test sessions/scripts Results (Runs on real devices)
  • 37. 37 Let’s summarize Kobiton Saucelabs AWS Device farm Bitbar Easy of setup Easy of use Reporting tools Documentation Pricing 0. 10$ per minute 0. 18$ per minute 0. 17$ per minute 0. 19$ per minute Parallel
  • 38. 38 Supported frameworks Kobiton Saucelabs AWS Device farm Bitbar Appium Calabash Espresso Robotium XCUITest KIF
  • 39. 39 1) If you use third party apps (Google Account, Apple ID), the personal data can not be deleted 2) Appium version is updated randomly 3) Documentation is not up-to-date Tricky cases
  • 40. Q & A