SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
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

Mais procurados

Final Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsFinal Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsLuiz Henrique
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...Renato Groffe
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDDKleber Bernardo
 
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...iMasters
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Panorama geral sobre testes e qualidade de software
Panorama geral sobre testes e qualidade  de softwarePanorama geral sobre testes e qualidade  de software
Panorama geral sobre testes e qualidade de softwareAriane Izac
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Ariane Izac
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareConviso Application Security
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmineRangel Javier
 
Tech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_testTech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_testVictor Yuri Alves Tripeno
 
Test-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayTest-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayRenato Groff
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
Apresentação tcc final
Apresentação tcc finalApresentação tcc final
Apresentação tcc finalJhool Flores
 

Mais procurados (20)

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

Semelhante a BDD e SpecFlow: Exemplo prático de Behavior-Driven Development usando o framework SpecFlow

TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017Renato Groff
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Renato Groff
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Renato Groff
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Renato Groff
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...Renato Groff
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...Renato Groff
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 

Semelhante a BDD e SpecFlow: Exemplo prático de Behavior-Driven Development usando o framework SpecFlow (20)

TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
BDD com SpecFlow
BDD com SpecFlowBDD com SpecFlow
BDD com SpecFlow
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
FDD
FDDFDD
FDD
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
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
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 

Mais de Renato Groff

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

Mais de Renato Groff (20)

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

BDD e SpecFlow: Exemplo prático de Behavior-Driven Development usando o framework SpecFlow

  • 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: