SlideShare uma empresa Scribd logo
Behavior-Driven Development
DESENVOLVIMENTO ORIENTADO A COMPORTAMENTO
Renato Groffe
Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT
Mais de 15 anos de experiência na área de Tecnologia
Articulista e Palestrante (Devmedia, .NET Magazine,
Canal .NET, .NET Coders, TechNet Wiki)
Contatos
◦ Facebook: https://www.facebook.com/renatogroff
◦ Site: http://renatogroffe.net/
◦ Canal .NET: https://www.facebook.com/canaldotnet
◦ LinkedIn: http://br.linkedin.com/in/renatogroffe
Agenda
◦ Testes de software e sua importância
◦ Behavior-Driven Development
◦ Exemplo prático utilizando o framework SpecFlow
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
Software esperado x entregue
A área de software atualmente (ainda...)
Testes são realmente importantes?
Cenários comuns – área de software
◦ Pressões por rápida entrega
◦ Prazos muito curtos
◦ Equipes reduzidas
◦ Mudanças frequentes em requisitos
◦ Áreas de Negócio e Técnica não falam mesma língua
◦ Testes não são levados tão a sério como se deveria
Surgem as metodologias ágeis...
Metodologias ágeis
◦ Conciliar tempo reduzido com mudanças frequentes ao longo do
projeto
◦ Busca de equilíbrio entre qualidade e produtividade
◦ Melhoria na comunicação entre os envolvidos em um projeto
◦ XP (Extreme Programming) e Scrum são os exemplos mais famosos
Metodologias ágeis e testes de unidade
◦ Testes de unidade são uma forma rápida e flexível de se validar
classes e métodos
◦ XP foi pioneiro na adoção desta prática
◦ Foram a base para o surgimento de TDD (Test-Driven
Development)
Testes de unidade bem definidos
◦ Rapidez na execução
◦ Implementados com facilidade, a partir de um framework pré-
existente
◦ Automatizados e repetíveis
◦ Possibilitam reuso em ações futuras
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 (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)
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 - Benefícios
◦ Melhor comunicação entre os profissionais envolvidos em um projeto
◦ Documentação simples e gerada de forma dinâmica
◦ Facilita o compartilhamento de conhecimentos a respeito de um projeto
◦ User stories apresentam objetivos mais claros e bem definidos
◦ Instrumento de grande valia em equipes que seguem metodologias ágeis
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 prático
Recursos Utilizados
◦ Microsoft Visual Studio Community 2015 Update 3
◦ MS Test
◦ SpecFlow
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:
Fontes:
https://github.com/renatogroffe/ExemploBDD_GDGSP
Dúvidas?
Obrigado!

Mais conteúdo relacionado

PPTX
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
PPTX
Testes de interfaces Web com Selenium
PPTX
Mocking Test - QA Ninja Conf 2016
PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
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 - Hertz - Janeiro-2018
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Testes de interfaces Web com Selenium
Mocking Test - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
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 - Hertz - Janeiro-2018

Mais procurados (20)

PPT
Final Project (2013): Test-Driven Development applied on web applications
PPTX
Mocking Test - GDG-SP - Setembro/2016
PPTX
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
PDF
Test-Driven Develpment - TDD
PDF
Introdução ao TDD
PPTX
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
PPTX
TDD Desenvolvimento orientado ao teste
PDF
Panorama geral sobre testes e qualidade de software
PPT
TDD - Test Driven Development com JAVA
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PPTX
BDD (Behavior-Driven Development) - Setembro/2015
PPTX
TDD (Test-Driven Development)
PDF
Estratégias de testes em 10 passos, step by step!
PDF
Integrando testes de segurança ao processo de desenvolvimento de software
PDF
Apresentação jasmine
PPT
Gof design patterns
PPTX
Tech talk clean architecture and_pyramid_test
PPTX
Test-Driven Development (TDD) - MSP Coding Day
PPTX
BDD (Behavior-Driven Development)
PPTX
Apresentação tcc final
Final Project (2013): Test-Driven Development applied on web applications
Mocking Test - GDG-SP - Setembro/2016
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Test-Driven Develpment - TDD
Introdução ao TDD
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
TDD Desenvolvimento orientado ao teste
Panorama geral sobre testes e qualidade de software
TDD - Test Driven Development com JAVA
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
BDD (Behavior-Driven Development) - Setembro/2015
TDD (Test-Driven Development)
Estratégias de testes em 10 passos, step by step!
Integrando testes de segurança ao processo de desenvolvimento de software
Apresentação jasmine
Gof design patterns
Tech talk clean architecture and_pyramid_test
Test-Driven Development (TDD) - MSP Coding Day
BDD (Behavior-Driven Development)
Apresentação tcc final
Anúncio

Semelhante a BDD (Behavior-Driven Development) - GDG-SP - Julho/2016 (20)

PPTX
TDD e BDD - Developers-SP - Abril/2017
PPTX
Behavior-Driven Development (BDD) - Abril/2017
PPTX
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
PPTX
Mocking Test - ThinkUp! - Abril/2017
PPTX
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
PPTX
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
PDF
Falando sobre DevOps no azure
PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
PPTX
BDD com SpecFlow
PPTX
Bdd com spec flow
PDF
Metodologias Ageis
PDF
Apresentacao dev ops
PPTX
Teste Driven Development
PPTX
Tendências e Dicas para o Desenvolvimento de Software
PPTX
Apresentação testes white box
PPTX
Testes automatizados.pptx
PPTX
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
PDF
Automação de testes - uma introdução sobre estratégias
TDD e BDD - Developers-SP - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Mocking Test - ThinkUp! - Abril/2017
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Falando sobre DevOps no azure
Test-Driven Development (TDD) utilizando o framework xUnit.net
BDD com SpecFlow
Bdd com spec flow
Metodologias Ageis
Apresentacao dev ops
Teste Driven Development
Tendências e Dicas para o Desenvolvimento de Software
Apresentação testes white box
Testes automatizados.pptx
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Automação de testes - uma introdução sobre estratégias
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
apresentacao introducao computacao ead.pdf
PPTX
Curso de Windows 11 resumido na prática.pptx
PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
apresentacao introducao computacao ead.pdf
Curso de Windows 11 resumido na prática.pptx
Mapeamento de Objeto para Tabela Relacional
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

  • 2. Renato Groffe Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT Mais de 15 anos de experiência na área de Tecnologia Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, .NET Coders, TechNet Wiki) Contatos ◦ Facebook: https://www.facebook.com/renatogroff ◦ Site: http://renatogroffe.net/ ◦ Canal .NET: https://www.facebook.com/canaldotnet ◦ LinkedIn: http://br.linkedin.com/in/renatogroffe
  • 3. Agenda ◦ Testes de software e sua importância ◦ Behavior-Driven Development ◦ Exemplo prático utilizando o framework SpecFlow
  • 4. Por que testar um software? ◦ Garantir que o projeto atende às especificações ◦ Detectar falhas e defeitos antes da subida para produção
  • 5. Alguns tipos de testes ◦ Teste de unidade ◦ Teste de integração ◦ Teste de sistema ◦ Teste de aceitação ◦ Teste de regressão
  • 7. A área de software atualmente (ainda...)
  • 8. Testes são realmente importantes?
  • 9. Cenários comuns – área de software ◦ Pressões por rápida entrega ◦ Prazos muito curtos ◦ Equipes reduzidas ◦ Mudanças frequentes em requisitos ◦ Áreas de Negócio e Técnica não falam mesma língua ◦ Testes não são levados tão a sério como se deveria
  • 11. Metodologias ágeis ◦ Conciliar tempo reduzido com mudanças frequentes ao longo do projeto ◦ Busca de equilíbrio entre qualidade e produtividade ◦ Melhoria na comunicação entre os envolvidos em um projeto ◦ XP (Extreme Programming) e Scrum são os exemplos mais famosos
  • 12. Metodologias ágeis e testes de unidade ◦ Testes de unidade são uma forma rápida e flexível de se validar classes e métodos ◦ XP foi pioneiro na adoção desta prática ◦ Foram a base para o surgimento de TDD (Test-Driven Development)
  • 13. Testes de unidade bem definidos ◦ Rapidez na execução ◦ Implementados com facilidade, a partir de um framework pré- existente ◦ Automatizados e repetíveis ◦ Possibilitam reuso em ações futuras
  • 14. 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
  • 17. 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
  • 18. E como superar tais dificuldades? A abordagem conhecida como Behavior-Driven Development pode ser uma resposta a esta pergunta
  • 19. Behavior-Driven Development (BDD) ◦ Metodologia de desenvolvimento proposta por Dan North em 2006 ◦ User stories (histórias) descrevem o comportamento de features (funcionalidades)
  • 20. Estrutura de uma user story
  • 21. Behavior-Driven Development (BDD) ◦ Ciclo de desenvolvimento muito semelhante àquele existente para TDD
  • 22. Behavior-Driven Development (BDD) ◦ As histórias fazem uso de uma linguagem ubíqua (compreendida por todos os envolvidos no projeto)
  • 23. 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
  • 24. BDD - Benefícios ◦ Melhor comunicação entre os profissionais envolvidos em um projeto ◦ Documentação simples e gerada de forma dinâmica ◦ Facilita o compartilhamento de conhecimentos a respeito de um projeto ◦ User stories apresentam objetivos mais claros e bem definidos ◦ Instrumento de grande valia em equipes que seguem metodologias ágeis
  • 25. 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
  • 26. SpecFlow e outros frameworks ◦ MS Test, Nunit, xUnit.net, Selenium, Moq e Nsubstitute são algumas das opções possíveis... MS Test
  • 28. Recursos Utilizados ◦ Microsoft Visual Studio Community 2015 Update 3 ◦ MS Test ◦ SpecFlow
  • 29. Exemplo de uso do SpecFlow ◦ Funcionalidade para conversão de alturas em pés para o equivalente em metros ◦ Classe a ser implementada:
  • 30. 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
  • 31. Exemplo de uso do SpecFlow ◦ User story: