SlideShare a Scribd company logo
1 of 19
AutoTest refactoring
Current situation 
• 1 person-year 
• 300 Tests 
• 13k LOC 
• Per module: 
– Adapter.cs (1k LOC) 
– Scenarios.cs (1.5k LOC) 
– Test.cs (1k LOC) 
• Code style is horrible and not maintainable
Test.cs 
Scenarios.Login(); 
Scenarios.ExpandEnvinceTree(); 
Scenarios.ExpandCitationsSubtree(); 
Scenarios.ExpandCitationFolderInTree(citationFolderSrcHost.Name); 
Scenarios.CitationFolderCopyViaContextMenu(citationFolder.Name); 
Scenarios.InvokeCitationFolderContextMenuPaste(citationFolderDstHost.Name); 
Scenarios.CitationFolderCopyCutSetName(citationFolderInfo);
Scenarios.cs 
internal static void ConfirmAndBackToMangerCitations() 
{ 
Adapter.Otherframe.RefreshDomTree(); 
Adapter.CitationFolderConfirmButton.MouseClick(); 
Thread.Sleep(500); 
Adapter.Otherframe.RefreshDomTree(); 
Adapter.FolderOrCitationAfteractionReturnToManagerButton.MouseClick(); 
}
Adapter.cs 
public static Browser CitationsContextmenu 
{ 
get 
{ 
return ActiveBrowser.Frames.First<Browser>( 
a => a.FrameInfo.Id == "oCitationContextMenu_3"); 
} 
} 
public static HtmlAnchor CitationContextmenuProperties 
{ 
get 
{ 
return CitationsContextmenu. 
Find.ById<HtmlAnchor>("a_5"); 
} 
}
Refactoring?
Best practice 
google: autotest best practice 
• Split API and Tests 
•PageObject pattern in API 
• DSL and own Studio
Page Object examples
Simple Fields 
var loginPage = new LoginPage(); 
loginPage.UserName = “anton”; 
loginPage.Password = “password”; 
loginPage.SignIn();
Chained Menus 
mainPage 
.MainMenu.Open(“TasksAndWorkflows”,”Tasks”) 
.MainMenu.TasksAndWorkflows.Tasks();
DDL(Enums) and Checkbox 
page 
.SearchPanel.DueDate = DueDateType.Next_Week; 
.SearchPanel.MyTasks = true; 
.SearchPanel.Search();
Assert.AreEqual(page.Grid.Rows[0].TaskName, 
"shurik_03022012_40"); 
Assert.AreEqual(page.Grid.Rows[0].Status, 
"100%"); 
page.Grid.GoToPage(2); 
Grids
using (RequirementTemplateAssociationPopup popup = 
page.RequirementTemplate.Change()) 
{ 
popup.Grid.Rows[3].Select(); 
} 
Popups
Static vs Instance 
//Static 
LoginPage.Login(); 
MainFormPage.MainMenu.TasksAndWorkflows.Tasks(); 
TaskManagerPage.Grid.OpenContextMenu(0,1) 
.EditTaskPropertiesInBulk(); 
TaskBulkEditPage.AddNewSchedule(); 
TaskBulkEditPage.Save(); 
TaskBulkEditConfirmationPage.Confirm(); 
Assert.IsTrue(TaskManagerPage.Grid.Rows[0].IsNotSimpleTask);
Static vs Instance 
//Instance 
MainFormPage main = LoginPage.Login(); 
TaskManagerPage tasks = main.MainMenu.TasksAndWorkflows.Tasks(); 
TaskBulkEditPage bulk = tasks.Grid.OpenContextMenu(0, 1) 
.EditTaskPropertiesInBulk(); 
bulk.AddNewSchedule(); 
TaskBulkEditConfirmationPage confirm = bulk.Save(); 
tasks = confirm.Confirm(); 
Assert.IsTrue(tasks.Grid.Rows[0].IsNotSimpleTask);
Static vs Instance 
//Instance + var 
var main = LoginPage.Login(); 
var tasks = main.MainMenu.TasksAndWorkflows.Tasks(); 
var bulk = tasks.Grid.OpenContextMenu(0, 1) 
.EditTaskPropertiesInBulk(); 
bulk.AddNewSchedule(); 
var confirm = bulk.Save(); 
tasks = confirm.Confirm(); 
Assert.IsTrue(tasks.Grid.Rows[0].IsNotSimpleTask);
Static vs Instance 
//Instance + chain 
TaskBulkEditPage bulk = LoginPage.Login() 
.MainMenu.TasksAndWorkflows.Tasks() 
.Grid.OpenContextMenu(0, 1) 
.EditTaskPropertiesInBulk(); 
bulk.AddNewSchedule(); 
TaskManagerPage tasks = bulk 
.Save() 
.Confirm(); 
Assert.IsTrue(tasks.Grid.Rows[0].IsNotSimpleTask);
Summary 
• No hesitate small (or no dev.) projects – talk , 
suggest, review 
• Accept challenges in new areas 
• AutoTests 
– Split them on Tests and API 
– PageObject is very effective
Links 
• DSL, Page Object и Selenium – path to stable functional 
tests. Part1 
• DSL, Page Object и Selenium – path to stable functional 
tests. Part2 
• http://code.google.com/p/selenium/wiki/PageObjects 
• http://martinfowler.com/bliki/PageObject.html 
• http://www.ralphlavelle.net/2012/08/the-page-object-pattern- 
for-ui-tests.html 
• http://docs.seleniumhq.org/docs/06_test_design_cons 
iderations.jsp#chapter06-reference 
• http://sqa.stackexchange.com/

