SlideShare a Scribd company logo
1 of 13
ПРЕАМБУЛА 
Всем известна бородатая шутка из «Журнала 
невоспроизводимых результатов» о том, сколь 
вредны огурцы: «среди людей, родившихся в 1839 г. и 
питавшихся впоследствии огурцами, смертность 
равна 100%», «99,9% всех людей, умерших от рака, при 
жизни ели огурцы» и т.д. и т.п. 
Так вот, данная презентация вообще не об 
этом. Какие к черту шутки?! Умирают люди!
ЭЙНШТЕЙН И АВТОМАТИЗАЦИЯ 
Работая над своей общей 
теорией фреймворков 
автоматизации 
тестирования, Эйнштейн 
якобы сказал: «Две вещи 
бесконечны: Вселенная и 
человеческая глупость; и 
насчет Вселенной я не 
уверен».
СЛЕДСТВИЕ КАПИТАНА ХАОСА 
Мы не знаем, кто в действительности является автором 
этого, безусловно, справедливого, наблюдения. 
Тем не менее, возьмем на себя смелость 
сформулировать так называемое следствие Капитана 
Хаоса: 
ЕСЛИ ВЫ СТРЕМИТЕСЬ К ТОМУ, ЧТОБЫ ВАШИМ 
ФРЕЙМВОРКОМ МОГЛИ ПОЛЬЗОВАТЬСЯ ДАЖЕ 
ДЕБИЛЫ, ИМЕННО ОНИ ИМ И БУДУТ ПОЛЬЗОВАТЬСЯ.
ЗНАЙ ВРАГА В ЛИЦО!
ИТАК, CUCUMBER 
Вся низость и коварство этого инструмента проявляется в том, 
что на бумаге все выглядит охуенно. 
• Бизнес-аналитики, не напрягаясь, описывают желаемые фичи 
на человеческом языке; 
• Счастливые разработчики тут же запускают полученные 
сценарии и, убедившись, что ничего не работает, пишут 
тестовый код; 
• Покончив с этим, усталые и довольные разработчики 
добавляют в продуктовый код парочку констант и 
захардкоданных магических чисел, чтобы тесты стали 
зелеными; 
• Cucumber генерирует аккуратные отчеты во всевозможных 
форматах, взглянув на которые, начальство тут же повышает 
всем зарплаты и уезжает на месяц играть в гольф; 
• После чего вся команда резвится на залитом солнцем лугу, 
играя с котятами, щенками и утятами.
ГДЕ ПОДВОХ? 
Что же происходит в реальности? 
• Бизнес-аналитики чхать хотели на какие-то там 
Cucumber-сценарии. «Мы наняли команду 
автоматизаторов, вот они пускай и пишут тесты»; 
• Матерясь и наступая на все возможные грабли, 
разработчики и автоматизаторы пишут сценарии и 
степы к ним, которые потом все равно никто не читает; 
• По мере того, как в команде сменяются кадры, общая 
архитектура тестового фреймворка асимптотически 
стремится к модели Big ball of mud.
ГДЕ ПОДВОХ?
К ЧЕМУ ВСЕ ЭТО ВЕДЕТ? 
• «Так, напишем с десяток сценариев про нашу фичу. Да это же 
настоящая живая документация! Ништяк!» 
• «Ну вот, автоматические acceptance-тесты у нас есть. Но надо 
бы нахуячить и всяких там еще других. Зачем выбирать какой- 
то другой инструмент, ведь есть же Cucumber? Что плохого, 
если начальство и прочие двоечники смогут читать наши 
интеграционные тесты? Ничего плохого, погнали!» 
• «End-to-end-сценарии? Где-то мы уже слышали это слово 
«сценарий». Cucumber спешит на помощь! Да и опять же, 
начальство сможет почитать. Ну, если захочет, конечно…» 
И вот у вас уже полноразмерная автоматическая сюита на 
Cucumber’е, покрывающая решительно все, что только есть в 
вашем приложении.
ГДЕ ПОДВОХ? 
Вся печаль ситуации заключается в том, что Cucumber в 
принципе не предназначен для тестирования. Он 
вообще непонятно для чего предназначен: для решения 
какой-то полумифической проблемы коммуникации, 
которой в большинстве команд просто нет, либо она 
успешно решается другими, менее хипстерскими 
способами. 
Не верите мне, так послушайте хотя бы дядю Аслака.
ВОНМИ АСЛАКУ 
«Не вздумай тестировать с помощью Cucumber», как бы говорит нам Аслак.
ЛЕММА КАПИТАНА ХАОСА 
Позволим себе скромно сформулировать следующую 
лемму: 
ОГУРЦЫ СЛЕДУЕТ УПОТРЕБЛЯТЬ 
ТОЛЬКО В ПИЩУ. 
ДЛЯ ВСЕГО ОСТАЛЬНОГО ЕСТЬ 
СООТВЕТСТВУЮЩИЕ 
ИНСТРУМЕНТЫ.
ВОПРОСЫ?

