Как мы bdd внедряли
DESCRIPTION
TRANSCRIPT
Как мы 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 нужно допиливать
• Автотестирование ≈ разработка
• “Между делом” – не годится
• Много усилий
Спасибо!