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

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

Upload: yuriy-lytvynenko

Post on 25-Dec-2014

1.165 views

Category:

Documents


8 download

DESCRIPTION

 

TRANSCRIPT

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

Как мы BDD

внедряли

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

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

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

•@surg

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

speechat.co

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

Новый проект

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

Новый проект

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

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

Новый проект

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

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

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

Новый проект

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

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

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

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

Задача

Помогать

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

Page 9: Как мы BDD внедряли
Page 10: Как мы BDD внедряли

Процесс: QA

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

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

Процесс: QA

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

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

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

Процесс: QA

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

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

• Отдает мне

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

Процесс: Я

• Беру код

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

Процесс: Я

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

Page 15: Как мы BDD внедряли
Page 16: Как мы BDD внедряли

Процесс: Я

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

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

• PROFIT!

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

Практика

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

Практика

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

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

Практика

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

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

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

Практика

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

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

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

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

Практика

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

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

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

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

Page 22: Как мы BDD внедряли
Page 23: Как мы BDD внедряли

А давайте...

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

BDD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• Given

• When

• Then

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

Например

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

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

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

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

When  user  inputs  admin  into  field  Username

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

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

When  user  inputs  admin  into  field  Username

And  user  inputs  admin  into  field  Password

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

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

When  user  inputs  admin  into  field  Username

And  user  inputs  admin  into  field  Password

And  user  clicks  button  Login

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

Например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

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

Например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

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

BDD: поддержка

• JBehave (java)

•Cucumber, RSpec (ruby)

• Specflow (.net)

• Behat (php)

• etc.

Page 38: Как мы BDD внедряли
Page 39: Как мы BDD внедряли

BDD: Начало

• JBehave и WebDrive 2

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

BDD: Начало

• JBehave и WebDrive 2

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

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

BDD: Начало

• JBehave и WebDrive 2

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

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

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

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

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

when  user  clicks  button  $text

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

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

when  user  clicks  button  $text

when  user  selects  file  $fileName

...

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

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

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

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

when  user  clicks  $folder  in  Breadcrumbs

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

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

when  user  clicks  $folder  in  Breadcrumbs

then  popup  error  message  '$message'  is  shown

...

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

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

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

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

Given  user  opens  login  page

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

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

Given  user  opens  login  page

When  user  inputs  nonexistentlogin  into  field  Username

...

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

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

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

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

And  user  clicks  button  Login

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

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

And  user  clicks  button  Login

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проблемы

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

Проблемы

• Опечатки

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

Проблемы

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

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

Проблемы

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

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

Проблемы

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

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

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

Проблемы

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

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

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

Выводы

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

Выводы

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

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

Выводы

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

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

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

Выводы

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

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

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

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

Выводы

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

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

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

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

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

Выводы

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

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

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

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

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

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

Спасибо!