Diurno

BDD como metodologia ágil

por: Thiago Fábio

data: 27/12/2018

Compartilhar no facebook
Compartilhar no twitter
Compartilhar no whatsapp
Compartilhar no linkedin
Compartilhar no facebook
Compartilhar no twitter
Compartilhar no whatsapp
Compartilhar no linkedin

No texto a seguir pretendo elucidar como  o BDD – Behavior Driven Development, é uma excelente metodologia ágil, que visa unir o time de negócio e o time de desenvolvimento em torno de um entendimento comum: Todos devem falar a mesma língua.

Ao contrário do que alguns podem pensar, esse conceito não se aplica apenas a profissionais de qualidade, mas para sua correta implantação todos os membros do time precisam entendê-lo, e estar comprometidos com um pensamento que gira em torno das necessidades de um usuário real.

Vou fazer uma introdução ao conceito, e falar um pouco sobre como inserir BDD nas equipes de desenvolvimento através da especificação por exemplo.

BDD – Behavior Driven Development como metodologia ágil

Desenvolvimento orientado ao comportamento

BDD é uma técnica de desenvolvimento de software ágil que surge através de uma crítica de Dan North ao Test Driven Development(Desenvolvimento orientado a testes), onde ele visava otimizar o conceito de ‘verificação e validação’ já aplicado, e tornar mais eficiente a construção de cenários a serem testados e/ou desenvolvidos.

Para Kent Beck, criador do TDD, os testes devem ser escritos antes do código do software, assim irão falhar. Logo após, os desenvolvedores irão se basear nestes cenários falhos, irão implementar a aplicação de maneira a fazer os testes passar, e refatorar seu código até que fique mais limpo. De maneira cíclica. O que foi chamado de Red-Green- Refactor.

E está correto, porém a grande vantagem desta prática não é gerar testes, e sim pensar no design e nas regras negócios antes de escrever qualquer linha de código.

Assim surge o BDD, como uma prática que levaria o time de desenvolvimento a pensar no comportamento do usuário para entender o que deve ser feito. E atualmente através de  conceitos e ferramentas, ele já pode ser aplicado por todos os membros do time, e não apenas pelos desenvolvedores.

O BDD apresenta um framework baseado em três princípios:

  • .A área de negócios e o time de desenvolvimento precisam se referir a mesma parte do sistema da mesma forma;

  • Toda parte do sistema precisa ter um valor identificável e verificável para o negócio;

  • Analisar, projetar e planejar tudo de cima a baixo tem retorno decrescente;

Podemos definir o BDD como a união de várias práticas consideradas ágeis e úteis no desenvolvimento de software, cuja ênfase está nas funcionalidades de alto valor e na redução dos custos de mudança por meio da identificação do que de fato está sendo testado/desenvolvido.

metodologia ágil

Specification By Example

Especificação por exemplo

A especificação por exemplo, como auxiliar na implementação do BDD, é uma abordagem colaborativa para definir requisitos e testes funcionais que  se baseia na identificação de cenários reais para gerar user stories(Estórias de usuário) a serem utilizadas por todos os envolvidos na construção de um software.

As estórias de usuário escritas no formato de especificação por exemplo deverão basear seus critérios de aceitação em exemplos reais do uso do futuro software. As palavras Given, When e Then(Dado que, quando e então) surgem como auxiliares nesta escrita onde :

Em dado definimos tudo o que precisamos antes para quando o evento ocorrer então verificarmos o resultado. Note que uma funcionalidade pode admitir N-cenários.

Sabendo disso, basta entendermos as necessidade do negócio, separá-las em funcionalidades (Features), e escrever seus cenários como abaixo :

Funcionalidade: Abertura de conta

Como um gerente de banco

Eu quero cadastrar as informações dos meus clientes

Para abrir uma conta de serviços bancário para elas

Cenário 1: Cliente com dados corretos

Dado que senhor Joaquim deseja abrir uma conta

E informou “CPF”

E informou “RG”

E informou “seu endereço”

Quando entrar com essas informações no cadastro

Então uma nova conta deve ser criada

Cenário 2: Cliente já cadastrado

Dado que senhor Joaquim deseja abrir uma conta

E informou “CPF” já existente na base de cliente

E informou “RG”

E informou “seu endereço”

Quando entrar com essas informações no cadastro

Então não será possível abrir uma nova conta

E devo ser notificado que ele já é cliente

O uso desse padrão fornece uma linguagem de fácil entendimento para a área de negócio avaliar se suas necessidades estão sendo atendidas, ao mesmo tempo em que a equipe técnica conseguirá entender o que precisa ser feito, criar cenários de teste, e desenvolver o software com a certeza de que estão no caminho correto.

E aí?

Através desta introdução quis demonstrar que o BDD pode ser tornar um poderoso aliado de metodologias como scrum, que visam a melhoria contínua do processo de desenvolvimento. Pois através desta prática, podemos obter um refinamento do backlog  do produto, garantindo que todos os envolvidos estejam falando uma mesma língua, saibam o que deve ser feito, e evite o retrabalho com constantes melhorias.

O BDD também conta com um conjunto de ferramentas de automação, que já podem ser usados em diversas linguagens de programação para guiar o uso da prática corretamente durante o desenvolvimento. Sendo algumas delas : Rspec(RUBY), JBehavior(Java), Specrunner(C#).

Os Agilistas

Para saber mais sobre agilismo, outros métodos ágeis e como aplicá-los ao seu negócio, confira nosso podcast aqui! Episódios semanais do nosso CEO Marcelo Szuster!