• Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor (MTAC)
• Mais de 15 anos de experiência na área de Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET e do DevOps
Professionals
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
Agenda
• Testes de software: uma visão geral
• Um pouco sobre BDD (Behavior-Driven
Development)
• Indo além com BDD...
Testes de software: uma visão geral
Por que testar um software?
• Garantir que o projeto atende às especificações
• Detectar falhas e defeitos antes da subida para produção
• TDD (Test-Driven Development) é uma das abordagens
mais conhecidas
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)
Elaboração de um teste
com falhas (Red)
Execução com sucesso do teste
definido anteriormente (Green)
Identificar pontos de
melhoria no código (Refactor)
Um exemplo (.NET + xUnit)
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?
Behavior-Driven Development (BDD)
• Uma resposta às dificuldades geradas por TDD
• Metodologia de desenvolvimento proposta por Dan North em
2006
• User stories (histórias) descrevem o comportamento de features
(funcionalidades)
Estrutura de uma user story
Funcionalidade:
Cenário:
Dado
E
E
Quando
Então
E
E
Behavior-Driven Development (BDD)
Elaboração de um teste com
falhas (Red)
Execução com sucesso do teste
definido anteriormente (Green)
Identificar pontos de
melhoria no código (Refactor)
• 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
• As principais plataformas da atualidade contam com opções baseadas no Cucumber
Um exemplo rápido...
Distância em m = Pés * 0,3048
Conversão de pés para metros:
4 casas de arrendondamento
Analisando as possibilidades
• Frameworks baseados no Cucumber são geralmente
empregados no teste de classes
• Mas o uso de técnicas de BDD e desses frameworks se resume
apenas a isto?
Indo além com BDD...
O que mais podemos fazer?
• Conforme já discutido, user stories podem descrever o
comportamento de uma funcionalidade
• Este comportamento pode descrever a interação do usuário
com uma interface Web
• Ou ainda em uma mobile app...
Há mais possibilidades utilizando Cucumber
• Frameworks baseados no Cucumber podem ser combinados a
outras soluções de testes
• Isto é aplicável tanto a aplicações Web, quanto a soluções
mobile
Há mais possibilidades utilizando Cucumber
• Continuous integration → É possível combinar o uso de
frameworks baseados no Cucumber com soluções como Visual
Studio Team Services (VSTS) e Jenkins
Um novo exemplo,
agora com Selenium...
4 casas de arrendondamento
Conversão de milhas para km:
github.com/renatogroffe/InterCon2017_BDD
facebook.com/renatogroffe
medium.com/@renato.groffe/
http://renatogroffe.net/

Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOps Professionals - Maio-2018

  • 2.
    • Microsoft MostValuable Professional (MVP) • Multi-Plataform Technical Audience Contributor (MTAC) • Mais de 15 anos de experiência na área de Tecnologia • Autor Técnico e Palestrante • Um dos organizadores do Canal .NET e do DevOps Professionals Renato Groffe h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
  • 3.
    Renato Groffe -Contatos h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e / /renatogroffe /in/renatogroffe /canaldotnet /renatogroffe /canaldotnet /renatogroff
  • 4.
    Agenda • Testes desoftware: uma visão geral • Um pouco sobre BDD (Behavior-Driven Development) • Indo além com BDD...
  • 5.
    Testes de software:uma visão geral
  • 6.
    Por que testarum software? • Garantir que o projeto atende às especificações • Detectar falhas e defeitos antes da subida para produção • TDD (Test-Driven Development) é uma das abordagens mais conhecidas
  • 7.
    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
  • 8.
    Test-Driven Development (Red-Green-Refactor) Elaboraçãode um teste com falhas (Red) Execução com sucesso do teste definido anteriormente (Green) Identificar pontos de melhoria no código (Refactor)
  • 9.
  • 10.
    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
  • 11.
    E como superartais dificuldades?
  • 12.
    Behavior-Driven Development (BDD) •Uma resposta às dificuldades geradas por TDD • Metodologia de desenvolvimento proposta por Dan North em 2006 • User stories (histórias) descrevem o comportamento de features (funcionalidades)
  • 13.
    Estrutura de umauser story Funcionalidade: Cenário: Dado E E Quando Então E E
  • 14.
    Behavior-Driven Development (BDD) Elaboraçãode um teste com falhas (Red) Execução com sucesso do teste definido anteriormente (Green) Identificar pontos de melhoria no código (Refactor) • Ciclo de desenvolvimento muito semelhante àquele existente para TDD
  • 15.
    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
  • 16.
    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 • As principais plataformas da atualidade contam com opções baseadas no Cucumber
  • 17.
    Um exemplo rápido... Distânciaem m = Pés * 0,3048 Conversão de pés para metros: 4 casas de arrendondamento
  • 18.
    Analisando as possibilidades •Frameworks baseados no Cucumber são geralmente empregados no teste de classes • Mas o uso de técnicas de BDD e desses frameworks se resume apenas a isto?
  • 19.
  • 20.
    O que maispodemos fazer? • Conforme já discutido, user stories podem descrever o comportamento de uma funcionalidade • Este comportamento pode descrever a interação do usuário com uma interface Web • Ou ainda em uma mobile app...
  • 21.
    Há mais possibilidadesutilizando Cucumber • Frameworks baseados no Cucumber podem ser combinados a outras soluções de testes • Isto é aplicável tanto a aplicações Web, quanto a soluções mobile
  • 22.
    Há mais possibilidadesutilizando Cucumber • Continuous integration → É possível combinar o uso de frameworks baseados no Cucumber com soluções como Visual Studio Team Services (VSTS) e Jenkins
  • 23.
    Um novo exemplo, agoracom Selenium... 4 casas de arrendondamento Conversão de milhas para km:
  • 24.
  • 25.