Bdd by Dmitri Aizenberg

Post on 28-Dec-2014

1,966 views 0 download

description

 

transcript

Behavior Driven Development

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

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

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

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

Зачем?

Как?

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

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

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

Баг

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

Зачем?

Как?

Цель проекта

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

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

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

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

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

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

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

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

Зачем?

Как?

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

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

Разработчик

Цель проекта

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

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

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

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

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

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

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

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

Зачем?

Как?

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

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

Разработчик

Цель проекта

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Gherkin!

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

• 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”

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

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

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

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

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

Общее

понимание

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

Язык Gherkin

Язык Gherkin

Demo

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

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

Test runner

Script parser

Clicker

• NUnit

• xUnit

• MSTest

etc

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

Test runner

Script parser

Clicker

• Gherkin:• Cucmber

• SpecFlow

• Другие:• StoryQ

• NSpec

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

Test runner

Script parser

Clicker

• Web:• Selenium

• WatiN

• Desktop:• MS UI Automation

• AutoIt

Критика BDD

Критика BDD

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

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

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

Критика BDD

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

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

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

Критика BDD

ROI: (manual cost) – (automation cost)

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

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