bdd de fuera a dentro

69
BDD de fuera a dentro

Upload: luismi-cavalle

Post on 14-May-2015

779 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: BDD de fuera a dentro

BDD de fuera a dentro

Page 2: BDD de fuera a dentro

Luismi Cavallé

Page 3: BDD de fuera a dentro

BDD de fuera a dentro

Page 4: BDD de fuera a dentro

BDD de fuera a dentro

Page 5: BDD de fuera a dentro

TDD?

Page 6: BDD de fuera a dentro

Behaviour- Driven

Development

Page 7: BDD de fuera a dentro

BDD = TDD bien hecho?

Page 8: BDD de fuera a dentro

Enough is enough

Deliver stakeholder value

It’s all behaviour

Page 9: BDD de fuera a dentro

Enough is enough

Deliver stakeholder value

It’s all behaviour

Page 10: BDD de fuera a dentro

Enough is enough

Deliver stakeholder value

It’s all behaviour

Page 11: BDD de fuera a dentro

Enough is enough

Deliver stakeholder value

It’s all behaviour

Page 12: BDD de fuera a dentro

Acceptance Test-Driven Planning

Domain-Driven Design

Test-Driven Development

Page 13: BDD de fuera a dentro

Acceptance Test-Driven Planning

Domain-Driven Design

Test-Driven Development

Page 14: BDD de fuera a dentro

Acceptance Test-Driven Planning

Domain-Driven Design

Test-Driven Development

Page 15: BDD de fuera a dentro

Acceptance Test-Driven Planning

Domain-Driven Design

Test-Driven Development

Page 16: BDD de fuera a dentro

Acceptance Test-Driven Planning

Domain-Driven Design

Test-Driven Development

Page 17: BDD de fuera a dentro

BDD = TDD hecho proceso

Page 18: BDD de fuera a dentro

BDD de fuera a dentro

Page 19: BDD de fuera a dentro

BDD de fuera a dentro

Page 20: BDD de fuera a dentro

Outside-in

Page 21: BDD de fuera a dentro

ObjectObjectTest

Interface

Page 22: BDD de fuera a dentro

El ciclo BDD

Page 23: BDD de fuera a dentro

⓿ Inception

Page 24: BDD de fuera a dentro

Visión

Metas

Temas

Page 25: BDD de fuera a dentro

Requerimientos

Funcionalidades

Historias

Escenarios

Page 26: BDD de fuera a dentro

❶ Scenario

Page 27: BDD de fuera a dentro

Listado de usuarios

Dado que hay 2 usuarios en el sistema

Cuando visito la página de usuarios

Entonces debería ver 2 usuarios

Page 28: BDD de fuera a dentro

Listado de usuarios

Dado que hay 2 usuarios en el sistema

Cuando visito la página de usuarios

Entonces debería ver 2 usuarios

Page 29: BDD de fuera a dentro

❷ Red acceptance

spec

Page 30: BDD de fuera a dentro

scenario 'List of users' do create_user 'mary' create_user 'paul' visit users_page assert page.has_content?('mary') assert page.has_content?('paul')end

Page 31: BDD de fuera a dentro

scenario 'List of users' do create_user 'mary' create_user 'paul' visit users_page assert page.has_content?('mary') assert page.has_content?('paul')end

Page 32: BDD de fuera a dentro

$ rails g model User name:string

Page 33: BDD de fuera a dentro

scenario 'List of users' do create_user 'mary' create_user 'paul' visit users_page assert page.has_content?('mary') assert page.has_content?('paul')end

Page 34: BDD de fuera a dentro

$ rails g controller users index

Page 35: BDD de fuera a dentro

scenario 'List of users' do create_user 'mary' create_user 'paul' visit users_page assert page.has_content?('mary') assert page.has_content?('paul')end

Page 36: BDD de fuera a dentro
Page 37: BDD de fuera a dentro

❸ Red unit spec

Page 38: BDD de fuera a dentro

describe 'users/index.html.erb' do it 'renders the list of users' do render_view :users => [mock(:name => 'Joe')] assert_contains rendered, 'Joe' endend

Page 39: BDD de fuera a dentro

describe 'users/index.html.erb' do it 'renders the list of users' do render_view :users => [mock(:name => 'Joe')] assert_contains rendered, 'Joe' endend

Page 40: BDD de fuera a dentro

describe 'users/index.html.erb' do it 'renders the list of users' do render_view :users => [mock(:name => 'Joe')] assert_contains rendered, 'Joe' endend

Page 41: BDD de fuera a dentro

❹ Green unit spec

Page 42: BDD de fuera a dentro

<h2>Users</h2><ul> <%= @users.each do |user| %> <li> <%= user.name %> </li> <% end %></ul>

Page 43: BDD de fuera a dentro

<h2>Users</h2><ul> <%= @users.each do |user| %> <li> <%= user.name %> </li> <% end %></ul>

Page 44: BDD de fuera a dentro

<h2>Users</h2><ul> <%= @users.each do |user| %> <li> <%= user.name %> </li> <% end %></ul>

Page 45: BDD de fuera a dentro

❺ Refactor

Page 46: BDD de fuera a dentro

❻ Green acceptance

spec?

Page 47: BDD de fuera a dentro

scenario 'List of users' do create_user 'mary' create_user 'paul' visit users_page assert page.has_content?('mary') assert page.has_content?('paul')end

Page 48: BDD de fuera a dentro
Page 49: BDD de fuera a dentro

❸ Red unit spec

Page 50: BDD de fuera a dentro

describe UsersController do describe 'GET index' do it 'assigns the users' do User.stub(:all => users_stub) get :index assert_equal users_stub, assigns[:user] end endend

Page 51: BDD de fuera a dentro

describe UsersController do describe 'GET index' do it 'assigns the users' do User.stub(:all => users_stub) get :index assert_equal users_stub, assigns[:user] end endend

Page 52: BDD de fuera a dentro

describe UsersController do describe 'GET index' do it 'assigns the users' do User.stub(:all => users_stub) get :index assert_equal users_stub, assigns[:user] end endend

Page 53: BDD de fuera a dentro

describe UsersController do describe 'GET index' do it 'assigns the users' do User.stub(:all => users_stub) get :index assert_equal users_stub, assigns[:user] end endend

Page 54: BDD de fuera a dentro

❹ Green unit spec

Page 55: BDD de fuera a dentro

class UsersController def index @users = User.all endend

Page 56: BDD de fuera a dentro

class UsersController def index @users = User.all endend

Page 57: BDD de fuera a dentro

❺ Refactor

Page 58: BDD de fuera a dentro

❻ Green acceptance

spec?

Page 59: BDD de fuera a dentro

scenario 'List of users' do create_user 'mary' create_user 'paul' visit users_page assert page.has_content?('mary') assert page.has_content?('paul')end

Page 60: BDD de fuera a dentro
Page 61: BDD de fuera a dentro

❼ Refactor

Page 62: BDD de fuera a dentro
Page 63: BDD de fuera a dentro

❶ Scenario

❷ Red acceptance spec

❸ Red unit spec

❹ Green unit spec

❺ Refactor

❻ Green acceptance spec

❼ Refactor

Page 64: BDD de fuera a dentro

De fuera a dentro

Page 65: BDD de fuera a dentro

El código que te gustaría

tener

Page 66: BDD de fuera a dentro

Dejar que el diseño emerja

Page 67: BDD de fuera a dentro

Escribir el software que

importa

Page 68: BDD de fuera a dentro

Gracias!

Page 69: BDD de fuera a dentro

Love-Driven Development