BDD IN PYTHON
WATERFALL
• Применяется с 1956 года
• Длительный цикл разработки
• Переход между стадиями только при
завершении предыдущей...
XP
(EXTREME PROGRAMMING)
• Повышение качества конечного ПО
• Частые релизы
• Короткие циклы разработки
• Постоянный контак...
TDD
(TEST-DRIVEN DEVELOPMENT)
• Возник как следствие XP
• Во главе угла – контроль качества
• Короткий цикл разработки:
– ...
ВОПРОСЫ К TDD
• «А что мы тестируем?»
• «Каков объем тестов?»
• «Как называть тесты?»
• «Из-за чего произошла ошибка?»
TDD
НЕ ВСЕ ТАК ПРОСТО :-(
BEHAVIOR-DRIVEN DEVELOPMENT
"BDD is a second-generation, outside-in,
pull-based, multiple-stakeholder,
multiple-scale, hig...
BDD
ОСНОВНЫЕ ВЕХИ
• 2004 - начата работа над JBehave
• 2006 - выходит статья "Introducing BDD"
• 2007 - создается RBehave,...
BDD
ЦИКЛ РАЗРАБОТКИ
1. Анализ User Story
2. Расстановка приоритетов
3. Создание и рефакторинг сценария
4. Написание кода
5...
BDD
ДЬЯВОЛ В МЕЛОЧАХ
• BDD дополняет TDD
• Сценарии поведения не заменяют тестов
• Придется вспомнить русский язык
• Приде...
BDD
GHERKIN
• Язык описания поведения системы
• Основные сущности:
• Функции (Feature)
• Сценарии (Scenario)
• Шаги (Given...
BDD
ПРИМЕР СЦЕНАРИЯ НА GHERKIN
Функция: срабатывание флага уведомления
Для того, чтобы быть в курсе состояния акций
В каче...
LETTUCE
http://lettuce.it
• Сравнительно точный порт Cucumber
• Интеграция с Django
• Ручное управление общим состоянием
•...
FRESHEN
https://github.com/rlisagor/freshen
• Различные контексты исполнения
• Интеграция с nose
• Интеграция с nose
• Мал...
CUCUMBER
http://cukes.info
• Он работает!
• Работа через rubypython
• Ruby? В моем Python?!
BEHAVE
http://pythonhosted.org/behave
• Гибкая настройка
• Подробная документация
• Поддержка тэгов (--tags)
• Активно раз...
PYVOWS
http://heynemann.github.io/pyvows/
• Асинхронное выполнение тестов
• Сценарий описыватся в коде (путь xBehave)
• Тр...
ВОПРОСЫ?
Борисов Кирилл
БАРС Груп
Архитектор ПО
twitter: @lensvol
skype: kirbars
borisov@bars-open.ru
Upcoming SlideShare
Loading in …5
×

Bdd in python - Кирилл Борисов, PyCon RU 2014

816 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
816
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Bdd in python - Кирилл Борисов, PyCon RU 2014

  1. 1. BDD IN PYTHON
  2. 2. WATERFALL • Применяется с 1956 года • Длительный цикл разработки • Переход между стадиями только при завершении предыдущей • Все зависит от первоначальных требований
  3. 3. XP (EXTREME PROGRAMMING) • Повышение качества конечного ПО • Частые релизы • Короткие циклы разработки • Постоянный контакт с заказчиком • Быстрая реакция на изменение требований
  4. 4. TDD (TEST-DRIVEN DEVELOPMENT) • Возник как следствие XP • Во главе угла – контроль качества • Короткий цикл разработки: – Написание тестов – Написание кода – Рефакторинг кода • Быстрая локализация ошибок
  5. 5. ВОПРОСЫ К TDD • «А что мы тестируем?» • «Каков объем тестов?» • «Как называть тесты?» • «Из-за чего произошла ошибка?»
  6. 6. TDD НЕ ВСЕ ТАК ПРОСТО :-(
  7. 7. BEHAVIOR-DRIVEN DEVELOPMENT "BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high automation, agile methodology". Dan North
  8. 8. BDD ОСНОВНЫЕ ВЕХИ • 2004 - начата работа над JBehave • 2006 - выходит статья "Introducing BDD" • 2007 - создается RBehave, RSpec. • 2009 - выходит первая версия Cucumber.
  9. 9. BDD ЦИКЛ РАЗРАБОТКИ 1. Анализ User Story 2. Расстановка приоритетов 3. Создание и рефакторинг сценария 4. Написание кода 5. Рефакторинг кода 6. ????????? 7. PROFIT!!!
  10. 10. BDD ДЬЯВОЛ В МЕЛОЧАХ • BDD дополняет TDD • Сценарии поведения не заменяют тестов • Придется вспомнить русский язык • Придется общаться с людьми :-(
  11. 11. BDD GHERKIN • Язык описания поведения системы • Основные сущности: • Функции (Feature) • Сценарии (Scenario) • Шаги (Given, When, Then)
  12. 12. BDD ПРИМЕР СЦЕНАРИЯ НА GHERKIN Функция: срабатывание флага уведомления Для того, чтобы быть в курсе состояния акций В качестве трейдера Я хочу получать оповещения о изменениях курса Сценарий: трейдер уведомляется о превышении Дано акции и порог оповещения равен 15.0 Когда стоимость акций равна 6 То уведомление в состоянии "ВЫКЛ" Когда стоимость акций равна 16 То уведомление в состоянии "ВКЛ"
  13. 13. LETTUCE http://lettuce.it • Сравнительно точный порт Cucumber • Интеграция с Django • Ручное управление общим состоянием • Не очень стабильная работа
  14. 14. FRESHEN https://github.com/rlisagor/freshen • Различные контексты исполнения • Интеграция с nose • Интеграция с nose • Мало обработчиков этапов исполнения
  15. 15. CUCUMBER http://cukes.info • Он работает! • Работа через rubypython • Ruby? В моем Python?!
  16. 16. BEHAVE http://pythonhosted.org/behave • Гибкая настройка • Подробная документация • Поддержка тэгов (--tags) • Активно развивается • Среднее качество кода :-(
  17. 17. PYVOWS http://heynemann.github.io/pyvows/ • Асинхронное выполнение тестов • Сценарий описыватся в коде (путь xBehave) • Трудночитаемый синтаксис
  18. 18. ВОПРОСЫ? Борисов Кирилл БАРС Груп Архитектор ПО twitter: @lensvol skype: kirbars borisov@bars-open.ru

×