QA Fest 2017. Яков Крамаренко. Minimum Usable Framework

Q
Minimum Valuable Framework
Part 1 :)
Minimum Valuable Framework
yashaka
@
About
QAA Director
@
Preface
There are good practices in context, 

but there are no best practices.

(c) Cem Kaner, James Bach
Minimum
Valuable Usable
Framework
…
Framework?
Framework
Library
vs
Library
Browser automation tool

fast, standard, 

powerful, low level

Lacks:

lazy elements

implicit waits for visibility

readability

handy assertions

Informative errors

Custom action hooks
TEST automation tool

slower, pretty powerful, user oriented

Has:

lazy elements

implicit waits for visibility

readability

handy assertions

~ “Informative errors”

Some hooks…

Limits:

In integration with 3rd party

(Driver management, Configuration)

Opinionated: …

Framework
Library
Browser automation tool

fast, standard, 

powerful, low level

Lacks:

lazy elements

implicit waits for visibility

readability

handy assertions

Informative errors

Custom action hooks
Framework
TEST automation tool

slower, pretty powerful, user oriented

Has:

lazy elements

implicit waits for visibility

readability

handy assertions

~ “Informative errors”

Some hooks…

Limits:…

Opinionated:

Static Driver

SuperRadioSelectEtcElement
Static Driver?
Static driver? vs BaseTest:)
public class BaseTest {
public static WebDriver driver = new ChromeDriver();
@AfterClass
public static void driverTearDown() {
driver.quit();
}
public void open(String url) {
return driver.get(url);
}
public WebElement $(String css) {
return driver.findElement(By.cssSelector(css));
}
public List<WebElement> $$(String css) {
return driver.findElements(By.cssSelector(css));
}
}
public class TodoMvcTest extends BaseTest {
@Test
public void adds_task() {
open("http:!//todomvc.com/examples/emberjs/");
$("#new-todo").sendKeys("a" + Keys.ENTER);
$("#new-todo").sendKeys("b" + Keys.ENTER);
$("#new-todo").sendKeys("c" + Keys.ENTER);
assertEquals("a", $$("#todo-list>li").get(0).getText());
assertEquals("b", $$("#todo-list>li").get(1).getText());
assertEquals("c", $$("#todo-list>li").get(2).getText());
assertEquals(3, $$("#todo-list>li").size());
}
}
Static driver? vs BaseTest:)
SuperRadioSelectEtcElement? vs …
SuperRadioSelectEtcElement? vs …
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
$(“#first-name").setValue("Iakiv");
$(“#last-name").setValue("Kramarenko");
$(“#sex").selectRadio("Mail");
$(“#country").selectOption("Ukraine");
…
}
}
SuperPlatypusElement? vs …
SuperPlatypusElement? vs Widgets
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
new Box("#first-name").set("Iakiv");
new Box("#last-name").set("Kramarenko");
new Radio("#sex").set("Mail");
new Select("#country").set("Ukraine");
…
}
}
SuperPlatypusElement? vs Widgets
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
form.box(“#first-name").set("Iakiv");
form.box(“#last-name").set("Kramarenko");
form.radio(“#sex").set("Mail");
form.select(“#country").set("Ukraine");
…
}
}
SuperPlatypusElement? vs Freedom
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
new SuperElement(“#first-name").setValue("Iakiv");
new SuperElement(“#last-name").setValue("Kramarenko");
new SuperElement(“#sex").selectRadio("Mail");
new SuperElement(“#country").selectOption("Ukraine");
…
}
}
SuperPlatypusElement? vs Freedom
public class RegistrationTest extends BaseTest {
@Test
public void registers() {
!!...
_(“#first-name”).setValue("Iakiv");
_(“#last-name”).setValue("Kramarenko");
_(“#sex”).selectRadio("Mail");
_(“#country”).selectOption("Ukraine");
…
}
}
Library
Browser automation tool

fast, standard, 

powerful, low level

Lacks:

lazy elements

implicit waits for visibility

readability

handy assertions

Informative errors

Custom action hooks
Framework
TEST automation tool

slower, pretty powerful, user oriented

Has:

lazy elements

implicit waits for visibility

readability

handy assertions

~ “Informative errors”

Some hooks…

Limits:…

Opinionated:

Static Driver

SuperRadioSelectEtcElement

MUF?
LibraryFramework
MUF?
TEST automation tool

lazy elements

implicit waits for action succeeded

handy assertions

informative errors

readable

consistent

natural (PlatypusElement)

user oriented

As less opinionated as possible
Demo
- food for the brain
inDependency
- food for the brain
Technical Feng shui
vs
Team & Processes
- food for the brain
Afterwords
There are good practices in context, 

but there are no best practices.

(c) Cem Kaner, James Bach
Q&A
Thank you!
k-expert.com
yashaka @
We are hiring;)
k-expert.com
yashaka @
1 of 29

Recommended

QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB пр... by
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB пр...QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB пр...
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB пр...QAFest
432 views44 slides
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon... by
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
3.5K views79 slides
Easy tests with Selenide and Easyb by
Easy tests with Selenide and EasybEasy tests with Selenide and Easyb
Easy tests with Selenide and EasybIakiv Kramarenko
4.3K views57 slides
Web ui tests examples with selenide, nselene, selene & capybara by
Web ui tests examples with  selenide, nselene, selene & capybaraWeb ui tests examples with  selenide, nselene, selene & capybara
Web ui tests examples with selenide, nselene, selene & capybaraIakiv Kramarenko
1.1K views21 slides
Adding a modern twist to legacy web applications by
Adding a modern twist to legacy web applicationsAdding a modern twist to legacy web applications
Adding a modern twist to legacy web applicationsJeff Durta
354 views57 slides
Metrics-Driven Engineering by
Metrics-Driven EngineeringMetrics-Driven Engineering
Metrics-Driven EngineeringMike Brittain
9K views106 slides

More Related Content

What's hot

Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016] by
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Iakiv Kramarenko
10.1K views93 slides
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium... by
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...Iakiv Kramarenko
3.3K views118 slides
Getting to Grips with SilverStripe Testing by
Getting to Grips with SilverStripe TestingGetting to Grips with SilverStripe Testing
Getting to Grips with SilverStripe TestingMark Rickerby
5.9K views16 slides
What's new in Django 1.7 by
What's new in Django 1.7What's new in Django 1.7
What's new in Django 1.7Daniel Roseman
2K views17 slides
Thomas Fuchs Presentation by
Thomas Fuchs PresentationThomas Fuchs Presentation
Thomas Fuchs PresentationRubyOnRails_dude
811 views76 slides
Automating to Augment Testing by
Automating to Augment TestingAutomating to Augment Testing
Automating to Augment TestingAlan Richardson
1.1K views63 slides

What's hot(20)

Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016] by Iakiv Kramarenko
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]
Selenide alternative in Python - Introducing Selene [SeleniumCamp 2016]
Iakiv Kramarenko10.1K views
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium... by Iakiv Kramarenko
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Iakiv Kramarenko3.3K views
Getting to Grips with SilverStripe Testing by Mark Rickerby
Getting to Grips with SilverStripe TestingGetting to Grips with SilverStripe Testing
Getting to Grips with SilverStripe Testing
Mark Rickerby5.9K views
Automating to Augment Testing by Alan Richardson
Automating to Augment TestingAutomating to Augment Testing
Automating to Augment Testing
Alan Richardson1.1K views
Automation Abstraction Layers: Page Objects and Beyond by Alan Richardson
Automation Abstraction Layers: Page Objects and BeyondAutomation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and Beyond
Alan Richardson67.3K views
Automation Abstractions: Page Objects and Beyond by TechWell
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and Beyond
TechWell1.9K views
Webdriver cheatsheets summary by Alan Richardson
Webdriver cheatsheets summaryWebdriver cheatsheets summary
Webdriver cheatsheets summary
Alan Richardson38.5K views
Unit Testing in SilverStripe by Ingo Schommer
Unit Testing in SilverStripeUnit Testing in SilverStripe
Unit Testing in SilverStripe
Ingo Schommer999 views
Take My Logs. Please! by Mike Brittain
Take My Logs. Please!Take My Logs. Please!
Take My Logs. Please!
Mike Brittain13.5K views
SilverStripe CMS JavaScript Refactoring by Ingo Schommer
SilverStripe CMS JavaScript RefactoringSilverStripe CMS JavaScript Refactoring
SilverStripe CMS JavaScript Refactoring
Ingo Schommer1.6K views
You do not need automation engineer - Sqa Days - 2015 - EN by Iakiv Kramarenko
You do not need automation engineer  - Sqa Days - 2015 - ENYou do not need automation engineer  - Sqa Days - 2015 - EN
You do not need automation engineer - Sqa Days - 2015 - EN
Iakiv Kramarenko1.4K views
Top100summit 谷歌-scott-improve your automated web application testing by drewz lin
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testing
drewz lin538 views
Protractor framework – how to make stable e2e tests for Angular applications by Ludmila Nesvitiy
Protractor framework – how to make stable e2e tests for Angular applicationsProtractor framework – how to make stable e2e tests for Angular applications
Protractor framework – how to make stable e2e tests for Angular applications
Ludmila Nesvitiy4.4K views
Page Objects Done Right - selenium conference 2014 by Oren Rubin
Page Objects Done Right - selenium conference 2014Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014
Oren Rubin12.4K views

Similar to QA Fest 2017. Яков Крамаренко. Minimum Usable Framework

Pragmatic Parallels: Java and JavaScript by
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptdavejohnson
1.2K views81 slides
How to ship customer value faster with step functions by
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
680 views156 slides
Serverless Apps with AWS Step Functions by
Serverless Apps with AWS Step FunctionsServerless Apps with AWS Step Functions
Serverless Apps with AWS Step FunctionsAmanda Mackay (she/her)
672 views55 slides
Delightful steps to becoming a functioning user of Step Functions by
Delightful steps to becoming a functioning user of Step FunctionsDelightful steps to becoming a functioning user of Step Functions
Delightful steps to becoming a functioning user of Step FunctionsYan Cui
163 views75 slides
NEW LAUNCH! Serverless Apps with AWS Step Functions by
NEW LAUNCH! Serverless Apps with AWS Step FunctionsNEW LAUNCH! Serverless Apps with AWS Step Functions
NEW LAUNCH! Serverless Apps with AWS Step FunctionsAmazon Web Services
1.6K views49 slides
How to ship customer value faster with step functions by
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
1.5K views159 slides

Similar to QA Fest 2017. Яков Крамаренко. Minimum Usable Framework(20)

Pragmatic Parallels: Java and JavaScript by davejohnson
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
davejohnson1.2K views
How to ship customer value faster with step functions by Yan Cui
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
Yan Cui680 views
Delightful steps to becoming a functioning user of Step Functions by Yan Cui
Delightful steps to becoming a functioning user of Step FunctionsDelightful steps to becoming a functioning user of Step Functions
Delightful steps to becoming a functioning user of Step Functions
Yan Cui163 views
NEW LAUNCH! Serverless Apps with AWS Step Functions by Amazon Web Services
NEW LAUNCH! Serverless Apps with AWS Step FunctionsNEW LAUNCH! Serverless Apps with AWS Step Functions
NEW LAUNCH! Serverless Apps with AWS Step Functions
Amazon Web Services1.6K views
How to ship customer value faster with step functions by Yan Cui
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
Yan Cui1.5K views
SMC304 Serverless Orchestration with AWS Step Functions by Amazon Web Services
SMC304 Serverless Orchestration with AWS Step FunctionsSMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step Functions
Android Automated Testing by roisagiv
Android Automated TestingAndroid Automated Testing
Android Automated Testing
roisagiv142 views
Sherlock Homepage (Maarten Balliauw) by Visug
Sherlock Homepage (Maarten Balliauw)Sherlock Homepage (Maarten Balliauw)
Sherlock Homepage (Maarten Balliauw)
Visug536 views
Sherlock Homepage - A detective story about running large web services (VISUG... by Maarten Balliauw
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...
Maarten Balliauw1.2K views
Dev309 from asgard to zuul - netflix oss-final by Ruslan Meshenberg
Dev309  from asgard to zuul - netflix oss-finalDev309  from asgard to zuul - netflix oss-final
Dev309 from asgard to zuul - netflix oss-final
How to ship customer value faster with step functions by Yan Cui
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
Yan Cui652 views
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help... by Amazon Web Services
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
Amazon Web Services4.5K views
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time... by Zhenzhong Xu
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
FlinkForward Asia 2019 - Evolving Keystone to an Open Collaborative Real Time...
Zhenzhong Xu218 views
Why Java Needs Hierarchical Data by Marakana Inc.
Why Java Needs Hierarchical DataWhy Java Needs Hierarchical Data
Why Java Needs Hierarchical Data
Marakana Inc.2.2K views
Announcing AWS Step Functions - December 2016 Monthly Webinar Series by Amazon Web Services
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAnnouncing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
Amazon Web Services1.6K views

More from QAFest

QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин by
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQAFest
979 views44 slides
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future by
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQAFest
931 views44 slides
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe... by
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QAFest
322 views131 slides
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и... by
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QAFest
336 views92 slides
QA Fest 2019. Никита Галкин. Как зарабатывать больше by
QA Fest 2019. Никита Галкин. Как зарабатывать большеQA Fest 2019. Никита Галкин. Как зарабатывать больше
QA Fest 2019. Никита Галкин. Как зарабатывать большеQAFest
389 views40 slides
QA Fest 2019. Сергей Пирогов. Why everything is spoiled by
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQA Fest 2019. Сергей Пирогов. Why everything is spoiled
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQAFest
342 views33 slides

More from QAFest(20)

QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин by QAFest
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин
QAFest979 views
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future by QAFest
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QAFest931 views
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe... by QAFest
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...
QAFest322 views
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и... by QAFest
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QAFest336 views
QA Fest 2019. Никита Галкин. Как зарабатывать больше by QAFest
QA Fest 2019. Никита Галкин. Как зарабатывать большеQA Fest 2019. Никита Галкин. Как зарабатывать больше
QA Fest 2019. Никита Галкин. Как зарабатывать больше
QAFest389 views
QA Fest 2019. Сергей Пирогов. Why everything is spoiled by QAFest
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQA Fest 2019. Сергей Пирогов. Why everything is spoiled
QA Fest 2019. Сергей Пирогов. Why everything is spoiled
QAFest342 views
QA Fest 2019. Сергей Новик. Между мотивацией и выгоранием by QAFest
QA Fest 2019. Сергей Новик. Между мотивацией и выгораниемQA Fest 2019. Сергей Новик. Между мотивацией и выгоранием
QA Fest 2019. Сергей Новик. Между мотивацией и выгоранием
QAFest249 views
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н... by QAFest
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...
QAFest338 views
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV... by QAFest
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...
QAFest227 views
QA Fest 2019. Иван Крутов. Bulletproof Selenium Cluster by QAFest
QA Fest 2019. Иван Крутов. Bulletproof Selenium ClusterQA Fest 2019. Иван Крутов. Bulletproof Selenium Cluster
QA Fest 2019. Иван Крутов. Bulletproof Selenium Cluster
QAFest282 views
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе... by QAFest
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...
QAFest251 views
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз... by QAFest
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...
QAFest301 views
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automation by QAFest
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automationQA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automation
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automation
QAFest225 views
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в... by QAFest
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...
QAFest243 views
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa... by QAFest
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...
QAFest376 views
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях IT by QAFest
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях ITQA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях IT
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях IT
QAFest209 views
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении by QAFest
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложенииQA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении
QAFest607 views
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр... by QAFest
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...
QAFest321 views
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр... by QAFest
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...
QAFest296 views
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22 by QAFest
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22
QAFest164 views

Recently uploaded

Structure and Functions of Cell.pdf by
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdfNithya Murugan
545 views10 slides
MIXING OF PHARMACEUTICALS.pptx by
MIXING OF PHARMACEUTICALS.pptxMIXING OF PHARMACEUTICALS.pptx
MIXING OF PHARMACEUTICALS.pptxAnupkumar Sharma
77 views35 slides
ICS3211_lecture 08_2023.pdf by
ICS3211_lecture 08_2023.pdfICS3211_lecture 08_2023.pdf
ICS3211_lecture 08_2023.pdfVanessa Camilleri
149 views30 slides
Narration lesson plan by
Narration lesson planNarration lesson plan
Narration lesson planTARIQ KHAN
58 views11 slides
REPRESENTATION - GAUNTLET.pptx by
REPRESENTATION - GAUNTLET.pptxREPRESENTATION - GAUNTLET.pptx
REPRESENTATION - GAUNTLET.pptxiammrhaywood
100 views26 slides
Women from Hackney’s History: Stoke Newington by Sue Doe by
Women from Hackney’s History: Stoke Newington by Sue DoeWomen from Hackney’s History: Stoke Newington by Sue Doe
Women from Hackney’s History: Stoke Newington by Sue DoeHistory of Stoke Newington
150 views21 slides

Recently uploaded(20)

Structure and Functions of Cell.pdf by Nithya Murugan
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdf
Nithya Murugan545 views
Narration lesson plan by TARIQ KHAN
Narration lesson planNarration lesson plan
Narration lesson plan
TARIQ KHAN58 views
REPRESENTATION - GAUNTLET.pptx by iammrhaywood
REPRESENTATION - GAUNTLET.pptxREPRESENTATION - GAUNTLET.pptx
REPRESENTATION - GAUNTLET.pptx
iammrhaywood100 views
11.28.23 Social Capital and Social Exclusion.pptx by mary850239
11.28.23 Social Capital and Social Exclusion.pptx11.28.23 Social Capital and Social Exclusion.pptx
11.28.23 Social Capital and Social Exclusion.pptx
mary850239298 views
11.30.23 Poverty and Inequality in America.pptx by mary850239
11.30.23 Poverty and Inequality in America.pptx11.30.23 Poverty and Inequality in America.pptx
11.30.23 Poverty and Inequality in America.pptx
mary850239160 views
Solar System and Galaxies.pptx by DrHafizKosar
Solar System and Galaxies.pptxSolar System and Galaxies.pptx
Solar System and Galaxies.pptx
DrHafizKosar91 views
7 NOVEL DRUG DELIVERY SYSTEM.pptx by Sachin Nitave
7 NOVEL DRUG DELIVERY SYSTEM.pptx7 NOVEL DRUG DELIVERY SYSTEM.pptx
7 NOVEL DRUG DELIVERY SYSTEM.pptx
Sachin Nitave61 views
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively by PECB
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks EffectivelyISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively
ISO/IEC 27001 and ISO/IEC 27005: Managing AI Risks Effectively
PECB 585 views
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx by Ms. Pooja Bhandare
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptxPharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx
Pharmaceutical Inorganic chemistry UNIT-V Radiopharmaceutical.pptx
Ch. 8 Political Party and Party System.pptx by Rommel Regala
Ch. 8 Political Party and Party System.pptxCh. 8 Political Party and Party System.pptx
Ch. 8 Political Party and Party System.pptx
Rommel Regala49 views
How to empty an One2many field in Odoo by Celine George
How to empty an One2many field in OdooHow to empty an One2many field in Odoo
How to empty an One2many field in Odoo
Celine George65 views
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant... by Ms. Pooja Bhandare
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...
Pharmaceutical Inorganic Chemistry Unit IVMiscellaneous compounds Expectorant...

QA Fest 2017. Яков Крамаренко. Minimum Usable Framework

  • 2. Part 1 :) Minimum Valuable Framework
  • 4. Preface There are good practices in context, but there are no best practices. (c) Cem Kaner, James Bach
  • 8. Library Browser automation tool fast, standard, powerful, low level Lacks: lazy elements implicit waits for visibility readability handy assertions Informative errors Custom action hooks TEST automation tool slower, pretty powerful, user oriented Has: lazy elements implicit waits for visibility readability handy assertions ~ “Informative errors” Some hooks… Limits: In integration with 3rd party (Driver management, Configuration) Opinionated: … Framework
  • 9. Library Browser automation tool fast, standard, powerful, low level Lacks: lazy elements implicit waits for visibility readability handy assertions Informative errors Custom action hooks Framework TEST automation tool slower, pretty powerful, user oriented Has: lazy elements implicit waits for visibility readability handy assertions ~ “Informative errors” Some hooks… Limits:… Opinionated: Static Driver SuperRadioSelectEtcElement
  • 11. Static driver? vs BaseTest:) public class BaseTest { public static WebDriver driver = new ChromeDriver(); @AfterClass public static void driverTearDown() { driver.quit(); } public void open(String url) { return driver.get(url); } public WebElement $(String css) { return driver.findElement(By.cssSelector(css)); } public List<WebElement> $$(String css) { return driver.findElements(By.cssSelector(css)); } }
  • 12. public class TodoMvcTest extends BaseTest { @Test public void adds_task() { open("http:!//todomvc.com/examples/emberjs/"); $("#new-todo").sendKeys("a" + Keys.ENTER); $("#new-todo").sendKeys("b" + Keys.ENTER); $("#new-todo").sendKeys("c" + Keys.ENTER); assertEquals("a", $$("#todo-list>li").get(0).getText()); assertEquals("b", $$("#todo-list>li").get(1).getText()); assertEquals("c", $$("#todo-list>li").get(2).getText()); assertEquals(3, $$("#todo-list>li").size()); } } Static driver? vs BaseTest:)
  • 14. SuperRadioSelectEtcElement? vs … public class RegistrationTest extends BaseTest { @Test public void registers() { !!... $(“#first-name").setValue("Iakiv"); $(“#last-name").setValue("Kramarenko"); $(“#sex").selectRadio("Mail"); $(“#country").selectOption("Ukraine"); … } }
  • 16. SuperPlatypusElement? vs Widgets public class RegistrationTest extends BaseTest { @Test public void registers() { !!... new Box("#first-name").set("Iakiv"); new Box("#last-name").set("Kramarenko"); new Radio("#sex").set("Mail"); new Select("#country").set("Ukraine"); … } }
  • 17. SuperPlatypusElement? vs Widgets public class RegistrationTest extends BaseTest { @Test public void registers() { !!... form.box(“#first-name").set("Iakiv"); form.box(“#last-name").set("Kramarenko"); form.radio(“#sex").set("Mail"); form.select(“#country").set("Ukraine"); … } }
  • 18. SuperPlatypusElement? vs Freedom public class RegistrationTest extends BaseTest { @Test public void registers() { !!... new SuperElement(“#first-name").setValue("Iakiv"); new SuperElement(“#last-name").setValue("Kramarenko"); new SuperElement(“#sex").selectRadio("Mail"); new SuperElement(“#country").selectOption("Ukraine"); … } }
  • 19. SuperPlatypusElement? vs Freedom public class RegistrationTest extends BaseTest { @Test public void registers() { !!... _(“#first-name”).setValue("Iakiv"); _(“#last-name”).setValue("Kramarenko"); _(“#sex”).selectRadio("Mail"); _(“#country”).selectOption("Ukraine"); … } }
  • 20. Library Browser automation tool fast, standard, powerful, low level Lacks: lazy elements implicit waits for visibility readability handy assertions Informative errors Custom action hooks Framework TEST automation tool slower, pretty powerful, user oriented Has: lazy elements implicit waits for visibility readability handy assertions ~ “Informative errors” Some hooks… Limits:… Opinionated: Static Driver SuperRadioSelectEtcElement MUF?
  • 21. LibraryFramework MUF? TEST automation tool lazy elements implicit waits for action succeeded handy assertions informative errors readable consistent natural (PlatypusElement) user oriented As less opinionated as possible
  • 22. Demo
  • 23. - food for the brain inDependency
  • 24. - food for the brain Technical Feng shui vs Team & Processes
  • 25. - food for the brain
  • 26. Afterwords There are good practices in context, but there are no best practices. (c) Cem Kaner, James Bach
  • 27. Q&A