Behavior-Driven Development ou como codificar testes com uma linguagem amigável Renato Groffe Software Engineer, MTAC | Aon TRILHA | MELHORIA CONTÍNUA @RenatoGroff | http://renatogroffe.net/
Behavior-Driven Development ou como codificar testes com uma linguagem amigável
Renato GroffeSoftware Engineer, MTAC | Aon
TRILHA | MELHORIA CONTÍNUA
@RenatoGroff | http://renatogroffe.net/
Agenda• Uma visão geral sobre testes de software
• Behavior-Driven Development
• Exemplo prático utilizando o framework SpecFlow
Link para acesso aos slides e fontes:
http://bit.ly/bdd-devops-summit-2016
Por que testar um software?
• Garantir que o projeto atende às especificações
• Detectar falhas e defeitos antes da subida para produção
Alguns tipos de testes
• Teste de unidade
• Teste de integração
• Teste de sistema
• Teste de aceitação
• Teste de regressão
Test-Driven Development (TDD)
• Desenvolvimento cíclico baseado na codificação e execução de testes de unidade
• Testes são escritos antes mesmo da codificação de classes ou métodos
• Abordagem comumente associada às metodologias ágeis
Test-Driven Development (Red-Green-Refactor)
Um exemplo de teste de unidade (xUnit.net)
Dificuldades na adoção de TDD
• Verificar pontos isolados (métodos, classes) nem sempre é uma solução eficiente ou garantia de sucesso
• Problemas costumam surgir durante a integração de partes relacionadas
• Testes de unidade são compreendidos apenas por pessoas com um perfil mais técnico
E como superar tais dificuldades?
A abordagem conhecida como Behavior-Driven Development pode ser uma resposta a esta pergunta
Behavior-Driven Development (BDD)
• Metodologia de desenvolvimento proposta por Dan North em 2006
• User stories (histórias) descrevem o comportamento de features (funcionalidades)
Estrutura de uma user story
Behavior-Driven Development (BDD)• Ciclo de desenvolvimento muito semelhante àquele existente
para TDD
Behavior-Driven Development (BDD)• As histórias fazem uso de uma linguagem ubíqua
(compreendida por todos os envolvidos no projeto)
Especialistasde Negócio
Especialistas Técnicos
Linguagemubíqua
Behavior-Driven Development (BDD)• Frameworks permitem que as user stories sejam
executadas como testes de aceitação ou regressão a partir de uma IDE
• Cucumber → primeira ferramenta a suportar BDD e base utilizada pelos principais frameworks
• Gherkin → mecanismo utilizado pelo Cucumber para interpretar uma história; suporte à internacionalização
BDD e a plataforma .NET• A opção mais utilizada na atualidade é o framework gratuito
SpecFlowhttp://www.specflow.org/
• O SpecFlow trabalha com especificações de funcionalidades, baseando-se para isto em user stories
• Cenários correspondem a diferentes casos de teste no SpecFlow• A utilização do SpecFlow costuma acontecer em conjunto com
outros frameworks
SpecFlow e outros frameworks• MS Test, Nunit, xUnit.net, Selenium, Moq e Nsubstitute são
algumas das opções possíveis...
MS Test
Exemplo de uso do SpecFlow• Funcionalidade para conversão de alturas em pés para o
equivalente em metros
• Classe a ser implementada:
Exemplo de uso do SpecFlow• Fórmula a ser considerada:• Casos de teste:
• Considerar 4 casas decimais para arredondamento da distância em metros
Distância em m = Pés * 0,3048
Exemplo de uso do SpecFlow• User story: