ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
How to Define Mobile Test 
Automation Strategy 
Serhat BOLSU ¨C Selin GUNGOR ¨C Erol SELITEKTAY
Selin G¨¹ng?r 
Software Test Engineer 
?i?ekSepeti.com / Bright E-Ventures
Serhat Bolsu 
Service & QA Manager 
tmob 
References
Erol Selitektay 
Quality Assurance Engineer 
VNGRS
How to define mobile automation strategy
Outline 
Decision to Automate 
Mobile Challenges 
Demo 
Mobile Automation Approaches 
Continuous Integration 
A Fine Approach
Decision to Automate 
Aim of Automation 
Reduce Regression Cost 
Device Support 
Better Quality 
Early Detection 
3500 
3000 
2500 
2000 
1500 
1000 
500 
0 
1 2 3 4 5 6 7 8 9 10 11 
Android/iOS 
Platform 2x 
Phones Manual 
Android/iOS 
Platform 2x 
Phones 
Automated 
900 
800 
700 
600 
500 
400 
300 
200 
100 
0 
1 2 3 4 5 6 7 8 9 10 11 
Thousands 
Manual 1 
Platform 
Automated Multi 
Platform
Decision to Automate 
What to Automate 
Stable Version 
Test Types 
? Regression Testing 
? Smoke Test 
? Performance & Load Testing 
Regression Testing 
Performance & Load Testing Smoke Testing
Decision to Automate 
Profiles
Mobile Challenges 
Device Diversity Multi Platform Hardware 
Dependencies 
Network 
1112. 8d6if3fe Dreisnttin Acnt dArnodidro viedr Dsioevnisc essu pbpyo 2r0te1d3 boyn Gthoeo mglea r ket.
Mobile Challenges 
App-Behaviour 
1 1 
2
Easy to Debug 
Ideal Case 
Automation 
Requirements 
Support Integration 
to Third Party Libraries 
Easy to Use 
Sustainable 
Maintainable 
Human Readable 
Support CI Tools
Test automation is a software development process. 
Test automation projects often fail because of a lack of 
discipline and project management. Many testers don¡¯t realize 
that when they automate tests they¡¯re actually developing 
software. 
Lessons Learned in Software Testing 
Authors: Cem Kaner, James Bach and Bret Pettichord
Automation is Software Development 
login(); 
searchItem(); 
addToBasket(); 
buyWithMoneyOrder();
Automation is Software Development 
//Login 
driver.driver.get("get("http://http://somewebsite.somewebsite.com"); 
com"); 
WebElement WebElement signIn signIn = driver.= driver.findElement(findElement(By.linkText("By.SIGN linkText("IN").click(); 
SIGN IN").click(); 
WebElement email= driver.findElement(By.id("email")).sendKeys("someemail@address.com"); 
WebElement WebElement password email= = driver.driver.findElement(findElement(By.id("By.password")).id("email")).sendKeys("sendKeys("somepassword"); 
someemail@address.com"); 
WebElement WebElement submitButton password = = driver.driver.findElement(findElement(By.id("By.submit_id("password")).form")).click(); 
sendKeys("somepassword"); 
WebElement Wait<WebDriver> submitButton wait = new WebDriverWait(= driver.findElement(driver, 10); 
By.id("submit_form")).click(); 
//WebElement Search resim Item 
=wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("img[alt='Dracena Massengena ?kili']"))); 
WebElement city = wait.until(visibilityOfElementLocated(By.className("select2-choice"))).click(); 
Wait<WebElement WebDriver> dist = wait.wait until(= ExpectedConditions.new WebDriverWait(visibilityOfElementLocated(driver, 10); 
By.className("select2-default"))).click(); 
WebElement WebElement distbox resim = driver.=wait.findElement(until(ExpectedConditions.By.className("select2-visibilityOfElementLocated(focused")).sendKeys("AKSARAY"); 
By.cssSelector("img[alt='Dracena Massengena ?kili']"))); 
WebElement cldist = driver.findElement(By.className("select2-result-label")).click(), 
//WebElement Add to picerd Basket 
= driver.findElement(By.id("prdatepicker")).click(); 
WebElement WebElement selectd city = = driver.wait.until(findElement(visibilityOfElementLocated(By.linkText("30")).click(); 
By.className("select2-choice"))).click(); 
WebElement AddBasket=driver.findElement(By.id("addToBasket")).click(); 
WebElement dist = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("select2-default"))).click(); 
WebElement SatinAl = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='Basket']/div[2]/div[2]/input"))).click(); 
WebElement WebElement EkUrun distbox = wait.= until(driver.ExpectedConditions.findElement(By.visibilityOfElementLocated(className("select2-focused")).By.xpath("(//button[@sendKeys("type='AKSARAY"); 
button'])[5]"))).click(); 
WebElement cldist = driver.findElement(By.className("select2-result-label")).click(), 
WebElement picerd = driver.findElement(By.id("prdatepicker")).click(); 
WebElement selectd = driver.findElement(By.linkText("30")).click(); 
WebElement AddBasket=driver.findElement(By.id("addToBasket")).click(); 
//Buy with Money Order 
WebElement SatinAl = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='Basket']/div[2]/div[2]/input"))).click(); 
WebElement EkUrun = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//button[@type='button'])[5]"))).click(); 
public LoginPage login(){ 
driver.get("http://somewebsite.com"); 
WebElement signIn = driver.findElement(By.linkText("SIGN IN").click(); 
WebElement email= driver.findElement(By.id("email")).sendKeys("someemail@address.com"); 
WebElement password = driver.findElement(By.id("password")).sendKeys("somepassword"); 
WebElement submitButton = driver.findElement(By.id("submit_form")).click(); 
return new HomePage(driver) 
} 
login(); 
public SearchPage searchItem(){ 
. 
. 
. 
searchItem(); 
ilerle1=driver.findElement(By.cssSelector("button.goNext.sendAddition")).click(); 
} 
public ProductDetailPage addBasket(){ 
. 
. 
. 
} 
public OrderPage buyWithMoneyOrder(){ 
. 
. 
. 
} 
WebElement UyeOlmaDevam= wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("?ye olmadan devam et"))).click(); 
WebElement AliciName= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("OrderProducts_1__ReceiverModel_OrderReceiver_NameRec"))).sendKeys("Selenium 
Test "); 
WebElement WebElement addToBasket(); 
AliciTel=driver.findElement(By.xpath("//*[@id='OrderProducts_1__ReceiverModel_OrderReceiver_PhoneRec']")).sendKeys("11111111111111111111"); 
AliciAdres = driver.findElement(By.id("OrderProducts_1__ReceiverModel_OrderReceiver_AddressLineRec")).sendKeys("Selenium Test Adress"); 
WebElement ilerle2= driver.findElement(By.cssSelector("button.goNext.sendRec")).click(); 
WebElement ilerle3 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.goNext.sendCardMessage"))).click(); 
WebElement FaturaAd = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("InvoiceInfoViewModel_Order_SenderName"))).sendKeys("Selenium Test Fatura Ad"); 
WebElement FaturaTel ilerle1== driver.driver.findElement(findElement(By.id("By.InvoiceInfoViewModel_cssSelector("button.Order_goNext.SenderPhone")).sendAddition")).sendKeys("click(); 
111111111111"); 
WebElement buyWithMoneyOrder(); 
FaturaEmail=driver.findElement(By.id("InvoiceInfoViewModel_Email")).sendKeys("erol.selitektay@gmail.com"); 
WebElement OdemeSec= driver.findElement(By.cssSelector("p.billOther")).click(); 
WebElement Havale = wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Havale / EFT ile ?deme"))).click(); 
WebElement BankaSec = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("span.selectBox-label"))).click(); 
WebElement UyeOlmaDevam= wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("?ye olmadan devam et"))).click(); 
WebElement AliciName= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("OrderProducts_1__ReceiverModel_OrderReceiver_NameRec"))).sendKeys("Selenium 
Test "); 
WebElement garanti AliciTel== driver.driver.findElement(findElement(By.xpath("By.html/xpath("//*[@body/ul/li[2]/id='a")).OrderProducts_click(); 
1__ReceiverModel_OrderReceiver_PhoneRec']")).sendKeys("11111111111111111111"); 
WebElement WebElement SiparisVer AliciAdres = driver.= driver.findElement(findElement(By.xpath("//By.input[@id("OrderProducts_value='Sipari? Ver']")).1__click(); 
ReceiverModel_OrderReceiver_AddressLineRec")).sendKeys("Selenium Test Adress"); 
WebElement String sipNo=driver.ilerle2= findElement(driver.By.findElement(xpath("//*[@id='By.wrapper']/cssSelector("div[3]/div/button.div/div/div[goNext.1]/p[2]/sendRec")).span")).getText(); 
click(); 
System.out.println("Sipari? Numaras?: "+ sipNo); 
WebElement driver.quit(); 
ilerle3 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.goNext.sendCardMessage"))).click(); 
WebElement FaturaAd = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("InvoiceInfoViewModel_Order_SenderName"))).sendKeys("Selenium Test Fatura Ad"); 
WebElement FaturaTel = driver.findElement(By.id("InvoiceInfoViewModel_Order_SenderPhone")).sendKeys("111111111111"); 
WebElement FaturaEmail=driver.findElement(By.id("InvoiceInfoViewModel_Email")).sendKeys("erol.selitektay@gmail.com");
Demo 
DEMO TIME 
http://youtu.be/fJxgWwAMwbM
http://youtu.be/fJxgWwAMwbM
Mobile Automation Approaches 
Record & Play 
Record -> Edit -> Play -> Edit -> Add Verify -> Edit and so on... 
Good for getting to know technology 
none of these tests will be maintainable 
none of these tests will be sustainable
Mobile Automation Approaches 
Behaviour Driven Development 
#1 USER STORIES describe BUSINESS VALUE 
#2 SCENARIOS help describe ACCEPTANCE CRITERIA 
#3 SCENARIOS act as AUTOMATED TESTS
Mobile Automation Approaches 
Behaviour Driven Development 
BDD is good for : 
BDD is not ideal for :
Mobile Automation Approaches 
Keyword Driven Testing 
keyword : 
1) A function or method that can be used to test one aspect of the SUT 
2) Can be defined by other keywords 
Higher-level keywords: 
a concrete aspect of the business logic 
Lower-level keywords: 
to keep the implementation of the higher-level keywords at a decent size 
Technical keywords: 
provide the technical implementation to access and thus test the system. 
By codeCentric
Mobile Automation Approaches 
BDD vs Keyword-Driven Testing 
Requirement: Allow customer to choose a round or square shaped pizza 
BDD: Given the customer logged into the pizza build app. 
When the customer choose to build a square shaped pizza, 
Then customer should be able to get a square shaped pizza, 
When the customer choose to build a round shaped pizza, 
Then customer should be able to get a round shaped pizza. 
KDT: Login 
Build pizza | square 
Verify pizza is built 
Build pizza | round 
Verify pizza is built 
by Jim Cornelius BDD presentation
Tools 
Test tool is NOT A Strategy 
Using the tool is NOT A Goal
Mobile Automation Approaches 
Tool Technology 
Object Recognition 
Highest ROI in long perspective. 
Test cases developed are more reusable and flexible. 
Scope and coverage for functional testing will be very high compared to Image recognition. 
ex: WebElement AddToBasket=driver.findElement(By.id("btn_Basket")); 
Image Recognition 
Identify and control GUI components. 
Useful when there is no easy access to a GUI's internal or source code. 
Create Image Library. 
Text Recognition (OCR) 
Highest ROI in short perspective. 
No need object repository.
Mobile Automation Approaches 
How to Select Tool 
? Application Type (native, hybrid, mobile-web) 
? Operating System (Platform) 
? Application Functionality (Business, communication, gaming etc.) 
? Design Methodology (Keyword, DDT, BDD etc.) 
? Support Real Device Testing
Continuous Integration 
Continuous Integration ¨C Builds Execute 
Automated Regression Tests 
Automated Regression Tests 
Continuous Integration ¨C Builds Execute 
Automated Unit Tests 
Automated Unit Tests 
Test Maturity Model 
Build Automation (.apk, .ipa) 
by Jim Cornelius BDD presentation
A Fine Approach 
Input: Test Design Output: Test Suite 
QA Responsibilities 
Test Case Design 
Test Case 
Maintanence 
Debugging 
Object Library 
Platform Support 
iOS 
Android 
Windows 
Source Repository 
Commit test cases/suites 
Objects
Android Phone 
iOS 
Android Tablet 
iPad 
Windows 
Tablet 
A Fine Approach 
pull object library 
pull test cases/suites 
Jenkins 
Server 
3 Step Execution 
Full Suite Execution 
Failing case Execution 
Report/Mail Results 
Input: Test Design Output: Test Suite 
Source Repository 
Windows 
Phone
A Fine Approach: Abstraction Layers 
Test Suite 2 Test SuiteT nest Case n 
Test Case 1 Test Case n Test Case 1 
Higher Level Keywords 
Lower Level Keywords 
Object Library 
Windows Agent 
iOS Agent Android Agent 
iPhone / iPad 
Android Phone / 
Android Tablet 
Third-party Libraries 
Test Suite 1 
Test Case n Test Case 1 
Windows Phone / Tablet 
Test Case n 
Stable 
Variable 
Stable 
Technical Keywords 
Test Framework
How to define mobile automation strategy
Q&A 
Serhat Bolsu 
sbolsu@tmob.com.tr 
Selin G¨¹ng?r 
selin.gungor@ciceksepeti.com 
Erol Selitektay 
erol@vngrs.com

More Related Content

Similar to How to define mobile automation strategy (20)

Top100summit ¹È¸è-scott-improve your automated web application testing
Top100summit  ¹È¸è-scott-improve your automated web application testingTop100summit  ¹È¸è-scott-improve your automated web application testing
Top100summit ¹È¸è-scott-improve your automated web application testing
drewz lin
?
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Codemotion
?
Automated Testing Of Web Applications Using XML
Automated  Testing Of  Web  Applications Using  XMLAutomated  Testing Of  Web  Applications Using  XML
Automated Testing Of Web Applications Using XML
diongillard
?
Dev Dives: Boosting Productivity with Coded Automation and Autopilot?
Dev Dives: Boosting Productivity with Coded Automation and Autopilot?Dev Dives: Boosting Productivity with Coded Automation and Autopilot?
Dev Dives: Boosting Productivity with Coded Automation and Autopilot?
UiPathCommunity
?
iOS and Android apps automation
iOS and Android apps automationiOS and Android apps automation
iOS and Android apps automation
Sridhar Ramakrishnan
?
Selenium training
Selenium trainingSelenium training
Selenium training
Suresh Arora
?
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
Timothy Fisher
?
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with Python
Jachym Cepicky
?
Web automation with Selenium for software engineers
Web automation with Selenium for software engineersWeb automation with Selenium for software engineers
Web automation with Selenium for software engineers
Mikalai Alimenkou
?
Android+ax+app+wcf
Android+ax+app+wcfAndroid+ax+app+wcf
Android+ax+app+wcf
Aravindharamanan S
?
Android ax app wcf
Android ax app wcfAndroid ax app wcf
Android ax app wcf
Aravindharamanan S
?
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile way
Ashwin Raghav
?
Securing Java EE Web Apps
Securing Java EE Web AppsSecuring Java EE Web Apps
Securing Java EE Web Apps
Frank Kim
?
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
Luc Bors
?
Securing Portlets With Spring Security
Securing Portlets With Spring SecuritySecuring Portlets With Spring Security
Securing Portlets With Spring Security
John Lewis
?
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriverAutomated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Manoj Kumar Kumar
?
Selenium with java
Selenium with javaSelenium with java
Selenium with java
Gousalya Ramachandran
?
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of Automation
vodQA
?
Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex Moldovan
ITCamp
?
Selenium
SeleniumSelenium
Selenium
husnara mohammad
?
Top100summit ¹È¸è-scott-improve your automated web application testing
Top100summit  ¹È¸è-scott-improve your automated web application testingTop100summit  ¹È¸è-scott-improve your automated web application testing
Top100summit ¹È¸è-scott-improve your automated web application testing
drewz lin
?
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Codemotion
?
Automated Testing Of Web Applications Using XML
Automated  Testing Of  Web  Applications Using  XMLAutomated  Testing Of  Web  Applications Using  XML
Automated Testing Of Web Applications Using XML
diongillard
?
Dev Dives: Boosting Productivity with Coded Automation and Autopilot?
Dev Dives: Boosting Productivity with Coded Automation and Autopilot?Dev Dives: Boosting Productivity with Coded Automation and Autopilot?
Dev Dives: Boosting Productivity with Coded Automation and Autopilot?
UiPathCommunity
?
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with Python
Jachym Cepicky
?
Web automation with Selenium for software engineers
Web automation with Selenium for software engineersWeb automation with Selenium for software engineers
Web automation with Selenium for software engineers
Mikalai Alimenkou
?
Securing Java EE Web Apps
Securing Java EE Web AppsSecuring Java EE Web Apps
Securing Java EE Web Apps
Frank Kim
?
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
Luc Bors
?
Securing Portlets With Spring Security
Securing Portlets With Spring SecuritySecuring Portlets With Spring Security
Securing Portlets With Spring Security
John Lewis
?
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriverAutomated Testing with Google Chrome - WebDriver- ChromeDriver
Automated Testing with Google Chrome - WebDriver- ChromeDriver
Manoj Kumar Kumar
?
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of Automation
vodQA
?
Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex Moldovan
ITCamp
?

Recently uploaded (20)

AI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI AssistansAI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI Assistans
HusseinMalikMammadli
?
iTop VPN Latest Version 2025 Crack Free Download
iTop VPN Latest Version 2025 Crack Free DownloadiTop VPN Latest Version 2025 Crack Free Download
iTop VPN Latest Version 2025 Crack Free Download
lr74xqnvuf
?
Code or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose BothCode or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose Both
Applitools
?
SE- Lecture 5 for software development.ppt
SE- Lecture 5 for software development.pptSE- Lecture 5 for software development.ppt
SE- Lecture 5 for software development.ppt
theworldimagine985
?
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP SolutionsWhy Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Absolute ERP
?
SolidWorks 2025 Crack free Download updated
SolidWorks 2025 Crack  free Download updatedSolidWorks 2025 Crack  free Download updated
SolidWorks 2025 Crack free Download updated
sanasabaa73
?
Wondershare Filmora Crack Free Download
Wondershare Filmora  Crack Free DownloadWondershare Filmora  Crack Free Download
Wondershare Filmora Crack Free Download
zqeevcqb3t
?
salesforce development services - Alt digital
salesforce development services - Alt digitalsalesforce development services - Alt digital
salesforce development services - Alt digital
Alt Digital Technologies
?
Consequences and Principles of Software Quality v1.0
Consequences and Principles of Software Quality v1.0Consequences and Principles of Software Quality v1.0
Consequences and Principles of Software Quality v1.0
Yann-Ga?l Gu¨¦h¨¦neuc
?
Elastic Search Engineer Certification - Virtual
Elastic Search Engineer Certification - VirtualElastic Search Engineer Certification - Virtual
Elastic Search Engineer Certification - Virtual
Gon?alo Pereira
?
Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...
Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...
Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...
Shubham Joshi
?
Advance Website Helpdesk Customer Support Ticket Management Odoo
Advance Website Helpdesk Customer Support Ticket Management OdooAdvance Website Helpdesk Customer Support Ticket Management Odoo
Advance Website Helpdesk Customer Support Ticket Management Odoo
Aagam infotech
?
AutoDesk Revit Crack | Revit Update 2025 free download
AutoDesk Revit Crack | Revit Update 2025 free downloadAutoDesk Revit Crack | Revit Update 2025 free download
AutoDesk Revit Crack | Revit Update 2025 free download
anamaslam971
?
Why Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your BusinessWhy Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your Business
Mypcot Infotech
?
Computer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .pptComputer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .ppt
jaysen110
?
Data Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - WebinarData Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - Webinar
OnePlan Solutions
?
SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?
kiran10101khan
?
Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9
Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9
Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9
Yann-Ga?l Gu¨¦h¨¦neuc
?
Minitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free DownloadMinitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free Download
v3r2eptd2q
?
Wondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free DownloadWondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free Download
arshadkhokher01
?
AI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI AssistansAI Agents and More:Build Your AI Assistans
AI Agents and More:Build Your AI Assistans
HusseinMalikMammadli
?
iTop VPN Latest Version 2025 Crack Free Download
iTop VPN Latest Version 2025 Crack Free DownloadiTop VPN Latest Version 2025 Crack Free Download
iTop VPN Latest Version 2025 Crack Free Download
lr74xqnvuf
?
Code or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose BothCode or No-Code Tests: Why Top Teams Choose Both
Code or No-Code Tests: Why Top Teams Choose Both
Applitools
?
SE- Lecture 5 for software development.ppt
SE- Lecture 5 for software development.pptSE- Lecture 5 for software development.ppt
SE- Lecture 5 for software development.ppt
theworldimagine985
?
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP SolutionsWhy Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Why Every Cables and Wires Manufacturer Needs a Cloud-Based ERP Solutions
Absolute ERP
?
SolidWorks 2025 Crack free Download updated
SolidWorks 2025 Crack  free Download updatedSolidWorks 2025 Crack  free Download updated
SolidWorks 2025 Crack free Download updated
sanasabaa73
?
Wondershare Filmora Crack Free Download
Wondershare Filmora  Crack Free DownloadWondershare Filmora  Crack Free Download
Wondershare Filmora Crack Free Download
zqeevcqb3t
?
salesforce development services - Alt digital
salesforce development services - Alt digitalsalesforce development services - Alt digital
salesforce development services - Alt digital
Alt Digital Technologies
?
Consequences and Principles of Software Quality v1.0
Consequences and Principles of Software Quality v1.0Consequences and Principles of Software Quality v1.0
Consequences and Principles of Software Quality v1.0
Yann-Ga?l Gu¨¦h¨¦neuc
?
Elastic Search Engineer Certification - Virtual
Elastic Search Engineer Certification - VirtualElastic Search Engineer Certification - Virtual
Elastic Search Engineer Certification - Virtual
Gon?alo Pereira
?
Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...
Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...
Mastering Software Test Automation: A Comprehensive Guide for Beginners and E...
Shubham Joshi
?
Advance Website Helpdesk Customer Support Ticket Management Odoo
Advance Website Helpdesk Customer Support Ticket Management OdooAdvance Website Helpdesk Customer Support Ticket Management Odoo
Advance Website Helpdesk Customer Support Ticket Management Odoo
Aagam infotech
?
AutoDesk Revit Crack | Revit Update 2025 free download
AutoDesk Revit Crack | Revit Update 2025 free downloadAutoDesk Revit Crack | Revit Update 2025 free download
AutoDesk Revit Crack | Revit Update 2025 free download
anamaslam971
?
Why Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your BusinessWhy Hire Python Developers? Key Benefits for Your Business
Why Hire Python Developers? Key Benefits for Your Business
Mypcot Infotech
?
Computer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .pptComputer Architecture Patterson chapter 1 .ppt
Computer Architecture Patterson chapter 1 .ppt
jaysen110
?
Data Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - WebinarData Storytelling for Portfolio Leaders - Webinar
Data Storytelling for Portfolio Leaders - Webinar
OnePlan Solutions
?
SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?SketchUp Pro Crack [2025]-Free Download?
SketchUp Pro Crack [2025]-Free Download?
kiran10101khan
?
Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9
Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9
Projects Panama, Valhalla, and Babylon: Java is the New Python v0.9
Yann-Ga?l Gu¨¦h¨¦neuc
?
Minitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free DownloadMinitool Partition Wizard Crack Free Download
Minitool Partition Wizard Crack Free Download
v3r2eptd2q
?
Wondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free DownloadWondershare Filmora 14.3.2 Crack + License Key Free Download
Wondershare Filmora 14.3.2 Crack + License Key Free Download
arshadkhokher01
?

How to define mobile automation strategy

  • 1. How to Define Mobile Test Automation Strategy Serhat BOLSU ¨C Selin GUNGOR ¨C Erol SELITEKTAY
  • 2. Selin G¨¹ng?r Software Test Engineer ?i?ekSepeti.com / Bright E-Ventures
  • 3. Serhat Bolsu Service & QA Manager tmob References
  • 4. Erol Selitektay Quality Assurance Engineer VNGRS
  • 6. Outline Decision to Automate Mobile Challenges Demo Mobile Automation Approaches Continuous Integration A Fine Approach
  • 7. Decision to Automate Aim of Automation Reduce Regression Cost Device Support Better Quality Early Detection 3500 3000 2500 2000 1500 1000 500 0 1 2 3 4 5 6 7 8 9 10 11 Android/iOS Platform 2x Phones Manual Android/iOS Platform 2x Phones Automated 900 800 700 600 500 400 300 200 100 0 1 2 3 4 5 6 7 8 9 10 11 Thousands Manual 1 Platform Automated Multi Platform
  • 8. Decision to Automate What to Automate Stable Version Test Types ? Regression Testing ? Smoke Test ? Performance & Load Testing Regression Testing Performance & Load Testing Smoke Testing
  • 10. Mobile Challenges Device Diversity Multi Platform Hardware Dependencies Network 1112. 8d6if3fe Dreisnttin Acnt dArnodidro viedr Dsioevnisc essu pbpyo 2r0te1d3 boyn Gthoeo mglea r ket.
  • 12. Easy to Debug Ideal Case Automation Requirements Support Integration to Third Party Libraries Easy to Use Sustainable Maintainable Human Readable Support CI Tools
  • 13. Test automation is a software development process. Test automation projects often fail because of a lack of discipline and project management. Many testers don¡¯t realize that when they automate tests they¡¯re actually developing software. Lessons Learned in Software Testing Authors: Cem Kaner, James Bach and Bret Pettichord
  • 14. Automation is Software Development login(); searchItem(); addToBasket(); buyWithMoneyOrder();
  • 15. Automation is Software Development //Login driver.driver.get("get("http://http://somewebsite.somewebsite.com"); com"); WebElement WebElement signIn signIn = driver.= driver.findElement(findElement(By.linkText("By.SIGN linkText("IN").click(); SIGN IN").click(); WebElement email= driver.findElement(By.id("email")).sendKeys("someemail@address.com"); WebElement WebElement password email= = driver.driver.findElement(findElement(By.id("By.password")).id("email")).sendKeys("sendKeys("somepassword"); someemail@address.com"); WebElement WebElement submitButton password = = driver.driver.findElement(findElement(By.id("By.submit_id("password")).form")).click(); sendKeys("somepassword"); WebElement Wait<WebDriver> submitButton wait = new WebDriverWait(= driver.findElement(driver, 10); By.id("submit_form")).click(); //WebElement Search resim Item =wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("img[alt='Dracena Massengena ?kili']"))); WebElement city = wait.until(visibilityOfElementLocated(By.className("select2-choice"))).click(); Wait<WebElement WebDriver> dist = wait.wait until(= ExpectedConditions.new WebDriverWait(visibilityOfElementLocated(driver, 10); By.className("select2-default"))).click(); WebElement WebElement distbox resim = driver.=wait.findElement(until(ExpectedConditions.By.className("select2-visibilityOfElementLocated(focused")).sendKeys("AKSARAY"); By.cssSelector("img[alt='Dracena Massengena ?kili']"))); WebElement cldist = driver.findElement(By.className("select2-result-label")).click(), //WebElement Add to picerd Basket = driver.findElement(By.id("prdatepicker")).click(); WebElement WebElement selectd city = = driver.wait.until(findElement(visibilityOfElementLocated(By.linkText("30")).click(); By.className("select2-choice"))).click(); WebElement AddBasket=driver.findElement(By.id("addToBasket")).click(); WebElement dist = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("select2-default"))).click(); WebElement SatinAl = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='Basket']/div[2]/div[2]/input"))).click(); WebElement WebElement EkUrun distbox = wait.= until(driver.ExpectedConditions.findElement(By.visibilityOfElementLocated(className("select2-focused")).By.xpath("(//button[@sendKeys("type='AKSARAY"); button'])[5]"))).click(); WebElement cldist = driver.findElement(By.className("select2-result-label")).click(), WebElement picerd = driver.findElement(By.id("prdatepicker")).click(); WebElement selectd = driver.findElement(By.linkText("30")).click(); WebElement AddBasket=driver.findElement(By.id("addToBasket")).click(); //Buy with Money Order WebElement SatinAl = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='Basket']/div[2]/div[2]/input"))).click(); WebElement EkUrun = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//button[@type='button'])[5]"))).click(); public LoginPage login(){ driver.get("http://somewebsite.com"); WebElement signIn = driver.findElement(By.linkText("SIGN IN").click(); WebElement email= driver.findElement(By.id("email")).sendKeys("someemail@address.com"); WebElement password = driver.findElement(By.id("password")).sendKeys("somepassword"); WebElement submitButton = driver.findElement(By.id("submit_form")).click(); return new HomePage(driver) } login(); public SearchPage searchItem(){ . . . searchItem(); ilerle1=driver.findElement(By.cssSelector("button.goNext.sendAddition")).click(); } public ProductDetailPage addBasket(){ . . . } public OrderPage buyWithMoneyOrder(){ . . . } WebElement UyeOlmaDevam= wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("?ye olmadan devam et"))).click(); WebElement AliciName= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("OrderProducts_1__ReceiverModel_OrderReceiver_NameRec"))).sendKeys("Selenium Test "); WebElement WebElement addToBasket(); AliciTel=driver.findElement(By.xpath("//*[@id='OrderProducts_1__ReceiverModel_OrderReceiver_PhoneRec']")).sendKeys("11111111111111111111"); AliciAdres = driver.findElement(By.id("OrderProducts_1__ReceiverModel_OrderReceiver_AddressLineRec")).sendKeys("Selenium Test Adress"); WebElement ilerle2= driver.findElement(By.cssSelector("button.goNext.sendRec")).click(); WebElement ilerle3 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.goNext.sendCardMessage"))).click(); WebElement FaturaAd = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("InvoiceInfoViewModel_Order_SenderName"))).sendKeys("Selenium Test Fatura Ad"); WebElement FaturaTel ilerle1== driver.driver.findElement(findElement(By.id("By.InvoiceInfoViewModel_cssSelector("button.Order_goNext.SenderPhone")).sendAddition")).sendKeys("click(); 111111111111"); WebElement buyWithMoneyOrder(); FaturaEmail=driver.findElement(By.id("InvoiceInfoViewModel_Email")).sendKeys("erol.selitektay@gmail.com"); WebElement OdemeSec= driver.findElement(By.cssSelector("p.billOther")).click(); WebElement Havale = wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Havale / EFT ile ?deme"))).click(); WebElement BankaSec = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("span.selectBox-label"))).click(); WebElement UyeOlmaDevam= wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("?ye olmadan devam et"))).click(); WebElement AliciName= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("OrderProducts_1__ReceiverModel_OrderReceiver_NameRec"))).sendKeys("Selenium Test "); WebElement garanti AliciTel== driver.driver.findElement(findElement(By.xpath("By.html/xpath("//*[@body/ul/li[2]/id='a")).OrderProducts_click(); 1__ReceiverModel_OrderReceiver_PhoneRec']")).sendKeys("11111111111111111111"); WebElement WebElement SiparisVer AliciAdres = driver.= driver.findElement(findElement(By.xpath("//By.input[@id("OrderProducts_value='Sipari? Ver']")).1__click(); ReceiverModel_OrderReceiver_AddressLineRec")).sendKeys("Selenium Test Adress"); WebElement String sipNo=driver.ilerle2= findElement(driver.By.findElement(xpath("//*[@id='By.wrapper']/cssSelector("div[3]/div/button.div/div/div[goNext.1]/p[2]/sendRec")).span")).getText(); click(); System.out.println("Sipari? Numaras?: "+ sipNo); WebElement driver.quit(); ilerle3 = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button.goNext.sendCardMessage"))).click(); WebElement FaturaAd = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("InvoiceInfoViewModel_Order_SenderName"))).sendKeys("Selenium Test Fatura Ad"); WebElement FaturaTel = driver.findElement(By.id("InvoiceInfoViewModel_Order_SenderPhone")).sendKeys("111111111111"); WebElement FaturaEmail=driver.findElement(By.id("InvoiceInfoViewModel_Email")).sendKeys("erol.selitektay@gmail.com");
  • 16. Demo DEMO TIME http://youtu.be/fJxgWwAMwbM
  • 18. Mobile Automation Approaches Record & Play Record -> Edit -> Play -> Edit -> Add Verify -> Edit and so on... Good for getting to know technology none of these tests will be maintainable none of these tests will be sustainable
  • 19. Mobile Automation Approaches Behaviour Driven Development #1 USER STORIES describe BUSINESS VALUE #2 SCENARIOS help describe ACCEPTANCE CRITERIA #3 SCENARIOS act as AUTOMATED TESTS
  • 20. Mobile Automation Approaches Behaviour Driven Development BDD is good for : BDD is not ideal for :
  • 21. Mobile Automation Approaches Keyword Driven Testing keyword : 1) A function or method that can be used to test one aspect of the SUT 2) Can be defined by other keywords Higher-level keywords: a concrete aspect of the business logic Lower-level keywords: to keep the implementation of the higher-level keywords at a decent size Technical keywords: provide the technical implementation to access and thus test the system. By codeCentric
  • 22. Mobile Automation Approaches BDD vs Keyword-Driven Testing Requirement: Allow customer to choose a round or square shaped pizza BDD: Given the customer logged into the pizza build app. When the customer choose to build a square shaped pizza, Then customer should be able to get a square shaped pizza, When the customer choose to build a round shaped pizza, Then customer should be able to get a round shaped pizza. KDT: Login Build pizza | square Verify pizza is built Build pizza | round Verify pizza is built by Jim Cornelius BDD presentation
  • 23. Tools Test tool is NOT A Strategy Using the tool is NOT A Goal
  • 24. Mobile Automation Approaches Tool Technology Object Recognition Highest ROI in long perspective. Test cases developed are more reusable and flexible. Scope and coverage for functional testing will be very high compared to Image recognition. ex: WebElement AddToBasket=driver.findElement(By.id("btn_Basket")); Image Recognition Identify and control GUI components. Useful when there is no easy access to a GUI's internal or source code. Create Image Library. Text Recognition (OCR) Highest ROI in short perspective. No need object repository.
  • 25. Mobile Automation Approaches How to Select Tool ? Application Type (native, hybrid, mobile-web) ? Operating System (Platform) ? Application Functionality (Business, communication, gaming etc.) ? Design Methodology (Keyword, DDT, BDD etc.) ? Support Real Device Testing
  • 26. Continuous Integration Continuous Integration ¨C Builds Execute Automated Regression Tests Automated Regression Tests Continuous Integration ¨C Builds Execute Automated Unit Tests Automated Unit Tests Test Maturity Model Build Automation (.apk, .ipa) by Jim Cornelius BDD presentation
  • 27. A Fine Approach Input: Test Design Output: Test Suite QA Responsibilities Test Case Design Test Case Maintanence Debugging Object Library Platform Support iOS Android Windows Source Repository Commit test cases/suites Objects
  • 28. Android Phone iOS Android Tablet iPad Windows Tablet A Fine Approach pull object library pull test cases/suites Jenkins Server 3 Step Execution Full Suite Execution Failing case Execution Report/Mail Results Input: Test Design Output: Test Suite Source Repository Windows Phone
  • 29. A Fine Approach: Abstraction Layers Test Suite 2 Test SuiteT nest Case n Test Case 1 Test Case n Test Case 1 Higher Level Keywords Lower Level Keywords Object Library Windows Agent iOS Agent Android Agent iPhone / iPad Android Phone / Android Tablet Third-party Libraries Test Suite 1 Test Case n Test Case 1 Windows Phone / Tablet Test Case n Stable Variable Stable Technical Keywords Test Framework
  • 31. Q&A Serhat Bolsu sbolsu@tmob.com.tr Selin G¨¹ng?r selin.gungor@ciceksepeti.com Erol Selitektay erol@vngrs.com

Editor's Notes

  • #3: I¡¯m Selin. I am a Software Test Engineer. I am working for ciceksepeti.com. In my company, we have different kind of e-commerce websites. I responsible for the test activities of ecommerce websites and all mobile applications. Currently, we have two mobile applications. One of them is ciceksepeti mobile application which is hybrid application. People who can order gifts, flowers, cakes and cookies. The other one is fieldterminal project which is native application. Also i responsible for test automation.
  • #6: So today we are going to tell you about test au. How many have you tried test automation? But this is different kind of ta presentation as you realize it is not named how to do test automation. We are going to talk about strategy, the strategy that is going to define your mobile test automation. Actually automation is a hot topic. Everyone wants to automate their application. But they don¡¯t know how or where to start automation. As you know automation can be a big challange but mobile automation is a bigger challange. Mobile test automation presents unique difficulties that a tester would not consider in a web or desktop application. So the goal of our paper is to help you to overcome the challange. We have been passed through this ways and we have gained some experience. So we are here to share these experiences with you. Our talk is particularly relevant to those of you who wants to automate their mobile application. First of all we wrote this paper to show the people who wants to automate their mobile application. We would like to guide people¡­
  • #7: First we¡¯ll be looking at decision to automate. Next, mobile challanges. After that we have demo to show you. I think it will be fun to watch it. It will be exciting for you. After that we¡¯ll go on to mobile automation approaches. Finally, We¡¯ll move on continuous integration. This presentation will take 45 minutes. There will be time for questions after our presentation like 15 minutes.
  • #8: ----- Meeting Notes (22/05/14 20:03) ----- ikinci resim ?ok anlat?c? de?il - bunu farkl?l?k ile anlatal?m better quality -> Another layer for Quality early detection - CI ile entegre ?al??mas?
  • #9: Non deterministic olan durumu otomasyona almay?z. Belirsizlik. ----- Meeting Notes (22/05/14 20:03) ----- if you automate a mess you get automated mess Test type ? kontrol edebilebilr : tekrar kontrol et. multi profile / multi user test.
  • #10: Better knowledge of scripting and coding. Software Developer in Test. ----- Meeting Notes (22/05/14 20:03) ----- iyibir test automated requirement dan kopaca?? i?in ayn? ki?i olmasa daha iyi olur.
  • #12: Behaviour does not lie
  • #13: -Otomasyon sisteminize import edebilirsiniz Requirement de?i?ebilir. System implementasyonu de?i?ebilir. ----- Meeting Notes (22/05/14 20:03) ----- robust - belki konular azalt?labilir - birbininin alt?na yaz?labilir.
  • #14: -Ana mottomuz -??k?? noktam?z Yaz?l?ma uygulad???n?z her?eyi, otomasyonda bir yaz?l?m oldu?u i?in uygulayabiliriz
  • #18: ?https://www.youtube.com/watch?v=zADOv65AmiI
  • #20: Teknik taraf? tdd den base. J-bhave, cucumber, calabash Mobil : frank ----- Meeting Notes (22/05/14 19:31) ----- sadece 3. den yola ??karak bdd i?in testi ??zebilirsin diyemeyiz.
  • #22: ----- Meeting Notes (22/05/14 20:03) ----- object oriented similar exercies
  • #23: ----- Meeting Notes (22/05/14 19:31) ----- nedenleri s?yle ..
  • #25: Optical Character Recognition (OCR)(Text recognation) Optical Character Recognition essentially uses a smart software engine that converts scanned images of handwritten, typewritten or printed text into machine-encoded text.
  • #28: ----- Meeting Notes (22/05/14 20:03) ----- use source control tools : Github / Bitbucket etc.
  • #30: ----- Meeting Notes (22/05/14 19:31) ----- hizalamay? d¨¹zeltlim. object ye?il olmas?. agentlar yaz?labilir veya tool kullan?labilir. ----- Meeting Notes (22/05/14 20:03) ----- object library = ye?ilve yeri de?i?i?ek
  • #31: https://www.youtube.com/watch?v=3eM73d_F3TQ