More Related Content

What's hot

ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsJames Dennis
 
CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛Kazuki Aranami
 
Game Architecture with Scriptable Objects
Game Architecture with Scriptable ObjectsGame Architecture with Scriptable Objects
Game Architecture with Scriptable ObjectsRyan Hipple
 
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性ikeyat
 
Rapid prototyping with ScriptableObjects
Rapid prototyping with ScriptableObjectsRapid prototyping with ScriptableObjects
Rapid prototyping with ScriptableObjectsGiorgio Pomettini
 
Manual de usuario de virtual box en español javier
Manual de usuario de virtual box en español javierManual de usuario de virtual box en español javier
Manual de usuario de virtual box en español javierjavi1991
 
PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話Norifumi Kawamoto
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...VMware Tanzu
 
DNS – domain name system
DNS – domain name systemDNS – domain name system
DNS – domain name systemMariana Amorim
 
The hidden power of network maps on Zabbix
The hidden power of network maps on ZabbixThe hidden power of network maps on Zabbix
The hidden power of network maps on ZabbixRicardo Santos
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてAya Ebata
 
Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話m ishizaki
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 

What's hot (20)

ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 Labs
 
Máscaras de sub
Máscaras de subMáscaras de sub
Máscaras de sub
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
 
CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛
 
Game Architecture with Scriptable Objects
Game Architecture with Scriptable ObjectsGame Architecture with Scriptable Objects
Game Architecture with Scriptable Objects
 
THREADS EM JAVA: INTRODUÇÃO
THREADS EM JAVA: INTRODUÇÃOTHREADS EM JAVA: INTRODUÇÃO
THREADS EM JAVA: INTRODUÇÃO
 
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性
[JSUG SpringOne 2021 報告会]見えてきたSpring 6.0の方向性
 
Rapid prototyping with ScriptableObjects
Rapid prototyping with ScriptableObjectsRapid prototyping with ScriptableObjects
Rapid prototyping with ScriptableObjects
 
Manual de usuario de virtual box en español javier
Manual de usuario de virtual box en español javierManual de usuario de virtual box en español javier
Manual de usuario de virtual box en español javier
 
Linux 101
Linux 101Linux 101
Linux 101
 
PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話PHPのテスト名を日本語にした話
PHPのテスト名を日本語にした話
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...
 
DNS – domain name system
DNS – domain name systemDNS – domain name system
DNS – domain name system
 
The hidden power of network maps on Zabbix
The hidden power of network maps on ZabbixThe hidden power of network maps on Zabbix
The hidden power of network maps on Zabbix
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
 
Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 

Viewers also liked

Amusing Geometry in Test Automation
Amusing Geometry in Test AutomationAmusing Geometry in Test Automation
Amusing Geometry in Test AutomationÞorgeir Ingvarsson
 
Part II. How to automate properly
Part II. How to automate properlyPart II. How to automate properly
Part II. How to automate properlyÞorgeir Ingvarsson
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииDeutsche Post
 
Моделирование угроз для приложений
Моделирование угроз для приложенийМоделирование угроз для приложений
Моделирование угроз для приложенийSQALab
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
 
