Как мы BDD внедряли

Preview:

DESCRIPTION

 

Citation preview

Как мы BDD

внедряли

Юра Литвиненко

• Джавист• http://linkd.in/lytvynenko

•@surg

speechat.co

Новый проект

Новый проект

• 3 программиста

Новый проект

• 3 программиста

• 1 тестировщик

Новый проект

• 3 программиста

• 1 тестировщик

• 1/2 тестировщика

Задача

Помогать

с авто-тестированием

Процесс: QA

• QA записывает макрос в Selenium

Процесс: QA

• QA записывает макрос в Selenium

• Транслирует в Java код

Процесс: QA

• QA записывает макрос в Selenium

• Транслирует в Java код

• Отдает мне

Процесс: Я

• Беру код

Процесс: Я

• Беру код•Делаю его рабочим

Процесс: Я

• Беру код•Делаю его рабочим

• Добавляю к автотестам

• PROFIT!

Практика

Практика

• Выдача Selenium’а ужасна

Практика

• Выдача Selenium’а ужасна

• Все завязано на xpath’ы

Практика

• Выдача Selenium’а ужасна

• Все завязано на xpath’ы

• ... и сгенерированные id

Практика

• Выдача Selenium’а ужасна

• Все завязано на xpath’ы

• ... и сгенерированные id

• Малейшее изменение = падение

А давайте...

BDD

Что за зверь BDD?

• QA (или заказчик) пишет истории

• Dev делает их исполняемыми

Структура истории

Структура истории

• Состоит из сценариев

Структура истории

• Состоит из сценариев• Каждый сценарий – из секций:

Структура истории

• Состоит из сценариев• Каждый сценарий – из секций:

• Given

• When

• Then

Например

НапримерGiven  user  opens  login  page

НапримерGiven  user  opens  login  page

When  user  inputs  admin  into  field  Username

НапримерGiven  user  opens  login  page

When  user  inputs  admin  into  field  Username

And  user  inputs  admin  into  field  Password

НапримерGiven  user  opens  login  page

When  user  inputs  admin  into  field  Username

And  user  inputs  admin  into  field  Password

And  user  clicks  button  Login

НапримерGiven  user  opens  login  page

When  user  inputs  admin  into  field  Username

And  user  inputs  admin  into  field  Password

And  user  clicks  button  Login

Then  user  is  logged  in

НапримерGiven  user  opens  login  page

When  user  inputs  admin  into  field  Username

And  user  inputs  admin  into  field  Password

And  user  clicks  button  Login

Then  user  is  logged  in

BDD: поддержка

• JBehave (java)

•Cucumber, RSpec (ruby)

• Specflow (.net)

• Behat (php)

• etc.

BDD: Начало

• JBehave и WebDrive 2

BDD: Начало

• JBehave и WebDrive 2

• Определил набор фраз

BDD: Начало

• JBehave и WebDrive 2

• Определил набор фраз• ... которые стали кирпичиками историй

Базовые фразыwhen  user  inputs  $value  into  field  $label

Базовые фразыwhen  user  inputs  $value  into  field  $label

when  user  clicks  button  $text

Базовые фразыwhen  user  inputs  $value  into  field  $label

when  user  clicks  button  $text

when  user  selects  file  $fileName

...

Продвинутые фразыgiven  $username  logs  in  with  password  $password

Продвинутые фразыgiven  $username  logs  in  with  password  $password

when  user  clicks  $folder  in  Breadcrumbs

Продвинутые фразыgiven  $username  logs  in  with  password  $password

when  user  clicks  $folder  in  Breadcrumbs

then  popup  error  message  '$message'  is  shown

...

ИсторииScenario:  Wrong  user  name  login

ИсторииScenario:  Wrong  user  name  login

Given  user  opens  login  page

ИсторииScenario:  Wrong  user  name  login

Given  user  opens  login  page

When  user  inputs  nonexistentlogin  into  field  Username

...

ИсторииAnd  user  inputs  123  into  field  Password

ИсторииAnd  user  inputs  123  into  field  Password

And  user  clicks  button  Login

ИсторииAnd  user  inputs  123  into  field  Password

And  user  clicks  button  Login

Then  popup  error  message  'Wrong  login  or  password'  is  shown

Что получилось?

Что получилось?

• Сложные истории

Что получилось?

• Сложные истории• Скриншоты ошибок

Что получилось?

• Сложные истории• Скриншоты ошибок

• Эмуляция двойного и правого кликов

Проблемы

Проблемы

• Опечатки

Проблемы

• Опечатки• Запуск из командной строки

Проблемы

• Опечатки• Запуск из командной строки• ... хитрой командой

Проблемы

• Опечатки• Запуск из командной строки• ... хитрой командой

• Поддержка браузеров

Проблемы

• Опечатки• Запуск из командной строки• ... хитрой командой

• Поддержка браузеров• Отчеты

Выводы

Выводы

• Много взаимодействия QA – Dev

Выводы

• Много взаимодействия QA – Dev

• Selenium нужно допиливать

Выводы

• Много взаимодействия QA – Dev

• Selenium нужно допиливать

• Автотестирование ≈ разработка

Выводы

• Много взаимодействия QA – Dev

• Selenium нужно допиливать

• Автотестирование ≈ разработка

• “Между делом” – не годится

Выводы

• Много взаимодействия QA – Dev

• Selenium нужно допиливать

• Автотестирование ≈ разработка

• “Между делом” – не годится

• Много усилий

Спасибо!