bdd in python - Кирилл Борисов, pycon ru 2014

18
BDD IN PYTHON

Upload: it-people

Post on 26-Jan-2015

340 views

Category:

Documents


5 download

DESCRIPTION

 

TRANSCRIPT

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

BDD IN PYTHON

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

WATERFALL

• Применяется с 1956 года

• Длительный цикл разработки

• Переход между стадиями только при завершении предыдущей

• Все зависит от первоначальных требований

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

XP (EXTREME PROGRAMMING)

• Повышение качества конечного ПО

• Частые релизы

• Короткие циклы разработки

• Постоянный контакт с заказчиком

• Быстрая реакция на изменение требований

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

TDD(TEST-DRIVEN DEVELOPMENT)

• Возник как следствие XP

• Во главе угла – контроль качества

• Короткий цикл разработки:

– Написание тестов

– Написание кода

– Рефакторинг кода

• Быстрая локализация ошибок

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

ВОПРОСЫ К TDD

• «А что мы тестируем?»

• «Каков объем тестов?»

• «Как называть тесты?»

• «Из-за чего произошла ошибка?»

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

TDDНЕ ВСЕ ТАК ПРОСТО :-(

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

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

BDDОСНОВНЫЕ ВЕХИ

• 2004 - начата работа над JBehave

• 2006 - выходит статья "Introducing  BDD"

• 2007 - создается RBehave, RSpec.

• 2009 - выходит первая версия Cucumber.

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

BDDЦИКЛ РАЗРАБОТКИ

1. Анализ User Story

2. Расстановка приоритетов

3. Создание и рефакторинг сценария

4. Написание кода

5. Рефакторинг кода

6. ?????????

7. PROFIT!!!

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

BDDДЬЯВОЛ В МЕЛОЧАХ

• BDD дополняет TDD

• Сценарии поведения не заменяют тестов

• Придется вспомнить русский язык

• Придется общаться с людьми :-(

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

BDDGHERKIN

• Язык описания поведения системы

• Основные сущности:

• Функции (Feature)

• Сценарии (Scenario)

• Шаги (Given, When, Then)

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

BDDПРИМЕР СЦЕНАРИЯ НА GHERKIN

Функция: срабатывание флага уведомления Для того, чтобы быть в курсе состояния акций В качестве трейдера Я хочу получать оповещения о изменениях курса

Сценарий: трейдер уведомляется о превышении Дано акции и порог оповещения равен 15.0 Когда стоимость акций равна 6 То уведомление в состоянии "ВЫКЛ" Когда стоимость акций равна 16 То уведомление в состоянии "ВКЛ"

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

LETTUCEhttp://lettuce.it

• Сравнительно точный порт Cucumber

• Интеграция с Django

• Ручное управление общим состоянием

• Не очень стабильная работа

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

FRESHENhttps://github.com/rlisagor/freshen

• Различные контексты исполнения

• Интеграция с nose

• Интеграция с nose

• Мало обработчиков этапов исполнения

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

CUCUMBERhttp://cukes.info

• Он работает!

• Работа через rubypython

• Ruby? В моем Python?!

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

BEHAVEhttp://pythonhosted.org/behave

• Гибкая настройка

• Подробная документация

• Поддержка тэгов (--tags)

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

• Среднее качество кода :-(

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

PYVOWShttp://heynemann.github.io/pyvows/

• Асинхронное выполнение тестов

• Сценарий описыватся в коде (путь xBehave)

• Трудночитаемый синтаксис

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

ВОПРОСЫ?

Борисов Кирилл

БАРС Груп

Архитектор ПО

twitter: @lensvol

skype: kirbars

[email protected]