Безопасность мобильных приложений. Что тестировать?
Безопасность мобильных приложений. Что тестировать?Безопасность мобильных приложений. Что тестировать?
Безопасность мобильных приложений. Что тестировать?SQALab
 

Viewers also liked (9)

Amusing Geometry in Test Automation
Amusing Geometry in Test AutomationAmusing Geometry in Test Automation
Amusing Geometry in Test Automation
 
How to write good autotests
How to write good autotestsHow to write good autotests
How to write good autotests
 
Part II. How to automate properly
Part II. How to automate properlyPart II. How to automate properly
Part II. How to automate properly
 
Tao and Test Automation
Tao and Test AutomationTao and Test Automation
Tao and Test Automation
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
 
Моделирование угроз для приложений
Моделирование угроз для приложенийМоделирование угроз для приложений
Моделирование угроз для приложений
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
Безопасность мобильных приложений. Что тестировать?
Безопасность мобильных приложений. Что тестировать?Безопасность мобильных приложений. Что тестировать?
Безопасность мобильных приложений. Что тестировать?
 
Priority Inversion on Mars
Priority Inversion on MarsPriority Inversion on Mars
Priority Inversion on Mars
 

More from Þorgeir Ingvarsson

Mortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersMortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersÞorgeir Ingvarsson
 
Pros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistPros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistÞorgeir Ingvarsson
 
How to Calculate Test Automation ROI
How to Calculate Test Automation ROIHow to Calculate Test Automation ROI
How to Calculate Test Automation ROIÞorgeir Ingvarsson
 
How to Put Automation Engineers Down
How to Put Automation Engineers DownHow to Put Automation Engineers Down
How to Put Automation Engineers DownÞorgeir Ingvarsson
 
Basics of assertions in automated testing
Basics of assertions in automated testingBasics of assertions in automated testing
Basics of assertions in automated testingÞorgeir Ingvarsson
 
UI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternUI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternÞorgeir Ingvarsson
 
Part I. How to stop fooling around and begin automating
Part I. How to stop fooling around and begin automatingPart I. How to stop fooling around and begin automating
Part I. How to stop fooling around and begin automatingÞorgeir Ingvarsson
 
Part III. How to maximize profit from automation
Part III. How to maximize profit from automationPart III. How to maximize profit from automation
Part III. How to maximize profit from automationÞorgeir Ingvarsson
 

More from Þorgeir Ingvarsson (8)

Mortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersMortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation Engineers
 
Pros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation SpecialistPros and Cons of Being an Automation Specialist
Pros and Cons of Being an Automation Specialist
 
How to Calculate Test Automation ROI
How to Calculate Test Automation ROIHow to Calculate Test Automation ROI
How to Calculate Test Automation ROI
 
How to Put Automation Engineers Down
How to Put Automation Engineers DownHow to Put Automation Engineers Down
How to Put Automation Engineers Down
 
Basics of assertions in automated testing
Basics of assertions in automated testingBasics of assertions in automated testing
Basics of assertions in automated testing
 
UI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternUI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" Pattern
 
Part I. How to stop fooling around and begin automating
Part I. How to stop fooling around and begin automatingPart I. How to stop fooling around and begin automating
Part I. How to stop fooling around and begin automating
 
Part III. How to maximize profit from automation
Part III. How to maximize profit from automationPart III. How to maximize profit from automation
Part III. How to maximize profit from automation
 

The Dangers of Cucumber

  • 1.
  • 2. ПРЕАМБУЛА Всем известна бородатая шутка из «Журнала невоспроизводимых результатов» о том, сколь вредны огурцы: «среди людей, родившихся в 1839 г. и питавшихся впоследствии огурцами, смертность равна 100%», «99,9% всех людей, умерших от рака, при жизни ели огурцы» и т.д. и т.п. Так вот, данная презентация вообще не об этом. Какие к черту шутки?! Умирают люди!
  • 3. ЭЙНШТЕЙН И АВТОМАТИЗАЦИЯ Работая над своей общей теорией фреймворков автоматизации тестирования, Эйнштейн якобы сказал: «Две вещи бесконечны: Вселенная и человеческая глупость; и насчет Вселенной я не уверен».
  • 4. СЛЕДСТВИЕ КАПИТАНА ХАОСА Мы не знаем, кто в действительности является автором этого, безусловно, справедливого, наблюдения. Тем не менее, возьмем на себя смелость сформулировать так называемое следствие Капитана Хаоса: ЕСЛИ ВЫ СТРЕМИТЕСЬ К ТОМУ, ЧТОБЫ ВАШИМ ФРЕЙМВОРКОМ МОГЛИ ПОЛЬЗОВАТЬСЯ ДАЖЕ ДЕБИЛЫ, ИМЕННО ОНИ ИМ И БУДУТ ПОЛЬЗОВАТЬСЯ.
  • 6. ИТАК, CUCUMBER Вся низость и коварство этого инструмента проявляется в том, что на бумаге все выглядит охуенно. • Бизнес-аналитики, не напрягаясь, описывают желаемые фичи на человеческом языке; • Счастливые разработчики тут же запускают полученные сценарии и, убедившись, что ничего не работает, пишут тестовый код; • Покончив с этим, усталые и довольные разработчики добавляют в продуктовый код парочку констант и захардкоданных магических чисел, чтобы тесты стали зелеными; • Cucumber генерирует аккуратные отчеты во всевозможных форматах, взглянув на которые, начальство тут же повышает всем зарплаты и уезжает на месяц играть в гольф; • После чего вся команда резвится на залитом солнцем лугу, играя с котятами, щенками и утятами.
  • 7. ГДЕ ПОДВОХ? Что же происходит в реальности? • Бизнес-аналитики чхать хотели на какие-то там Cucumber-сценарии. «Мы наняли команду автоматизаторов, вот они пускай и пишут тесты»; • Матерясь и наступая на все возможные грабли, разработчики и автоматизаторы пишут сценарии и степы к ним, которые потом все равно никто не читает; • По мере того, как в команде сменяются кадры, общая архитектура тестового фреймворка асимптотически стремится к модели Big ball of mud.
  • 9. К ЧЕМУ ВСЕ ЭТО ВЕДЕТ? • «Так, напишем с десяток сценариев про нашу фичу. Да это же настоящая живая документация! Ништяк!» • «Ну вот, автоматические acceptance-тесты у нас есть. Но надо бы нахуячить и всяких там еще других. Зачем выбирать какой- то другой инструмент, ведь есть же Cucumber? Что плохого, если начальство и прочие двоечники смогут читать наши интеграционные тесты? Ничего плохого, погнали!» • «End-to-end-сценарии? Где-то мы уже слышали это слово «сценарий». Cucumber спешит на помощь! Да и опять же, начальство сможет почитать. Ну, если захочет, конечно…» И вот у вас уже полноразмерная автоматическая сюита на Cucumber’е, покрывающая решительно все, что только есть в вашем приложении.
  • 10. ГДЕ ПОДВОХ? Вся печаль ситуации заключается в том, что Cucumber в принципе не предназначен для тестирования. Он вообще непонятно для чего предназначен: для решения какой-то полумифической проблемы коммуникации, которой в большинстве команд просто нет, либо она успешно решается другими, менее хипстерскими способами. Не верите мне, так послушайте хотя бы дядю Аслака.
  • 11. ВОНМИ АСЛАКУ «Не вздумай тестировать с помощью Cucumber», как бы говорит нам Аслак.
  • 12. ЛЕММА КАПИТАНА ХАОСА Позволим себе скромно сформулировать следующую лемму: ОГУРЦЫ СЛЕДУЕТ УПОТРЕБЛЯТЬ ТОЛЬКО В ПИЩУ. ДЛЯ ВСЕГО ОСТАЛЬНОГО ЕСТЬ СООТВЕТСТВУЮЩИЕ ИНСТРУМЕНТЫ.