SlideShare uma empresa Scribd logo
Indo além dos testes de classes com BDD (Behavior-Driven Development) - InterCon 2017
• 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 .NET SP
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 /
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/

Mais conteúdo relacionado

PPTX
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
PPTX
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
PPTX
Programe a eficácia do seu código
PDF
Dicas para sua carreira de Desenvolvedor PHP
PDF
Como aumentar a eficiência dos seus testes manuais
PPTX
Incluindo Ferramentas de Segurança no Pipeline
PDF
Testes Unitários
PPTX
Palestra TDD - TDC - 2016
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Programe a eficácia do seu código
Dicas para sua carreira de Desenvolvedor PHP
Como aumentar a eficiência dos seus testes manuais
Incluindo Ferramentas de Segurança no Pipeline
Testes Unitários
Palestra TDD - TDC - 2016

Mais procurados (20)

PDF
Facilitando o desenvolvimento orientado a testes em aplicações PHP
PDF
As escolhas do desenvolvedor
PPTX
Test Driven Development
PPTX
Desenvolvendo software com qualidade e agilidade
PDF
Jenkins + DCS / Dafiti Conference 2014
PDF
Refatorar é preciso. Palestra TDC 2014
PDF
Palestra TDD Javou! #08 2016
PDF
Refatorar é preciso! 2.0
PDF
Como testar sua aplicação Android com Robotium
PPTX
Desenvolvimento orientado a testes - TDD
PDF
BDD - Behaviour Driven Development
PDF
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
PPTX
Vamos falar de DevOps?
PPTX
Todas as abordagens de testes dentro do ágil
PPTX
Desconstruindo monolitos - Construindo microservicos em Delphi
PPTX
Test-Driven Development (TDD): primeiros passos - QA-SP - Julho/2017
PDF
Predição de bugs
PPTX
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
PDF
Dojo com Processing
ODP
Revolução Go TDC 2016
Facilitando o desenvolvimento orientado a testes em aplicações PHP
As escolhas do desenvolvedor
Test Driven Development
Desenvolvendo software com qualidade e agilidade
Jenkins + DCS / Dafiti Conference 2014
Refatorar é preciso. Palestra TDC 2014
Palestra TDD Javou! #08 2016
Refatorar é preciso! 2.0
Como testar sua aplicação Android com Robotium
Desenvolvimento orientado a testes - TDD
BDD - Behaviour Driven Development
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Vamos falar de DevOps?
Todas as abordagens de testes dentro do ágil
Desconstruindo monolitos - Construindo microservicos em Delphi
Test-Driven Development (TDD): primeiros passos - QA-SP - Julho/2017
Predição de bugs
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Dojo com Processing
Revolução Go TDC 2016
Anúncio

Semelhante a Indo além dos testes de classes com BDD (Behavior-Driven Development) - InterCon 2017 (20)

PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PPTX
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
PPTX
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
PPTX
TDD e BDD - Developers-SP - Abril/2017
PPTX
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
PPTX
Behavior-Driven Development (BDD) - Abril/2017
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
PPTX
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
PPTX
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
PPTX
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
PPTX
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
PPTX
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
PPTX
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
PPTX
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
PDF
Automação de testes - uma introdução sobre estratégias
PPT
Tdd On Rails
PPT
Instituto Stela S&T#001, Projeto de software com testes unitários
Behavior-Driven Development (BDD) - DevOps Summit 2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
TDD e BDD - Developers-SP - Abril/2017
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Behavior-Driven Development (BDD) - Abril/2017
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automação de testes - uma introdução sobre estratégias
Tdd On Rails
Instituto Stela S&T#001, Projeto de software com testes unitários
Anúncio

Mais de Renato Groff (20)

PPTX
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
PPTX
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
PPTX
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
PPTX
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
PPTX
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
PPTX
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
PPTX
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
PPTX
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
PPTX
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
PPTX
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
PPTX
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
PPTX
Aplicações Distribuídas com .NET | TDC Recife Online 2020
PPTX
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
PPTX
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
PPTX
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
PPTX
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
PPTX
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
PPTX
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
PPTX
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
PPTX
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020

Último (7)

PDF
Dos requisitos ao código: como criar código rastreável em PHP
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Dos requisitos ao código: como criar código rastreável em PHP
Curso de Windows 11 resumido na prática.pptx
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Evolução em código: algoritmos genéticos com PHP
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

Indo além dos testes de classes com BDD (Behavior-Driven Development) - InterCon 2017

  • 2. • 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 .NET SP 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. Agenda • Testes de software: uma visão geral • Um pouco sobre BDD (Behavior-Driven Development) • Indo além com BDD...
  • 4. Testes de software: uma visão geral
  • 5. 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
  • 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. 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)
  • 8. Um exemplo (.NET + xUnit)
  • 9. 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
  • 10. E como superar tais dificuldades?
  • 11. 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)
  • 12. Estrutura de uma user story Funcionalidade: Cenário: Dado E E Quando Então E E
  • 13. 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
  • 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 • As principais plataformas da atualidade contam com opções baseadas no Cucumber
  • 16. Um exemplo rápido... Distância em m = Pés * 0,3048 Conversão de pés para metros: 4 casas de arrendondamento
  • 17. 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?
  • 18. Indo além com BDD...
  • 19. 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...
  • 20. 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
  • 21. 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
  • 22. Um novo exemplo, agora com Selenium... 4 casas de arrendondamento Conversão de milhas para km: