Bdd by Dmitri Aizenberg

25
Behavior Driven Development Дмитрий Айзенберг

description

 

Transcript of Bdd by Dmitri Aizenberg

Page 1: Bdd by Dmitri Aizenberg

Behavior Driven Development

Дмитрий Айзенберг

Page 2: Bdd by Dmitri Aizenberg

• Спецификация примером• Язык Gherkin• Инструменты BDD• Критика BDD

Page 3: Bdd by Dmitri Aizenberg

Спецификация примером

Page 4: Bdd by Dmitri Aizenberg

Спецификация примером

Зачем?

Как?

Проще определитьдо реализации

Сложнее определитьдо реализации

Цель проектаДетали реализации

Баг

Page 5: Bdd by Dmitri Aizenberg

Спецификация примером

Зачем?

Как?

Цель проекта

Стратегия проекта

Функциональное требование

Сценарий использования

Приемочный критерий

Детали реализации Баг

Проще определитьдо реализации

Сложнее определитьдо реализации

Page 6: Bdd by Dmitri Aizenberg

Спецификация примером

Зачем?

Как?

Менеджер проекта

Владелец продукта

Разработчик

Цель проекта

Стратегия проекта

Функциональное требование

Сценарий использования

Приемочный критерий

Детали реализации Баг

Проще определитьдо реализации

Сложнее определитьдо реализации

Page 7: Bdd by Dmitri Aizenberg

Спецификация примером

Зачем?

Как?

Менеджер проекта

Владелец продукта

Разработчик

Цель проекта

Стратегия проекта

Функциональное требование

User storyСценарий использования

Приемочный критерий

Детали реализации Баг

Проще определитьдо реализации

Сложнее определитьдо реализации

Page 8: Bdd by Dmitri Aizenberg

Спецификация примером

• TextКак посетитель магазинаЯ хочу накапливать свои покупки в корзине

Чтобы оформить их одним заказом

В корзину можно добавить покупки

Из корзины можно удалить покупки

Изначально корзина пуста

Одну покупки можно добавлять многократно

Page 9: Bdd by Dmitri Aizenberg

Спецификация примером

• TextКак посетитель магазинаЯ хочу накапливать свои покупки в корзине

Чтобы оформить их одним заказом

В корзину можно добавить покупки

Из корзины можно удалить покупки

Изначально корзина пуста

Одну покупки можно добавлять многократно

Gherkin!

Page 10: Bdd by Dmitri Aizenberg

Спецификация примером

• TextКак посетитель магазинаЯ хочу накапливать свои покупки в корзине

Чтобы оформить их одним заказом

В корзину можно добавить покупки

Из корзины можно удалить покупки

Изначально корзина пуста

Одну покупки можно добавлять многократно

Given my shopping cart is empty

When I add “Harry Potter” to my shopping cart

Then my shopping cart should have 1 copy of “Harry Potter”

Page 11: Bdd by Dmitri Aizenberg

Спецификация примером

Page 12: Bdd by Dmitri Aizenberg

Спецификация примером

Page 13: Bdd by Dmitri Aizenberg

Спецификация примером

Page 14: Bdd by Dmitri Aizenberg

Спецификация примером

Page 15: Bdd by Dmitri Aizenberg

Спецификация примером

Общее

понимание

Регрессионное тестированиеДокументация

Page 16: Bdd by Dmitri Aizenberg

Язык Gherkin

Page 17: Bdd by Dmitri Aizenberg

Язык Gherkin

Demo

Page 18: Bdd by Dmitri Aizenberg

Инструменты BDD

Page 19: Bdd by Dmitri Aizenberg

Инструменты BDD

Test runner

Script parser

Clicker

• NUnit

• xUnit

• MSTest

etc

Page 20: Bdd by Dmitri Aizenberg

Инструменты BDD

Test runner

Script parser

Clicker

• Gherkin:• Cucmber

• SpecFlow

• Другие:• StoryQ

• NSpec

Page 21: Bdd by Dmitri Aizenberg

Инструменты BDD

Test runner

Script parser

Clicker

• Web:• Selenium

• WatiN

• Desktop:• MS UI Automation

• AutoIt

Page 22: Bdd by Dmitri Aizenberg

Критика BDD

Page 23: Bdd by Dmitri Aizenberg

Критика BDD

Habrahabr: Тестирование в стиле TSA

• Тесты не бесплатны• «Но что плохого в избыточном тестировании, Фил, разве ты

не хочешь, чтобы твой код был безопасным? ...» Из-за таких вот рассуждений мы и получили TSA и то как они сливают миллиарды на ощупывание яиц и конфискацию книпсеров.

Page 24: Bdd by Dmitri Aizenberg

Критика BDD

Алексей Баранцев: Почему я не люблю огурцы и фитнес

• ... и не приёмочное, и не тестирование. Для тестирования это слишком просто, «программирование в табличках» — адская пытка, паттерн given-when-then не даёт возможности сделать хоть сколько-нибудь сложные автоматизированные тесты, а при ручном тестировании он и вовсе не нужен

• идея автоматизировать приёмку вообще слабо вписывается в концепцию agile: если «приёмочные тесты» будут пройдены, а product owner недоволен — продукт будет считаться успешно сданным или нет?

Page 25: Bdd by Dmitri Aizenberg

Критика BDD

ROI: (manual cost) – (automation cost)

Manual cost = выполнение;

Automation cost = создание тестов + поддержка тестов