bdd e tdd na prática com specflow e visual studio 2012
DESCRIPTION
Já experimentou usar outras ferramentas para documentação e design da sua aplicação? E se, ao invés de documentos que ninguém lê (nem atualiza!) usássemos “especificações executáveis”? Já pensou se seu documento de requisitos pudesse ser executado e conseguisse validar, sozinho, se as regras de negócio ainda estão sendo atendidas? Venha ver nesta sessão como este “sonho” se torna realidade com o uso de práticas como BDD e TDD, apoiadas por ferramentas como o SpecFlow, WatiN e o Visual Studio 2012.TRANSCRIPT
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
XP
Framework de gestão ágil de projetosPapéis e cerimônias, melhoria contínua dos times, entrega rápida, limitar trabalho à capacidade
Cultura ágil, mindset e práticasEliminar desperdícioRespeitar 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 engenhariaTrazer qualidade para dentro do desenvolvimento – Automação, integração contínua, revisão por pares etc.
Práticas Ágeis
Lean
XP
Framework de gestão ágil de projetosPapéis e cerimônias, melhoria contínua dos times, entrega rápida, limitar trabalho à capacidade
Cultura ágil, mindset e práticasEliminar desperdícioRespeitar 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 engenhariaTrazer 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?demo
TDD: um péssimo nome!
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: BDDOutside-in
User stories
Mínimo possível
Intenção
Documentação
Ciclo do BDDFaz 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 SpecFlowdemo
Para saber mais• BDD Primer: Behavior-Driven
Development with SpecFlow and WatiNtinyurl.com/nkakqq3
• Documentação do SpecFlowgo.specflow.org/doc
• Blog da Lambda3blog.lambda3.com.br
tinyurl.com/pzjfa45
www.lambda3.com.br