BDD
Share on facebook
Share on twitter
Share on linkedin

BDD como metodologia ágil

O que é BDD? Qual a diferença entre BDD e TDD? Como ele se relaciona com as metodologias ágeis? Neste artigo, abordamos o Behavior Driven Development e o apresentamos como 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 e metodologia agil

O que é metodologia BDD?

Em tradução livre, BDD é 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.

Quem criou o TDD foi Kent Beck, quem afirmou que 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.

BDD e metodologia ágil

BDD 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 o senhor Joaquim deseja abrir uma conta e já informou CPF, RG e 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 o senhor Joaquim deseja abrir uma conta e já informou CPF existente na base de clientes, RG e 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.

BDD no agilismo 

Através desta introdução, quis demonstrar que o BDD pode ser tornar um poderoso aliado de metodologias ágeis 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.

Os agilistas - Episodio 106

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#).

Qual a diferença entre BDD e TDD?

TDD é a abreviação para o termo “Test-Driven Development”, que consiste em usar testes como base para o desenvolvimento, e BDD, como citamos anteriormente, é Behavior Driven Development, que significa desenvolvimento orientando a comportamentos.

Tanto TDD quanto BDD são ferramentas de desenvolvimento que têm como prioridade os testes de código, integração contínua e desenvolvimento baseados na metodologia ágil. Essas técnicas são para desenvolvimento orientado a testes. O que as diferencia é o fato de que em TDD você escreve os testes e valida com base nas suas funcionalidades. Já em BDD, você escreve as trilhas e caminhos do problema. Além disso, em BDD é mais humano do que os testes.

Exemplos de BDD na prática

Existem mais de 40 frameworks que integram o que é BDD, dentre os quais se destacam Java e Groovy. Na prática, BDD é o desenvolvimento orientado por comportamento. Dentre suas atribuições na metodologia ágil, se destacam:

  • Otimização da comunicação entre as equipes de desenvolvimento de software, serve como uma ferramenta de compartilhamento;
  • Ferrmenta de compartilhamento de conhecimento entre as pessoas que integram o time
  • Transparência das entregas por meio dos ritos de análise e testes

Os Agilistas

Para saber mais sobre agilismo, outras metodologias ágeis e como aplicá-las ao seu negócio, confira nosso podcast aqui! Episódios semanais do nosso CEO Marcelo Szuster! Além do nosso podcast, você pode se integrar da cultura interna da dti por meio de nossas vagas disponíveis. Acesse nossa página de carreiras e se inscreva na que mais se encaixa no seu perfil.

Preencha seus dados para receber nossa newsletter!

Ficou com dúvidas?

contato@dtidigital.com.br
R. Antônio de Albuquerque, 330 – 14° andar
Savassi, Belo Horizonte – MG, 30112-010

Cuidado

Nós utilizamos cookies e outras tecnologias semelhantes para analisar sua experiência no site e personalizar conteúdos e anúncios durante sua navegação. Ao navegar pelo site, você autoriza a DTI Digital a realizar tal monitoramento. Conheça nossa Política de Privacidade.

You will be redirected to spotify