Behavior-Driven Development ou
como codificar testes com uma
linguagem amigável
Renato Groffe
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
Developmentpode 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)
Especialistas
de Negócio
Especialistas
Técnicos
Linguagem
ubí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 SpecFlow
http://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:
Behavior-Driven Development (BDD) - DevOps Summit 2016

Behavior-Driven Development (BDD) - DevOps Summit 2016

  • 1.
    Behavior-Driven Development ou comocodificar testes com uma linguagem amigável Renato Groffe TRILHA | MELHORIA CONTÍNUA @RenatoGroff | http://renatogroffe.net/
  • 2.
    Agenda • Uma visãogeral sobre testes de software • Behavior-Driven Development • Exemplo prático utilizando o framework SpecFlow
  • 3.
    Link para acessoaos slides e fontes: http://bit.ly/bdd-devops-summit-2016
  • 4.
    Por que testarum software? • Garantir que o projeto atende às especificações • Detectar falhas e defeitos antes da subida para produção
  • 5.
    Alguns tipos detestes • Teste de unidade • Teste de integração • Teste de sistema • Teste de aceitação • Teste de regressão
  • 6.
    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
  • 7.
  • 8.
    Um exemplo deteste de unidade (xUnit.net)
  • 9.
    Dificuldades na adoçãode 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
  • 10.
    E como superartais dificuldades? A abordagem conhecida como Behavior-Driven Developmentpode ser uma resposta a esta pergunta
  • 11.
    Behavior-Driven Development (BDD) •Metodologia de desenvolvimento proposta por Dan North em 2006 • User stories (histórias) descrevem o comportamento de features (funcionalidades)
  • 12.
    Estrutura de umauser story
  • 13.
    Behavior-Driven Development (BDD) •Ciclo de desenvolvimento muito semelhante àquele existente para TDD
  • 14.
    Behavior-Driven Development (BDD) •As histórias fazem uso de uma linguagem ubíqua (compreendida por todos os envolvidos no projeto) Especialistas de Negócio Especialistas Técnicos Linguagem ubíqua
  • 15.
    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
  • 16.
    BDD e aplataforma .NET • A opção mais utilizada na atualidade é o framework gratuito SpecFlow http://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
  • 17.
    SpecFlow e outrosframeworks • MS Test, Nunit, xUnit.net, Selenium, Moq e Nsubstitute são algumas das opções possíveis... MS Test
  • 18.
    Exemplo de usodo SpecFlow • Funcionalidade para conversão de alturas em pés para o equivalente em metros • Classe a ser implementada:
  • 19.
    Exemplo de usodo 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
  • 20.
    Exemplo de usodo SpecFlow • User story: