BDD – Foco no comportamento do sistema

bddImagine como seria muita mais prático se um teste automático pudesse ser escrito por qualquer pessoa do time ou se o teste fosse tão claro e intuitivo que poderia ser considerando uma documentação do sistema. Pois bem, isso é possível usando BDD!!

Atualmente ouvimos falar muito sobre TDD, que é o Test-Driven Development (Desenvolvimento Orientado a Testes), mas a cada dia o conceito de BDD vem ganhando força. E o que seria BDD?

BDD é a sigla para Behavior Driven Development (Desenvolvimento Guiado por Comportamento ou Desenvolvimento Orientado a Comportamento).
O BDD é uma metodologia que serve para integrar regras de negócio através de testes automáticos que focam no comportamento do software, ou seja, o intuito do BDD é escrever testes automáticos baseado em cenários de negócio do sistema e conforme o sistema vai sendo construído esses testes devem passar a garantir que o sistema está se comportando da maneira esperada.

Basicamente o objetivo da metodologia é através de uma linguagem ubíqua escrever testes que qualquer pessoa do projeto consiga compreender sem necessariamente precisar ter um domínio técnico, diferente da metodologia do TDD que para a compreensão do código de teste desenvolvido é necessário um conhecimento técnico da linguagem em que os testes foram elaborados.

Usar esse tipo de modelo na escrita dos testes automáticos possibilita a integração de todo time, pois, qualquer membro pode contribuir com a construção de cenários. Portanto, essa técnica aumenta a comunicação e o entendimento do negócio para o time como um todo.

A estrutura de um teste BDD é baseado em 3 definições:

Dado que (Given): Descrição das condições para o cenário ocorrer
Quando (When): Descrição das ações que devem ocorrer quando o cenário for executado
Então (Then): Descrição que dos resultados esperados caso o cenário seja executado com sucesso.

Abaixo temos um exemplo de como seria descrição de um comportamento do sistema no formato de BDD:

Cenário: Saque da conta corrente
Dado que eu tenha na conta corrente 500,00 reais
Quando eu sacar 100,00 reais
Então Meu saldo deveria ser de 400,00 reais.

Observe que é bem intuitivo a forma de escrita para um cenário utilizando em BDD.

Atualmente existem vários frameworks que facilitam a construção de testes usando essa metodologia, alguns deles são: Cucumber, SpecFlow, Jbehave, Kahlan, Jasmine entre outras. Essas ferramentas são responsáveis por interpretar o teste escrito e esses testes devem falhar caso o sistema não esteja se comportando da maneira esperada.

Abaixo segue um exemplo de alguns cenários escritos usando o Cucumber:

exemplo feature

Figura 1 – Exemplo de cenários usando Cucumber

Observem que é um código simples e de fácil interpretação para qualquer membro do time. A documentação gerada quando escrevemos especificações em BDD dá a ideia de como o sistema irá se comportar em vários cenários.

O BDD possui vários pontos positivos com relação a sua aplicabilidade, como por exemplo, o reaproveitamento das User Stories na construção dos cenários, uma vez que a estrutura dos testes criados usando BDD é semelhante à usada para criar histórias.

Outro ponto, é que essa metodologia permite o compartilhamento de informações, uma vez que cada pessoa nova que entrar no time, deve conseguir de maneira rápida e fácil entender um teste em BDD, pois ele basicamente descreve uma funcionalidade do negócio que o sistema deve atender.

O uso do BDD é recomendável, pois ele usa testes como requisito, torna os testes mais elegantes e de fácil interpretação por pessoas de negócio, diminui o tempo de escrita de casos de teste, é também considerado uma documentação executável e os testes gerados são baseados em critério de aceite.

Por MONISE COSTA

Formada em Sistemas de Informação pela PUC Campinas, MATERANA desde 2011. Apaixonada pela área de TI, Analista de Requisitos na maior parte do tempo e desenvolvedora Java/Android por lazer.

Postado em: 26 de outubro de 2016

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário