BDD e TDD na prática
com SpecFlow e
Visual Studio 2012
Visual Studio Summit 2013
Sobre mim
• Igor Abade (@igorabade)
– Microsoft MVP, Visual Studio ALM
– Especialista Team Foundation Server (TFS)
• Sócio da Lambda3
– Consultoria ALM/TFS, Agilidade/Scrum,
Arquitetura
– Desenvolvimento de Sistemas
– Treinamentos
– Parceira Microsoft Gold ALM
Qualidade é importante?
Claro! Ninguém questiona isso.
Usuários e clientes esperam por
isso.
Testes são parte importante.
Ainda assim, poucos
conseguem fazer direito.
Test-Last Development
O mercado está cada vez mais competitivo
Nossos clientes precisam ir
cada vez mais rápido para o
mercado.
Usuários estão impacientes.
Adivinha onde vamos
cortar?
É hora de tentar algo diferente
Insanity: Doing the same thing over and over again and
expecting different results.
-- Albert Einstein
O Manifesto Ágil
• Indivíduos e interação entre eles
mais que processos e ferramentas
• Software em funcionamento
mais que documentação abrangente
• Colaboração com o cliente
mais que negociação de contratos
• Responder a mudanças
mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda.
Lean
Agile
Scrum
XP
Framework de gestão ágil de projetos
Papéis e cerimônias, melhoria contínua
dos times, entrega rápida, limitar
trabalho à capacidade
Cultura ágil, mindset e práticas
Eliminar desperdício
Respeitar as pessoas, foco
principalmente em P&D
Otimizar todo o fluxo
Foco na otimização de todo o processo
de negócios
Práticas de engenharia
Trazer qualidade para dentro do desenvolvimento –
Automação, integração contínua, revisão por pares
etc.
Práticas Ágeis
Lean
Agile
Scrum
XP
Framework de gestão ágil de projetos
Papéis e cerimônias, melhoria contínua
dos times, entrega rápida, limitar
trabalho à capacidade
Cultura ágil, mindset e práticas
Eliminar desperdício
Respeitar as pessoas, foco
principalmente em P&D
Otimizar todo o fluxo
Foco na otimização de todo o processo
de negócios
Práticas de engenharia
Trazer qualidade para dentro do desenvolvimento –
Automação, integração contínua, revisão por pares
etc.
Práticas Ágeis
XP: Extreme Programming
Introduzindo o TDD
TDD: Test-driven Development
Ciclo do TDD
Faz o teste
passar
Refatora o
código
Escreve um
teste
falhando
O que é TDD?
TDD é uma ferramenta para
possibilitar a evolução de Design
Efeitos Colaterais
Verificação de comportamento
Documentação
Afinal, o que é o TDD?
TDD
Que nome devo dar ao meu teste?
O que testar primeiro?
O que testar?
Quanto testar?
Quando testar?
Por que um teste falhou?
Introduzindo o BDD
BDD
“Behavior-driven development é sobre
implementar uma aplicação através da descrição
de seu comportamento pela perspectiva de seus
stakeholders”
-- Dan North
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
Foco no valor
Linguagem comum
• Por onde começar
• O que testar
• O que não testar
• Quanto testar
• Como nomear os testes
• Por que um teste falha
Evoluindo TDD: BDD
Outside-in
User stories
Mínimo possível
Intenção
Documentação
Ciclo do BDD
Faz o
teste
passar
Refatora
o código
Escreve
um teste
falhando
Escreve um
Teste de
Aceitação
Falhando
Feature!
Outside In
Feature
“Quero que os usuários do site que
compraram o produto possam fazer o
download diretamente de suas páginas
pessoais”
Outside In
Cenário
“Garantindo a segurança
de informações:
Como usuário cadastrado posso
acessar apenas minha página pessoal”
Etapas
Outside In
Cenário
Etapas
Outside In
TDD
Cenário Falhando
Outside In
Outside In
Cenário Falhando
Outside In
Cenário Falhando
Outside In
Cenário Falhando
Outside In
Cenário Falhando
Outside In
Cenário Falhando
Outside In
Cenário Passando!
BDD em .NET: SpecFlow
• Inspirado no
Cucumber
• Linguagem
Gherkin
specflow.org
BDD com SpecFlow
Para saber mais
• BDD Primer: Behavior-Driven
Development with SpecFlow and
WatiN
tinyurl.com/nkakqq3
• Documentação do SpecFlow
go.specflow.org/doc
• Blog da Lambda3
blog.lambda3.com.br
tinyurl.com/pzjfa45
www.lambda3.com.br

