SlideShare a Scribd company logo
1 of 31
How to Define Mobile Test 
Automation Strategy 
Serhat BOLSU – Selin GUNGOR – 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
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 – Builds Execute 
Automated Regression Tests 
Automated Regression Tests 
Continuous Integration – 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
Q&A 
Serhat Bolsu 
sbolsu@tmob.com.tr 
Selin Güngör 
selin.gungor@ciceksepeti.com 
Erol Selitektay 
erol@vngrs.com

More Related Content

Viewers also liked

Agile Retrospective
Agile RetrospectiveAgile Retrospective
Agile RetrospectiveSelin Gungor
 
Test Automation NYC 2014
Test Automation NYC 2014Test Automation NYC 2014
Test Automation NYC 2014Kishore Bhatia
 
BizDataX White paper Test Data Management
BizDataX White paper Test Data ManagementBizDataX White paper Test Data Management
BizDataX White paper Test Data ManagementDragan Kinkela
 
Ibm test data_management_v0.4
Ibm test data_management_v0.4Ibm test data_management_v0.4
Ibm test data_management_v0.4Rosario Cunha
 
Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...
Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...
Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...CA Technologies
 
DATPROF Test data Management (data privacy & data subsetting) - English
DATPROF Test data Management (data privacy & data subsetting) - EnglishDATPROF Test data Management (data privacy & data subsetting) - English
DATPROF Test data Management (data privacy & data subsetting) - EnglishDATPROF
 
Test Data Management: The Underestimated Pain
Test Data Management: The Underestimated PainTest Data Management: The Underestimated Pain
Test Data Management: The Underestimated PainChelsea Frischknecht
 
ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2onsoftwaretest
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsüMesut Günes
 
Test Data Management a Managed Service for Software Quality Assurance
Test Data Management a Managed Service for Software Quality AssuranceTest Data Management a Managed Service for Software Quality Assurance
Test Data Management a Managed Service for Software Quality AssuranceSoftware Testing Solution
 
Qtp 9.5 Tutorials by www.onsoftwaretest.com
Qtp 9.5 Tutorials by www.onsoftwaretest.comQtp 9.5 Tutorials by www.onsoftwaretest.com
Qtp 9.5 Tutorials by www.onsoftwaretest.comonsoftwaretest
 
ISTQB Projelerde Spesifikasyona Dayalı Test Teknikleri
ISTQB Projelerde Spesifikasyona Dayalı Test TeknikleriISTQB Projelerde Spesifikasyona Dayalı Test Teknikleri
ISTQB Projelerde Spesifikasyona Dayalı Test TeknikleriPEM Proje Eğitim Merkezi
 
ISTQB, ISEB Lecture Notes- 4
ISTQB, ISEB Lecture Notes- 4ISTQB, ISEB Lecture Notes- 4
ISTQB, ISEB Lecture Notes- 4onsoftwaretest
 

Viewers also liked (19)

Mobile Testing
Mobile Testing Mobile Testing
Mobile Testing
 
Agile Retrospective
Agile RetrospectiveAgile Retrospective
Agile Retrospective
 
Need for scaling agile
Need for scaling agileNeed for scaling agile
Need for scaling agile
 
Agile Testing
Agile Testing Agile Testing
Agile Testing
 
Test Automation NYC 2014
Test Automation NYC 2014Test Automation NYC 2014
Test Automation NYC 2014
 
BizDataX White paper Test Data Management
BizDataX White paper Test Data ManagementBizDataX White paper Test Data Management
BizDataX White paper Test Data Management
 
Comparación
ComparaciónComparación
Comparación
 
Ibm test data_management_v0.4
Ibm test data_management_v0.4Ibm test data_management_v0.4
Ibm test data_management_v0.4
 
Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...
Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...
Tech Vision: Next-Generation Performance Testing With BlazeMeter, Service Vir...
 
Scrum best practices
Scrum best practicesScrum best practices
Scrum best practices
 
DATPROF Test data Management (data privacy & data subsetting) - English
DATPROF Test data Management (data privacy & data subsetting) - EnglishDATPROF Test data Management (data privacy & data subsetting) - English
DATPROF Test data Management (data privacy & data subsetting) - English
 
Test Data Management: The Underestimated Pain
Test Data Management: The Underestimated PainTest Data Management: The Underestimated Pain
Test Data Management: The Underestimated Pain
 
ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsü
 
ISTQB PROJELERDE HATA YÖNETİMİ
ISTQB PROJELERDE HATA YÖNETİMİISTQB PROJELERDE HATA YÖNETİMİ
ISTQB PROJELERDE HATA YÖNETİMİ
 
Test Data Management a Managed Service for Software Quality Assurance
Test Data Management a Managed Service for Software Quality AssuranceTest Data Management a Managed Service for Software Quality Assurance
Test Data Management a Managed Service for Software Quality Assurance
 
Qtp 9.5 Tutorials by www.onsoftwaretest.com
Qtp 9.5 Tutorials by www.onsoftwaretest.comQtp 9.5 Tutorials by www.onsoftwaretest.com
Qtp 9.5 Tutorials by www.onsoftwaretest.com
 
ISTQB Projelerde Spesifikasyona Dayalı Test Teknikleri
ISTQB Projelerde Spesifikasyona Dayalı Test TeknikleriISTQB Projelerde Spesifikasyona Dayalı Test Teknikleri
ISTQB Projelerde Spesifikasyona Dayalı Test Teknikleri
 
ISTQB, ISEB Lecture Notes- 4
ISTQB, ISEB Lecture Notes- 4ISTQB, ISEB Lecture Notes- 4
ISTQB, ISEB Lecture Notes- 4
 

Similar to How to define mobile automation strategy

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 testingdrewz 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 2015Codemotion
 
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 XMLdiongillard
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with PythonJachym 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 engineersMikalai Alimenkou
 
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile wayAshwin Raghav
 
Securing Java EE Web Apps
Securing Java EE Web AppsSecuring Java EE Web Apps
Securing Java EE Web AppsFrank Kim
 
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobilityLuc Bors
 
Securing Portlets With Spring Security
Securing Portlets With Spring SecuritySecuring Portlets With Spring Security
Securing Portlets With Spring SecurityJohn 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- ChromeDriverManoj Kumar Kumar
 
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of AutomationvodQA
 
Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanITCamp
 

Similar to How to define mobile automation strategy (20)

Test automation
Test  automationTest  automation
Test automation
 
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
 
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
 
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
 
iOS and Android apps automation
iOS and Android apps automationiOS and Android apps automation
iOS and Android apps automation
 
Selenium training
Selenium trainingSelenium training
Selenium training
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Testing web application with Python
Testing web application with PythonTesting web application with Python
Testing web application with Python
 
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
 
Android+ax+app+wcf
Android+ax+app+wcfAndroid+ax+app+wcf
Android+ax+app+wcf
 
Android ax app wcf
Android ax app wcfAndroid ax app wcf
Android ax app wcf
 
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile way
 
Securing Java EE Web Apps
Securing Java EE Web AppsSecuring Java EE Web Apps
Securing Java EE Web Apps
 
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
 
Securing Portlets With Spring Security
Securing Portlets With Spring SecuritySecuring Portlets With Spring Security
Securing Portlets With Spring Security
 
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
 
Selenium with java
Selenium with javaSelenium with java
Selenium with java
 
Whys and Hows of Automation
Whys and Hows of AutomationWhys and Hows of Automation
Whys and Hows of Automation
 
Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex Moldovan
 
Selenium
SeleniumSelenium
Selenium
 

Recently uploaded

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

How to define mobile automation strategy

  • 1. How to Define Mobile Test Automation Strategy Serhat BOLSU – Selin GUNGOR – 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
  • 5.
  • 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 – Builds Execute Automated Regression Tests Automated Regression Tests Continuous Integration – 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
  • 30.
  • 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

  1. 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.
  2. 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…
  3. 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.
  4. ----- 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ı
  5. 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.
  6. 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.
  7. Behaviour does not lie
  8. -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.
  9. -Ana mottomuz -çıkış noktamız Yazılıma uyguladığınız herşeyi, otomasyonda bir yazılım olduğu için uygulayabiliriz
  10.  https://www.youtube.com/watch?v=zADOv65AmiI
  11. 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.
  12. ----- Meeting Notes (22/05/14 20:03) ----- object oriented similar exercies
  13. ----- Meeting Notes (22/05/14 19:31) ----- nedenleri söyle ..
  14. 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.
  15. ----- Meeting Notes (22/05/14 20:03) ----- use source control tools : Github / Bitbucket etc.
  16. ----- 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
  17. https://www.youtube.com/watch?v=3eM73d_F3TQ