Você está na página 1de 23

Fatto Consultoria

Inteligência para o mercado de TI

Visão prática do BDD (Behavior


Driven Design) para agilizar o •1

processo de desenvolvimento
Palestrante: Marcelo Nascimento Costa, MSc
marcelo.costa@fattocs.com.br
•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •© FATTO Consultoria e Siste
Minibio
“Consultor na área de qualidade de software, automação de testes,
ALM/DevOps e gerência de projetos. Professor de graduação e pós-
graduação na Universidade Veiga de Almeida. Ministra palestras e webinars
em assuntos relativos a automação do desenvolvimento, testes e no aceite
de software. Experiência de participação em projetos de consultoria,
desenvolvimento de software e implantação de processos em empresas como
a Accenture, Ipiranga, Globosat, Oi Móvel e Oi Fixa, Banco BBM, Telefonica-
SP, Vivo, Banco Modal e Brasil Telecom. Atuou como empreendedor com
diversos treinamentos ministrados, consultoria e projetos desenvolvidos para
as plataformas Web e Móvel em grandes empresas, como Unigranrio,
Laboratório Servier, Dataprev, Petrobrás e Marinha. Atuou como líder de
projetos e administrador de banco de dados no startup de diversas empresas
de telecomunicações, como a Telemar e a Embratel e na implantação da
arquitetura do Sistema de Pagamento Brasileiro (SPB) no Banco Central.”

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •2


Agenda
 Definição de BDD
 Como funciona o BDD
 Vantagens
 Dúvidas comuns
 Diferenças entre BDD e TDD
 Boas práticas
 Specflow como ferramenta de BDD
 Exemplo do Specflow

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •3


BDD - Definição

“Behavior-driven development é sobre


implementar uma aplicação através da
descrição de seu comportamento pela
perspectiva de seus stakeholders”
-- Dan North

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br


Foco no valor

Criar software que


importa!
 Tem valor de negócio
tangível
 Entregue incrementalmente
 Fácil de manter e gerenciar
 Fácil de entender e
comunicar

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br


Em outras palavras, o que é BDD?
 É um conjunto de práticas ágeis para agilizar o desenvolvimento de
software através da integração das User Stories definidas para o
software com a automação dos testes funcionais do software
desenvolvido

 O BDD é uma evolução feita a partir da implantação de técnicas


TDD (Test Driven Development)

 O BDD não é uma metodologia de desenvolvimento de software,


porém incorpora e melhora as ideias de muitas dessas
metodologias

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •6


Funcionamento do BDD
Definição dos
Necessidade de
Testes
implantação de
funcionais
uma
automatizados
funcionalidade
com base nos
do backlog
Exemplos

Levantamento
Levantamento
dos exemplos
das User Stories
concretos como
com os Usuários
resultado
e partes
esperado das
interessadas
User Stories

Descrição dos
cenários de
comportamento
(features)

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •7


Levantamento das User Stories

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •8


Exemplo de uma implementação BDD
(Notação Gherkin)
Scenario: Transferir dinheiro para uma conta poupança

GIVEN a conta de numero <numero> com o limite <limite> e saldo <saldo>


WHEN o dono realiza o deposito no valor de <deposito> na conta
AND o dono realiza o primeiro saque no valor de <primeiro_saque> na conta
AND o dono realiza o segundo saque no valor de <segundo_saque> na conta
THEN o dono tem o saldo no valor de <saldo_esperado> na conta

Exemplos:
| numero | limite | saldo | deposito | primeiro_saque | segundo_saque | saldo_esperado |
| 111 | 1000 | 0 | 100 | 10 | 10 | 80 |
| 222 | 1000 | 0 | 200 | 10 | 10 | 180 |

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •9


Vantagens e Benefícios do BDD
 BDD oferece um nível de entendimento comum entre especialistas
de domínio, product owners, desenvolvedores e testadores.

 Agilizar o processo diminuindo o gap entre os requisitos/User


Stories e a automação dos testes de aceitação do usuário

 A notação simples utilizada pelo BDD – Given-Then-When – para os


testes de aceitação são próximas do entendimento dos envolvidos
no projeto

 Garante a regressão das funcionalidades após a re-execução de


todos os testes de aceitação.

 Acelera a criação dos testes com a geração automática dos passos


do código de testes a partir dos cenários descritos
•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •10
Dúvidas comuns sobre BDD
 A grande confusão nos clientes no mercado se refere a mistura dos
conceitos entre TDD e BDD.

 Perguntas comuns no mercado?


– Eu fiz um TDD com uma cobertura de 90%, eu ainda preciso do BDD?
– O TDD não testa todo o código?
– Eu tenho User Stories bem detalhadas com uma quantidade
expressiva de exemplos, faz-se necessário o TDD?
– Onde começa o TDD e onde termina o BDD?
– Enquanto eu faço o TDD, eu não posso executar tarefas de BDD?
– Eu comecei a desenvolver as features do BDD, depois comecei a
desenvolver o código de testes do TDD, então tenho que parar as
tarefas do BDD?

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •11


Interação entre BDD x TDD

testes caixa-preta

testes caixa-branca

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •12


Diferenças fundamentais do BDD x
TDD
TDD - Exercita o código vinculado a cada método do objeto.

Passou pelo tratamento


10 de Exceções?

BDD - valida se o resultado apresentado pela UI está de acordo


com o comportamento definidos nos exemplos na User Story.

Popup com a mensagem


10 “Erro: Divisão inválida”?

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •13


Por onde eu começo?
 Implementar a definição de User Stories como detalhamento de
requisitos

 Envolver o usuário na definição dos exemplos concretos para os


testes

 Pontuar a User Story contemplando a definição dos testes de


aceitação para servir como base para a execução dos testes no BDD

 Implementar uma arquitetura com a ferramenta de BDD


(Specflow/Cucumber/Jbehave) executando em diversas plataformas

 Pontuar as tarefas de manutenção para contemplar a manutenção


dos cenários implementados na ferramenta de BDD

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •14


Boas práticas para implementação do
BDD

Envolvimento
Testador nas
User Stories

Coach
Arquitetura
Ferramenta
BDD

User Stories
Entregar o
seguindo
BDD na
padrão
Sprint
INVEST

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •15


O que é Specflow?
 É uma ferramenta Opensource integrada ao ecossistema .Net que
gera e executa testes definidos a partir do padrão Given-When-
Then

 É totalmente integrado ao ambiente Visual Studio contemplando


templates de projetos que podem ser instanciados no próprio
Visual Studio.

 Suporta frameworks de testes como MSTest e Nunit (2 e 3)

 Utiliza como notação de execução de testes o WebDriver do


Selenium, largamente conhecido no mercado.

 Após a configuração correta, consegue executar multibrowsers


(Chrome, IE e Firefox)
•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •16
Dinâmica do SpecFlow
Orientação de Orientação de
Negócios Orientação Negócios
Técnica

Analisar os Corrigir o
defeitos código de
Definição Código de Biblioteca de Execução
Definição Definição gerados pela produção
dos implantação Automação dos
das Features dos Steps execução para
Scenarios dos Steps de IU Scenarios
dos resolução de
Scenarios defeitos

Orientação
Técnica
•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •17
Arquitetura .Net de Execução com
Continuous Delivery

TFS Build
1.Builds 2.Runs

Pacote Arquitetura

SpecFlow Package 5. Outputs

Teste Executável
NUnit Package 3. Drives

4. Drives
Selenium Package
5. Drives
•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •18
Exemplo SpecFLow – Cenário Válido

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •19


Exemplo SpecFLow – Cenário Inválido

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •20


Código Exemplo

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •21


Verificação do Resultado

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •22


Conclusão
 O BDD é uma realidade no mercado e possui um ferramental forte

 A execução dos testes automatizados na visão funcional através do


BDD e da visão técnica através do TDD fornecem um potencial para
melhorar a qualidade do software entregue seguindo as principais
premissas ágeis.

 Tem que haver um investimento em tempo e recursos devido a


curva de aprendizado para os primeiros projetos utilizando BDD.

 O ideal é ter papeis diferentes para a criação dos testes TDD e outro
para criação dos testes BDD

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br •23

Você também pode gostar