More Related Content

What's hot

NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBNoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBSqreen
 
Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1Zianed Hou
 
Bkbiet day2 & 3
Bkbiet day2 & 3Bkbiet day2 & 3
Bkbiet day2 & 3mihirio
 
Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v
Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v
Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v Arian Gutierrez
 
Introduction to the new official C# Driver developed by 10gen
Introduction to the new official C# Driver developed by 10genIntroduction to the new official C# Driver developed by 10gen
Introduction to the new official C# Driver developed by 10genMongoDB
 
Service Functions
Service FunctionsService Functions
Service Functionspineda2
 
아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문NAVER D2
 
The Ring programming language version 1.6 book - Part 70 of 189
The Ring programming language version 1.6 book - Part 70 of 189The Ring programming language version 1.6 book - Part 70 of 189
The Ring programming language version 1.6 book - Part 70 of 189Mahmoud Samir Fayed
 
AWS Atlanta meetup CloudFormation conditionals
AWS Atlanta meetup CloudFormation conditionals AWS Atlanta meetup CloudFormation conditionals
AWS Atlanta meetup CloudFormation conditionals Adam Book
 
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! GrailsプラグインTsuyoshi Yamamoto
 
บทที่6 update&delete
บทที่6 update&deleteบทที่6 update&delete
บทที่6 update&deletePalm Unnop
 
お題でGroovyプログラミング: Part A
お題でGroovyプログラミング: Part Aお題でGroovyプログラミング: Part A
お題でGroovyプログラミング: Part AKazuchika Sekiya
 
ReactJS & Material-ui Hello world
ReactJS & Material-ui Hello worldReactJS & Material-ui Hello world
ReactJS & Material-ui Hello worldDaniel Lim
 
Do something in 5 with gas 3-simple invoicing app
Do something in 5 with gas 3-simple invoicing appDo something in 5 with gas 3-simple invoicing app
Do something in 5 with gas 3-simple invoicing appBruce McPherson
 
20110514 mongo dbチューニング
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニングYuichi Matsuo
 

What's hot (18)

NoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDBNoSQL Injections in Node.js - The case of MongoDB
NoSQL Injections in Node.js - The case of MongoDB
 
Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1Tomcat连接池配置方法V2.1
Tomcat连接池配置方法V2.1
 
Bkbiet day2 & 3
Bkbiet day2 & 3Bkbiet day2 & 3
Bkbiet day2 & 3
 
Mongo db for c# developers
Mongo db for c# developersMongo db for c# developers
Mongo db for c# developers
 
Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v
Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v
Tipo virus espia con esto aprenderan a espiar a personas etc jeropas de mrd :v
 
Introduction to the new official C# Driver developed by 10gen
Introduction to the new official C# Driver developed by 10genIntroduction to the new official C# Driver developed by 10gen
Introduction to the new official C# Driver developed by 10gen
 
Mongo db for C# Developers
Mongo db for C# DevelopersMongo db for C# Developers
Mongo db for C# Developers
 
Service Functions
Service FunctionsService Functions
Service Functions
 
아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문
 
The Ring programming language version 1.6 book - Part 70 of 189
The Ring programming language version 1.6 book - Part 70 of 189The Ring programming language version 1.6 book - Part 70 of 189
The Ring programming language version 1.6 book - Part 70 of 189
 
AWS Atlanta meetup CloudFormation conditionals
AWS Atlanta meetup CloudFormation conditionals AWS Atlanta meetup CloudFormation conditionals
AWS Atlanta meetup CloudFormation conditionals
 
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
 
บทที่6 update&delete
บทที่6 update&deleteบทที่6 update&delete
บทที่6 update&delete
 
Good Tests Bad Tests
Good Tests Bad TestsGood Tests Bad Tests
Good Tests Bad Tests
 
お題でGroovyプログラミング: Part A
お題でGroovyプログラミング: Part Aお題でGroovyプログラミング: Part A
お題でGroovyプログラミング: Part A
 
ReactJS & Material-ui Hello world
ReactJS & Material-ui Hello worldReactJS & Material-ui Hello world
ReactJS & Material-ui Hello world
 
Do something in 5 with gas 3-simple invoicing app
Do something in 5 with gas 3-simple invoicing appDo something in 5 with gas 3-simple invoicing app
Do something in 5 with gas 3-simple invoicing app
 
20110514 mongo dbチューニング
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニング
 

Viewers also liked

Архитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографикаАрхитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографикаSoftengi
 
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...Softengi
 
About REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары SoftengiAbout REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары SoftengiSoftengi
 
Nola defragmentatu disko gogorra
Nola defragmentatu disko gogorraNola defragmentatu disko gogorra
Nola defragmentatu disko gogorrasalmanefana
 
power point name of days
power point name of dayspower point name of days
power point name of daysevinasalim
 
Mf def fç estr din 28.08.14
Mf def fç estr din   28.08.14Mf def fç estr din   28.08.14
Mf def fç estr din 28.08.14Inaiara Bragante
 
Localize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServLocalize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServSoftengi
 
Curriculo baseado em competencias(1)
Curriculo baseado em competencias(1)Curriculo baseado em competencias(1)
Curriculo baseado em competencias(1)Inaiara Bragante
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
 

Viewers also liked (15)

Архитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографикаАрхитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографика
 
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
 
About REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары SoftengiAbout REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары Softengi
 
Nola defragmentatu disko gogorra
Nola defragmentatu disko gogorraNola defragmentatu disko gogorra
Nola defragmentatu disko gogorra
 
power point name of days
power point name of dayspower point name of days
power point name of days
 
Crises ciclo de_vida (1)
Crises ciclo de_vida (1)Crises ciclo de_vida (1)
Crises ciclo de_vida (1)
 
Mf def fç estr din 28.08.14
Mf def fç estr din   28.08.14Mf def fç estr din   28.08.14
Mf def fç estr din 28.08.14
 
Broti Portfolio
Broti PortfolioBroti Portfolio
Broti Portfolio
 
Localize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServLocalize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServ
 
Icd 11 phc draft
Icd 11 phc draftIcd 11 phc draft
Icd 11 phc draft
 
Aula screening abril2014
Aula screening abril2014Aula screening abril2014
Aula screening abril2014
 
Cap 10 duncan
Cap 10 duncanCap 10 duncan
Cap 10 duncan
 
Carteiradeserviços
CarteiradeserviçosCarteiradeserviços
Carteiradeserviços
 
Curriculo baseado em competencias(1)
Curriculo baseado em competencias(1)Curriculo baseado em competencias(1)
Curriculo baseado em competencias(1)
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 

Similar to AutoTest Refactoring. Архитектурные семинары Softengi

COScheduler In Depth
COScheduler In DepthCOScheduler In Depth
COScheduler In DepthWO Community
 
The uniform interface is 42
The uniform interface is 42The uniform interface is 42
The uniform interface is 42Yevhen Bobrov
 
Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)
Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)
Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)Sirar Salih
 
Sustaining Test-Driven Development
Sustaining Test-Driven DevelopmentSustaining Test-Driven Development
Sustaining Test-Driven DevelopmentAgileOnTheBeach
 
Google App Engine Developer - Day3
Google App Engine Developer - Day3Google App Engine Developer - Day3
Google App Engine Developer - Day3Simon Su
 
Test-driven Development with AEM
Test-driven Development with AEMTest-driven Development with AEM
Test-driven Development with AEMJan Wloka
 
Practical Experience Building JavaFX Rich Clients
Practical Experience Building JavaFX Rich ClientsPractical Experience Building JavaFX Rich Clients
Practical Experience Building JavaFX Rich ClientsRichard Bair
 
Event Sourcing - what could go wrong - Devoxx BE
Event Sourcing - what could go wrong - Devoxx BEEvent Sourcing - what could go wrong - Devoxx BE
Event Sourcing - what could go wrong - Devoxx BEAndrzej Ludwikowski
 
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven frameworkSelenium Webdriver with data driven framework
Selenium Webdriver with data driven frameworkDavid Rajah Selvaraj
 
Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesVielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesQAware GmbH
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksMongoDB
 
Unit Testing at Scale
Unit Testing at ScaleUnit Testing at Scale
Unit Testing at ScaleJan Wloka
 
Hidden Treasures in Project Wonder
Hidden Treasures in Project WonderHidden Treasures in Project Wonder
Hidden Treasures in Project WonderWO Community
 
Build Widgets
Build WidgetsBuild Widgets
Build Widgetsscottw
 
NetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience ReportNetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience ReportAnton Arhipov
 

Similar to AutoTest Refactoring. Архитектурные семинары Softengi (20)

COScheduler In Depth
COScheduler In DepthCOScheduler In Depth
COScheduler In Depth
 
Requery overview
Requery overviewRequery overview
Requery overview
 
The uniform interface is 42
The uniform interface is 42The uniform interface is 42
The uniform interface is 42
 
ERRest
ERRestERRest
ERRest
 
Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)
Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)
Azure Table Storage: The Good, the Bad, the Ugly (15 min. lightning talk)
 
Sustaining Test-Driven Development
Sustaining Test-Driven DevelopmentSustaining Test-Driven Development
Sustaining Test-Driven Development
 
Unit testing with mock libs
Unit testing with mock libsUnit testing with mock libs
Unit testing with mock libs
 
Clean Code - A&BP CC
Clean Code - A&BP CCClean Code - A&BP CC
Clean Code - A&BP CC
 
Google App Engine Developer - Day3
Google App Engine Developer - Day3Google App Engine Developer - Day3
Google App Engine Developer - Day3
 
Test-driven Development with AEM
Test-driven Development with AEMTest-driven Development with AEM
Test-driven Development with AEM
 
Practical Experience Building JavaFX Rich Clients
Practical Experience Building JavaFX Rich ClientsPractical Experience Building JavaFX Rich Clients
Practical Experience Building JavaFX Rich Clients
 
Event Sourcing - what could go wrong - Devoxx BE
Event Sourcing - what could go wrong - Devoxx BEEvent Sourcing - what could go wrong - Devoxx BE
Event Sourcing - what could go wrong - Devoxx BE
 
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven frameworkSelenium Webdriver with data driven framework
Selenium Webdriver with data driven framework
 
Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesVielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New Tricks
 
Unit Testing at Scale
Unit Testing at ScaleUnit Testing at Scale
Unit Testing at Scale
 
Hidden Treasures in Project Wonder
Hidden Treasures in Project WonderHidden Treasures in Project Wonder
Hidden Treasures in Project Wonder
 
Build Widgets
Build WidgetsBuild Widgets
Build Widgets
 
Qtp test
Qtp testQtp test
Qtp test
 
NetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience ReportNetBeans Plugin Development: JRebel Experience Report
NetBeans Plugin Development: JRebel Experience Report
 

More from Softengi

Extended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital MarketingExtended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital MarketingSoftengi
 
Intecracy Group Presentation
Intecracy Group PresentationIntecracy Group Presentation
Intecracy Group PresentationSoftengi
 
Softengi - Inspired Software Engineering
Softengi - Inspired Software EngineeringSoftengi - Inspired Software Engineering
Softengi - Inspired Software EngineeringSoftengi
 
Infographic of Softengi's 2014
Infographic of Softengi's 2014Infographic of Softengi's 2014
Infographic of Softengi's 2014Softengi
 
Основы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в SoftengiОсновы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в SoftengiSoftengi
 
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в SoftengiКак оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в SoftengiSoftengi
 
Как оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead SoftengiКак оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead SoftengiSoftengi
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийSoftengi
 
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...Softengi
 
Enviance Environmental ERP
Enviance Environmental ERPEnviance Environmental ERP
Enviance Environmental ERPSoftengi
 
Corporate Social Responsibility at Softengi
Corporate Social Responsibility at SoftengiCorporate Social Responsibility at Softengi
Corporate Social Responsibility at SoftengiSoftengi
 
Тестирование web-приложений на iPad
Тестирование web-приложений на iPadТестирование web-приложений на iPad
Тестирование web-приложений на iPadSoftengi
 
Постановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компанииПостановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компанииSoftengi
 
Softengi Software Development Company Profile
Softengi Software Development Company ProfileSoftengi Software Development Company Profile
Softengi Software Development Company ProfileSoftengi
 
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15Softengi
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеSoftengi
 
Softengi - Business Process Automation based on Microsoft SharePoint Platform
Softengi - Business Process Automation based on Microsoft SharePoint PlatformSoftengi - Business Process Automation based on Microsoft SharePoint Platform
Softengi - Business Process Automation based on Microsoft SharePoint PlatformSoftengi
 
4 Reasons to Outsource IT to Ukraine
4 Reasons to Outsource IT to Ukraine4 Reasons to Outsource IT to Ukraine
4 Reasons to Outsource IT to UkraineSoftengi
 

More from Softengi (18)

Extended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital MarketingExtended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital Marketing
 
Intecracy Group Presentation
Intecracy Group PresentationIntecracy Group Presentation
Intecracy Group Presentation
 
Softengi - Inspired Software Engineering
Softengi - Inspired Software EngineeringSoftengi - Inspired Software Engineering
Softengi - Inspired Software Engineering
 
Infographic of Softengi's 2014
Infographic of Softengi's 2014Infographic of Softengi's 2014
Infographic of Softengi's 2014
 
Основы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в SoftengiОсновы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в Softengi
 
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в SoftengiКак оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
 
Как оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead SoftengiКак оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
 
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
 
Enviance Environmental ERP
Enviance Environmental ERPEnviance Environmental ERP
Enviance Environmental ERP
 
Corporate Social Responsibility at Softengi
Corporate Social Responsibility at SoftengiCorporate Social Responsibility at Softengi
Corporate Social Responsibility at Softengi
 
Тестирование web-приложений на iPad
Тестирование web-приложений на iPadТестирование web-приложений на iPad
Тестирование web-приложений на iPad
 
Постановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компанииПостановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компании
 
Softengi Software Development Company Profile
Softengi Software Development Company ProfileSoftengi Software Development Company Profile
Softengi Software Development Company Profile
 
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестирование
 
Softengi - Business Process Automation based on Microsoft SharePoint Platform
Softengi - Business Process Automation based on Microsoft SharePoint PlatformSoftengi - Business Process Automation based on Microsoft SharePoint Platform
Softengi - Business Process Automation based on Microsoft SharePoint Platform
 
4 Reasons to Outsource IT to Ukraine
4 Reasons to Outsource IT to Ukraine4 Reasons to Outsource IT to Ukraine
4 Reasons to Outsource IT to Ukraine
 

Recently uploaded

Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentInMediaRes1
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
MICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptxMICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptxabhijeetpadhi001
 
Hierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementHierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementmkooblal
 

Recently uploaded (20)

Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media Component
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
MICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptxMICROBIOLOGY biochemical test detailed.pptx
MICROBIOLOGY biochemical test detailed.pptx
 
Hierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of managementHierarchy of management that covers different levels of management
Hierarchy of management that covers different levels of management
 

