O documento apresenta sobre BDD (Desenvolvimento Orientado pelo Comportamento), que permite que tecnologia e negócios conversem na mesma linguagem, utilizando funcionalidades, cenários e passos para definir as especificações do projeto e automatizar a codificação e testes. O documento também menciona a ferramenta Specflow para auxiliar na aplicação do BDD.
BDD é sigla para Behaviour-Driven Development. Trata-se de uma evolução do TDD e do “Acceptance Test Driven Planing”.
De forma explícita, BDD relaciona “Test-Driven Development” com “Domain driven design” tornando a relação entre essas duas abordagens consideravelmente mais evidente.
BDD colabora para que o desenvolvimento foque na entrega de valor, através da formação de um vocabulário comum, reduzindo a distância entre “Negócio” e Tecnologia.
BDD está fundamentada em três princípios simples:
Negócio e Tecnologia deveriam “falar” sobre um sistema da mesma forma;
Qualquer sistema deveria ter um valor identificável e verificável para o “negócio”;
Análise, design e planejamento precoce tem, sempre, retorno questionável.
BDD expressa mais a parte de negócio do que tecnologia
Compete ao “negócio” a definição de:
Features – representam, em alto nível, os principais características do sistema – correspondem a uma descrição resumida dos “valores” que estamos entregando (ex: autenticação de usuários, cadastro de clientes, cálculo de imposto, emissão de nota);
Cenários – descrições de “casos de uso”, com pré-requisitos, ações e resultado esperado (ex: cadastro de novo usuário, usuário esqueceu senha, etc.)
Passos/Etapas (steps) – interações entre agente externo (usuário ou sistema) e resultado esperado para um dado cenário.
Compete ao “TI”:
Definições para etapas (Step definitions) – correspondências, usando um framework de testes, entre testes de unidade e etapas definidas pelo negócio;
Código – implementação efetiva de código para atender as definições do negócio;
Biblioteca de automação (opcional) – para simular, caso necessário, ações de um usuário na interface do sistema (WatiN, por exemplo).
BDD garante “documentação viva”
BDD associa os benefícios de uma documentação formal, escrita e mantida pelo “negócio”, com testes de unidade que “demonstram” que essa documentação é efetivamente válida.
Na prática, isso garante que a documentação deixa de ser um registro estático, que se converte em algo gradualmente ultrapassado, em um artefato “vivo” que reflete constantemente o estado atual de um projeto.