BDD e TDD na prática com SpecFlow e Visual Studio 2012

  • 1.
    BDD e TDDna prática com SpecFlow e Visual Studio 2012 Visual Studio Summit 2013
  • 2.
    Sobre mim • IgorAbade (@igorabade) – Microsoft MVP, Visual Studio ALM – Especialista Team Foundation Server (TFS) • Sócio da Lambda3 – Consultoria ALM/TFS, Agilidade/Scrum, Arquitetura – Desenvolvimento de Sistemas – Treinamentos – Parceira Microsoft Gold ALM
  • 3.
    Qualidade é importante? Claro!Ninguém questiona isso. Usuários e clientes esperam por isso. Testes são parte importante. Ainda assim, poucos conseguem fazer direito.
  • 4.
  • 5.
    O mercado estácada vez mais competitivo Nossos clientes precisam ir cada vez mais rápido para o mercado. Usuários estão impacientes. Adivinha onde vamos cortar?
  • 6.
    É hora detentar algo diferente Insanity: Doing the same thing over and over again and expecting different results. -- Albert Einstein
  • 7.
    O Manifesto Ágil •Indivíduos e interação entre eles mais que processos e ferramentas • Software em funcionamento mais que documentação abrangente • Colaboração com o cliente mais que negociação de contratos • Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.
  • 8.
    Lean Agile Scrum XP Framework de gestãoágil de projetos Papéis e cerimônias, melhoria contínua dos times, entrega rápida, limitar trabalho à capacidade Cultura ágil, mindset e práticas Eliminar desperdício Respeitar as pessoas, foco principalmente em P&D Otimizar todo o fluxo Foco na otimização de todo o processo de negócios Práticas de engenharia Trazer qualidade para dentro do desenvolvimento – Automação, integração contínua, revisão por pares etc. Práticas Ágeis
  • 9.
    Lean Agile Scrum XP Framework de gestãoágil de projetos Papéis e cerimônias, melhoria contínua dos times, entrega rápida, limitar trabalho à capacidade Cultura ágil, mindset e práticas Eliminar desperdício Respeitar as pessoas, foco principalmente em P&D Otimizar todo o fluxo Foco na otimização de todo o processo de negócios Práticas de engenharia Trazer qualidade para dentro do desenvolvimento – Automação, integração contínua, revisão por pares etc. Práticas Ágeis
  • 10.
  • 11.
  • 12.
  • 13.
    Ciclo do TDD Fazo teste passar Refatora o código Escreve um teste falhando
  • 14.
  • 16.
    TDD é umaferramenta para possibilitar a evolução de Design Efeitos Colaterais Verificação de comportamento Documentação Afinal, o que é o TDD?
  • 17.
    TDD Que nome devodar ao meu teste? O que testar primeiro? O que testar? Quanto testar? Quando testar? Por que um teste falhou?
  • 18.
  • 19.
    BDD “Behavior-driven development ésobre implementar uma aplicação através da descrição de seu comportamento pela perspectiva de seus stakeholders” -- Dan North
  • 20.
    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 Foco no valor
  • 21.
  • 22.
    • Por ondecomeçar • O que testar • O que não testar • Quanto testar • Como nomear os testes • Por que um teste falha Evoluindo TDD: BDD Outside-in User stories Mínimo possível Intenção Documentação
  • 23.
    Ciclo do BDD Fazo teste passar Refatora o código Escreve um teste falhando Escreve um Teste de Aceitação Falhando
  • 24.
  • 25.
    Feature “Quero que osusuários do site que compraram o produto possam fazer o download diretamente de suas páginas pessoais” Outside In
  • 26.
    Cenário “Garantindo a segurança deinformações: Como usuário cadastrado posso acessar apenas minha página pessoal” Etapas Outside In
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    BDD em .NET:SpecFlow • Inspirado no Cucumber • Linguagem Gherkin specflow.org
  • 36.
  • 37.
    Para saber mais •BDD Primer: Behavior-Driven Development with SpecFlow and WatiN tinyurl.com/nkakqq3 • Documentação do SpecFlow go.specflow.org/doc • Blog da Lambda3 blog.lambda3.com.br tinyurl.com/pzjfa45
  • 38.

Notas do Editor

  • #16 BDD != TDD principalmente porque o vemos de forma diferente
  • #22 Acerte as palavras também vale na linguagem com o clienteBDD vai te obrigar a pensar no negócio, modelar o negócio