BDD – Behavior Driven Development

BDD  – Behavior Driven Development
Dan North – 2003

“Desenvolvimento Guiado por Comportamento” é uma técnica Ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e pessoas não-técnicas ou de negócios em um projeto de software.

Desenvolvedores que usam BDD usam língua nativa em combinação com a linguagem técnica, o que permite que os desenvolvedores foquem no “porque” o código deve ser criado, ao invés “como” será criado. Assim, BDD pode ser considerada uma Ubiquitous Language (“Linguagem Onipresente”).

  • User Stories – Tudo é comportamento, logo, TI e negócio devem entender e expressar-se sobre o sistema da mesma forma;
  • Se tudo é comportamento, tudo no sistema deve sempre expressar e confirmar seu valor para o negócio;
  • Detalhar e desenvolver de fora para dentro, de forma iterativo-incremental, apenas o suficiente em cada iteração.

User Stories

Inicialmente seria escrita assim: “Como um [X], Eu quero [Y], Então [Z]”
X– é a pessoa que será beneficiada;
Y– é alguma funcionalidade
Z– é o benefício ou valor da funcionalidade;

Dentro da proposta de uma linguagem natural, evoluiu para:
“<Quem | perfil>, <necessidade | sonho | poder>, <intenção | valor>.”

Este modelo garante conhecer o usuário, a necessidade e motivação: “Eu, como <perfil do usuário>, desejo <verbo> <necessidade>, de forma a <intenção>”.

Nós usamos US com seu título, descrição, wireframe criado pelo UX, critérios de aceitação e o que mais o time achar necessário, pois apesar de iniciar sendo escrita pelo PO, é um artefato colaboratvo e tem informações e links criados no transcorrer do processo de construção, testes e homologação, sempre sob o preceito de que deve ser inteligível por qualquer um, técnico ou negócio.

A seguir dois links de informações complementares sobre US, em bons sites:
http://www.infoq.com/br/news/2009/03/story-map
http://blog.scrumhalf.com.br/2011/10/user-stories-o-que-sao-como-usar/

As práticas de BDD incluem:

  • Sempre usar exemplos para descrever o comportamento de uma aplicação ou funcionalidade;
  • Usar “should” (“deve”) na hora de descrever o comportamento esclarece responsabilidades;
  • Envolver as partes interessadas em Outside-in Development (Desenv. de Fora pra Dentro);
  • Usar automação de testes e TDD.

Outside-In Development (Desenvolvimento de Fora pra Dentro)

O método BDD é guiado pelos benefícios trazidos para o negócio, a melhor maneira de perceber os benefícios de software é através de interfaces gráficas de usuário (“de fora”), pois garantem imediato feedback.

Na prática, cada elemento de código representa um elo da cadeia que supre comportamentos que são percebidos através das interfaces gráficas de usuário, o somatório destes elos e interfaces identificam o comportamento da aplicação.

A técina “outside-in” propõe iniciar pelas interface gráficas e ir “entrando” cada vez mais nas camadas de código e componentes que a interface precisa para atingir plenamente seus obetivos.

RSpec e Cucumber

Dan North trabalhou com David Chelimsky, Aslak Hellesoy, entre outros para desenvolver o framework RSpec, este primeiro framework foi posteriormente substituído pelo Cucumber (*), desenvolvido principalmente por Alask Hellesoy.

(*) Cucumber é uma ferramenta que executa USER STORIES em texto puro, ele é uma ferramenta escrita em Ruby que veio para substituir o RSpec Story Runner, e tem diversas vantagens sobre este. O Cucumber, utiliza Ruby e expressões regulares para definir o que qualquer expressão quer dizer.

Links úteis sobre o tema

http://www.dtsato.com/blog/work/introduzindo_desenvolvimento_orientado_comportamento_bdd/

http://logbr.reflectivesurface.com/2008/10/27/algumas-consideracoes-sobre-tdd-e-bdd/

http://vertocardoso.wordpress.com/2010/09/02/utilizando-cucumber-com-selenium-em-seus-projetos-java/

Um comentário sobre “BDD – Behavior Driven Development

  1. Pingback: Um ano e meio de blog – Obrigado galera! | Jorge Horácio "Kotick" Audy

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s