SlideShare a Scribd company logo
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

Application of Matrices in real life. Presentation on application of matrices
Application of Matrices in real life. Presentation on application of matricesApplication of Matrices in real life. Presentation on application of matrices
Application of Matrices in real life. Presentation on application of matricesRased Khan
 
Keeping Your Information Safe with Centralized Security Services
Keeping Your Information Safe with Centralized Security ServicesKeeping Your Information Safe with Centralized Security Services
Keeping Your Information Safe with Centralized Security ServicesTechSoup
 
Morse OER Some Benefits and Challenges.pptx
Morse OER Some Benefits and Challenges.pptxMorse OER Some Benefits and Challenges.pptx
Morse OER Some Benefits and Challenges.pptxjmorse8
 
Pragya Champions Chalice 2024 Prelims & Finals Q/A set, General Quiz
Pragya Champions Chalice 2024 Prelims & Finals Q/A set, General QuizPragya Champions Chalice 2024 Prelims & Finals Q/A set, General Quiz
Pragya Champions Chalice 2024 Prelims & Finals Q/A set, General QuizPragya - UEM Kolkata Quiz Club
 
size separation d pharm 1st year pharmaceutics
size separation d pharm 1st year pharmaceuticssize separation d pharm 1st year pharmaceutics
size separation d pharm 1st year pharmaceuticspragatimahajan3
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasiemaillard
 
[GDSC YCCE] Build with AI Online Presentation
[GDSC YCCE] Build with AI Online Presentation[GDSC YCCE] Build with AI Online Presentation
[GDSC YCCE] Build with AI Online PresentationGDSCYCCE
 
Industrial Training Report- AKTU Industrial Training Report
Industrial Training Report- AKTU Industrial Training ReportIndustrial Training Report- AKTU Industrial Training Report
Industrial Training Report- AKTU Industrial Training ReportAvinash Rai
 
The Benefits and Challenges of Open Educational Resources
The Benefits and Challenges of Open Educational ResourcesThe Benefits and Challenges of Open Educational Resources
The Benefits and Challenges of Open Educational Resourcesaileywriter
 
Sectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdfSectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdfVivekanand Anglo Vedic Academy
 
The impact of social media on mental health and well-being has been a topic o...
The impact of social media on mental health and well-being has been a topic o...The impact of social media on mental health and well-being has been a topic o...
The impact of social media on mental health and well-being has been a topic o...sanghavirahi2
 
Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...
Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...
Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...Abhinav Gaur Kaptaan
 
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptxJose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptxricssacare
 
Gyanartha SciBizTech Quiz slideshare.pptx
Gyanartha SciBizTech Quiz slideshare.pptxGyanartha SciBizTech Quiz slideshare.pptx
Gyanartha SciBizTech Quiz slideshare.pptxShibin Azad
 
The Art Pastor's Guide to Sabbath | Steve Thomason
The Art Pastor's Guide to Sabbath | Steve ThomasonThe Art Pastor's Guide to Sabbath | Steve Thomason
The Art Pastor's Guide to Sabbath | Steve ThomasonSteve Thomason
 

Recently uploaded (20)

B.ed spl. HI pdusu exam paper-2023-24.pdf
B.ed spl. HI pdusu exam paper-2023-24.pdfB.ed spl. HI pdusu exam paper-2023-24.pdf
B.ed spl. HI pdusu exam paper-2023-24.pdf
 
Application of Matrices in real life. Presentation on application of matrices
Application of Matrices in real life. Presentation on application of matricesApplication of Matrices in real life. Presentation on application of matrices
Application of Matrices in real life. Presentation on application of matrices
 
Keeping Your Information Safe with Centralized Security Services
Keeping Your Information Safe with Centralized Security ServicesKeeping Your Information Safe with Centralized Security Services
Keeping Your Information Safe with Centralized Security Services
 
Morse OER Some Benefits and Challenges.pptx
Morse OER Some Benefits and Challenges.pptxMorse OER Some Benefits and Challenges.pptx
Morse OER Some Benefits and Challenges.pptx
 
Pragya Champions Chalice 2024 Prelims & Finals Q/A set, General Quiz
Pragya Champions Chalice 2024 Prelims & Finals Q/A set, General QuizPragya Champions Chalice 2024 Prelims & Finals Q/A set, General Quiz
Pragya Champions Chalice 2024 Prelims & Finals Q/A set, General Quiz
 
size separation d pharm 1st year pharmaceutics
size separation d pharm 1st year pharmaceuticssize separation d pharm 1st year pharmaceutics
size separation d pharm 1st year pharmaceutics
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
[GDSC YCCE] Build with AI Online Presentation
[GDSC YCCE] Build with AI Online Presentation[GDSC YCCE] Build with AI Online Presentation
[GDSC YCCE] Build with AI Online Presentation
 
Industrial Training Report- AKTU Industrial Training Report
Industrial Training Report- AKTU Industrial Training ReportIndustrial Training Report- AKTU Industrial Training Report
Industrial Training Report- AKTU Industrial Training Report
 
The Benefits and Challenges of Open Educational Resources
The Benefits and Challenges of Open Educational ResourcesThe Benefits and Challenges of Open Educational Resources
The Benefits and Challenges of Open Educational Resources
 
Mattingly "AI & Prompt Design: Limitations and Solutions with LLMs"
Mattingly "AI & Prompt Design: Limitations and Solutions with LLMs"Mattingly "AI & Prompt Design: Limitations and Solutions with LLMs"
Mattingly "AI & Prompt Design: Limitations and Solutions with LLMs"
 
Sectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdfSectors of the Indian Economy - Class 10 Study Notes pdf
Sectors of the Indian Economy - Class 10 Study Notes pdf
 
NCERT Solutions Power Sharing Class 10 Notes pdf
NCERT Solutions Power Sharing Class 10 Notes pdfNCERT Solutions Power Sharing Class 10 Notes pdf
NCERT Solutions Power Sharing Class 10 Notes pdf
 
Introduction to Quality Improvement Essentials
Introduction to Quality Improvement EssentialsIntroduction to Quality Improvement Essentials
Introduction to Quality Improvement Essentials
 
The impact of social media on mental health and well-being has been a topic o...
The impact of social media on mental health and well-being has been a topic o...The impact of social media on mental health and well-being has been a topic o...
The impact of social media on mental health and well-being has been a topic o...
 
Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...
Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...
Research Methods in Psychology | Cambridge AS Level | Cambridge Assessment In...
 
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptxJose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
 
Gyanartha SciBizTech Quiz slideshare.pptx
Gyanartha SciBizTech Quiz slideshare.pptxGyanartha SciBizTech Quiz slideshare.pptx
Gyanartha SciBizTech Quiz slideshare.pptx
 
The Art Pastor's Guide to Sabbath | Steve Thomason
The Art Pastor's Guide to Sabbath | Steve ThomasonThe Art Pastor's Guide to Sabbath | Steve Thomason
The Art Pastor's Guide to Sabbath | Steve Thomason
 

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/