AutoTest Refactoring. Архитектурные семинары Softengi

  • 2. Current situation • 1 person-year • 300 Tests • 13k LOC • Per module: – Adapter.cs (1k LOC) – Scenarios.cs (1.5k LOC) – Test.cs (1k LOC) • Code style is horrible and not maintainable
  • 3. Test.cs Scenarios.Login(); Scenarios.ExpandEnvinceTree(); Scenarios.ExpandCitationsSubtree(); Scenarios.ExpandCitationFolderInTree(citationFolderSrcHost.Name); Scenarios.CitationFolderCopyViaContextMenu(citationFolder.Name); Scenarios.InvokeCitationFolderContextMenuPaste(citationFolderDstHost.Name); Scenarios.CitationFolderCopyCutSetName(citationFolderInfo);
  • 4. Scenarios.cs internal static void ConfirmAndBackToMangerCitations() { Adapter.Otherframe.RefreshDomTree(); Adapter.CitationFolderConfirmButton.MouseClick(); Thread.Sleep(500); Adapter.Otherframe.RefreshDomTree(); Adapter.FolderOrCitationAfteractionReturnToManagerButton.MouseClick(); }
  • 5. Adapter.cs public static Browser CitationsContextmenu { get { return ActiveBrowser.Frames.First<Browser>( a => a.FrameInfo.Id == "oCitationContextMenu_3"); } } public static HtmlAnchor CitationContextmenuProperties { get { return CitationsContextmenu. Find.ById<HtmlAnchor>("a_5"); } }
  • 7. Best practice google: autotest best practice • Split API and Tests •PageObject pattern in API • DSL and own Studio
  • 9. Simple Fields var loginPage = new LoginPage(); loginPage.UserName = “anton”; loginPage.Password = “password”; loginPage.SignIn();
  • 10. Chained Menus mainPage .MainMenu.Open(“TasksAndWorkflows”,”Tasks”) .MainMenu.TasksAndWorkflows.Tasks();
  • 11. DDL(Enums) and Checkbox page .SearchPanel.DueDate = DueDateType.Next_Week; .SearchPanel.MyTasks = true; .SearchPanel.Search();
  • 13. using (RequirementTemplateAssociationPopup popup = page.RequirementTemplate.Change()) { popup.Grid.Rows[3].Select(); } Popups
  • 14. Static vs Instance //Static LoginPage.Login(); MainFormPage.MainMenu.TasksAndWorkflows.Tasks(); TaskManagerPage.Grid.OpenContextMenu(0,1) .EditTaskPropertiesInBulk(); TaskBulkEditPage.AddNewSchedule(); TaskBulkEditPage.Save(); TaskBulkEditConfirmationPage.Confirm(); Assert.IsTrue(TaskManagerPage.Grid.Rows[0].IsNotSimpleTask);
  • 15. Static vs Instance //Instance MainFormPage main = LoginPage.Login(); TaskManagerPage tasks = main.MainMenu.TasksAndWorkflows.Tasks(); TaskBulkEditPage bulk = tasks.Grid.OpenContextMenu(0, 1) .EditTaskPropertiesInBulk(); bulk.AddNewSchedule(); TaskBulkEditConfirmationPage confirm = bulk.Save(); tasks = confirm.Confirm(); Assert.IsTrue(tasks.Grid.Rows[0].IsNotSimpleTask);
  • 16. Static vs Instance //Instance + var var main = LoginPage.Login(); var tasks = main.MainMenu.TasksAndWorkflows.Tasks(); var bulk = tasks.Grid.OpenContextMenu(0, 1) .EditTaskPropertiesInBulk(); bulk.AddNewSchedule(); var confirm = bulk.Save(); tasks = confirm.Confirm(); Assert.IsTrue(tasks.Grid.Rows[0].IsNotSimpleTask);
  • 17. Static vs Instance //Instance + chain TaskBulkEditPage bulk = LoginPage.Login() .MainMenu.TasksAndWorkflows.Tasks() .Grid.OpenContextMenu(0, 1) .EditTaskPropertiesInBulk(); bulk.AddNewSchedule(); TaskManagerPage tasks = bulk .Save() .Confirm(); Assert.IsTrue(tasks.Grid.Rows[0].IsNotSimpleTask);
  • 18. Summary • No hesitate small (or no dev.) projects – talk , suggest, review • Accept challenges in new areas • AutoTests – Split them on Tests and API – PageObject is very effective
  • 19. Links • DSL, Page Object и Selenium – path to stable functional tests. Part1 • DSL, Page Object и Selenium – path to stable functional tests. Part2 • http://code.google.com/p/selenium/wiki/PageObjects • http://martinfowler.com/bliki/PageObject.html • http://www.ralphlavelle.net/2012/08/the-page-object-pattern- for-ui-tests.html • http://docs.seleniumhq.org/docs/06_test_design_cons iderations.jsp#chapter06-reference • http://sqa.stackexchange.com/