bdd in python - Кирилл Борисов, pycon ru 2014
DESCRIPTION
TRANSCRIPT
![Page 1: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/1.jpg)
BDD IN PYTHON
![Page 2: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/2.jpg)
WATERFALL
• Применяется с 1956 года
• Длительный цикл разработки
• Переход между стадиями только при завершении предыдущей
• Все зависит от первоначальных требований
![Page 3: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/3.jpg)
XP (EXTREME PROGRAMMING)
• Повышение качества конечного ПО
• Частые релизы
• Короткие циклы разработки
• Постоянный контакт с заказчиком
• Быстрая реакция на изменение требований
![Page 4: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/4.jpg)
TDD(TEST-DRIVEN DEVELOPMENT)
• Возник как следствие XP
• Во главе угла – контроль качества
• Короткий цикл разработки:
– Написание тестов
– Написание кода
– Рефакторинг кода
• Быстрая локализация ошибок
![Page 5: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/5.jpg)
ВОПРОСЫ К TDD
• «А что мы тестируем?»
• «Каков объем тестов?»
• «Как называть тесты?»
• «Из-за чего произошла ошибка?»
![Page 6: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/6.jpg)
TDDНЕ ВСЕ ТАК ПРОСТО :-(
![Page 7: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/7.jpg)
BEHAVIOR-DRIVEN DEVELOPMENT
"BDD is a second-generation, outside-in, pull-based, multiple-stakeholder,
multiple-scale, high automation, agile methodology".
Dan North
![Page 8: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/8.jpg)
BDDОСНОВНЫЕ ВЕХИ
• 2004 - начата работа над JBehave
• 2006 - выходит статья "Introducing BDD"
• 2007 - создается RBehave, RSpec.
• 2009 - выходит первая версия Cucumber.
![Page 9: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/9.jpg)
BDDЦИКЛ РАЗРАБОТКИ
1. Анализ User Story
2. Расстановка приоритетов
3. Создание и рефакторинг сценария
4. Написание кода
5. Рефакторинг кода
6. ?????????
7. PROFIT!!!
![Page 10: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/10.jpg)
BDDДЬЯВОЛ В МЕЛОЧАХ
• BDD дополняет TDD
• Сценарии поведения не заменяют тестов
• Придется вспомнить русский язык
• Придется общаться с людьми :-(
![Page 11: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/11.jpg)
BDDGHERKIN
• Язык описания поведения системы
• Основные сущности:
• Функции (Feature)
• Сценарии (Scenario)
• Шаги (Given, When, Then)
![Page 12: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/12.jpg)
BDDПРИМЕР СЦЕНАРИЯ НА GHERKIN
Функция: срабатывание флага уведомления Для того, чтобы быть в курсе состояния акций В качестве трейдера Я хочу получать оповещения о изменениях курса
Сценарий: трейдер уведомляется о превышении Дано акции и порог оповещения равен 15.0 Когда стоимость акций равна 6 То уведомление в состоянии "ВЫКЛ" Когда стоимость акций равна 16 То уведомление в состоянии "ВКЛ"
![Page 13: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/13.jpg)
LETTUCEhttp://lettuce.it
• Сравнительно точный порт Cucumber
• Интеграция с Django
• Ручное управление общим состоянием
• Не очень стабильная работа
![Page 14: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/14.jpg)
FRESHENhttps://github.com/rlisagor/freshen
• Различные контексты исполнения
• Интеграция с nose
• Интеграция с nose
• Мало обработчиков этапов исполнения
![Page 15: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/15.jpg)
CUCUMBERhttp://cukes.info
• Он работает!
• Работа через rubypython
• Ruby? В моем Python?!
![Page 16: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/16.jpg)
BEHAVEhttp://pythonhosted.org/behave
• Гибкая настройка
• Подробная документация
• Поддержка тэгов (--tags)
• Активно развивается
• Среднее качество кода :-(
![Page 17: Bdd in python - Кирилл Борисов, PyCon RU 2014](https://reader033.vdocuments.net/reader033/viewer/2022061223/54c5225a4a7959c9708b4579/html5/thumbnails/17.jpg)
PYVOWShttp://heynemann.github.io/pyvows/
• Асинхронное выполнение тестов
• Сценарий описыватся в коде (путь xBehave)
• Трудночитаемый синтаксис