SlideShare uma empresa Scribd logo
Behavior-Driven Development
OU COMO CODIFICAR TESTES COM UMA LINGUAGEM AMIGÁVEL
Renato Groffe
Microsoft Most Valuable Professional (MVP)
Microsoft Technical Audience Contributor (MTAC)
MCP, MCTS, OCA, ITIL, COBIT
Mais de 15 anos de experiência na área de Tecnologia
Articulista e Palestrante
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 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/ExemploBDDQANinjaConf
Dúvidas?
Obrigado!

Mais conteúdo relacionado

PPTX
Mocking Test - QA Ninja Conf 2016
PPTX
Testes de interfaces Web com Selenium
PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PPTX
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
PPTX
Mocking Test - GDG-SP - Setembro/2016
PPTX
Behavior-Driven Development (BDD) - Abril/2017
PPTX
TDD e BDD - Developers-SP - Abril/2017
PPTX
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - QA Ninja Conf 2016
Testes de interfaces Web com Selenium
Behavior-Driven Development (BDD) - DevOps Summit 2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
Mocking Test - GDG-SP - Setembro/2016
Behavior-Driven Development (BDD) - Abril/2017
TDD e BDD - Developers-SP - Abril/2017
Mocking Test - ThinkUp! - Abril/2017

Mais procurados (20)

PPTX
.NET Core e Testes de Unidade - Visual Studio Summit 2017
PPTX
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
PPTX
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
PPTX
Test-Driven Development (TDD) - MSP Coding Day
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
PDF
Test-Driven Develpment - TDD
PPTX
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
PDF
Como testar sua aplicação Android com Robotium
PDF
Panorama geral sobre testes e qualidade de software
PPT
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PPTX
Nunca foi tao facil testar
PDF
Automação de Teste com Robotium - Tche Mobile 2014
PDF
BDD em Ação
PPT
TDD - Test Driven Development com JAVA
PPTX
Palestra TDD - TDC - 2016
PDF
Introdução ao TDD
PDF
Automação de Teste em Front End - Caipira Ágil
PPTX
Mocking Test
PPTX
BDD (Behavior-Driven Development) - Setembro/2015
.NET Core e Testes de Unidade - Visual Studio Summit 2017
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Test-Driven Development (TDD) - MSP Coding Day
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Test-Driven Develpment - TDD
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Como testar sua aplicação Android com Robotium
Panorama geral sobre testes e qualidade de software
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
Nunca foi tao facil testar
Automação de Teste com Robotium - Tche Mobile 2014
BDD em Ação
TDD - Test Driven Development com JAVA
Palestra TDD - TDC - 2016
Introdução ao TDD
Automação de Teste em Front End - Caipira Ágil
Mocking Test
BDD (Behavior-Driven Development) - Setembro/2015
Anúncio

Semelhante a Behavior-Driven Development (BDD) - QA Ninja Conf 2016 (20)

PPTX
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
PPTX
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
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
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
PPTX
BDD (Behavior-Driven Development)
PPTX
Boas práticas de desenvolvimento Ágil
PPTX
Desenvolvimento dirigido por comportamento e por teste
PPTX
Todas as abordagens de testes dentro do ágil
PPT
Treinamento Testes Unitários - parte 1
PPTX
BDD e TDD na prática com SpecFlow e Visual Studio 2012
PDF
Jefferson Andrade - BDD - Behavior-Driven Development - ITA
PDF
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
PDF
Test First, TDD e outros Bichos
PDF
Behavior Driven Development - Unificando propostas de negócio com testes e có...
PPTX
Cobertura de Código: Testes de Unidade
PPTX
BDD_ Claudia Beatriz
PPTX
Specflow - Criando uma ponte entre desenvolvedores.
PDF
Demoiselle Behave - Parte 1
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
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
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
BDD (Behavior-Driven Development)
Boas práticas de desenvolvimento Ágil
Desenvolvimento dirigido por comportamento e por teste
Todas as abordagens de testes dentro do ágil
Treinamento Testes Unitários - parte 1
BDD e TDD na prática com SpecFlow e Visual Studio 2012
Jefferson Andrade - BDD - Behavior-Driven Development - ITA
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Test First, TDD e outros Bichos
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Cobertura de Código: Testes de Unidade
BDD_ Claudia Beatriz
Specflow - Criando uma ponte entre desenvolvedores.
Demoiselle Behave - Parte 1
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)

PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Dos requisitos ao código: como criar código rastreável em PHP
Evolução em código: algoritmos genéticos com PHP
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
Curso de Windows 11 resumido na prática.pptx
apresentacao introducao computacao ead.pdf

Behavior-Driven Development (BDD) - QA Ninja Conf 2016

  • 1. Behavior-Driven Development OU COMO CODIFICAR TESTES COM UMA LINGUAGEM AMIGÁVEL
  • 2. Renato Groffe Microsoft Most Valuable Professional (MVP) Microsoft Technical Audience Contributor (MTAC) MCP, MCTS, OCA, ITIL, COBIT Mais de 15 anos de experiência na área de Tecnologia Articulista e Palestrante 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 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: