SlideShare a Scribd company logo
1 of 48
Renato Groffe
Setembro/2015
 Mais de 15 anos de experiência na área de Tecnologia
 Pós-graduação em Engenharia de Software – ênfase em
SOA
 Cursando MBA em Business Intelligence (FIAP)
 Graduação em Sistemas de Informação
 Técnico em Processamento de Dados
 MTAC (Microsoft Technical Audience Contributor), MCP,
Microsoft Specialist, MCTS, OCA, ITIL, COBIT
 Página no Facebook
https://www.facebook.com/RenatoGroffeSW
 Perfil no Facebook
https://www.facebook.com/renatogroff
 LinkedIn
http://br.linkedin.com/in/renatogroffe
 Visual Studio Community 2015
 Visual Studio 2013 (preferencialmente com o
Update 4)
 SpecFlow
 Visual Studio Unit Testing Framework
(também conhecido como MS Test)
 Cenários comuns dentro do desenvolvimento de
software
 Test-Driven Development (TDD): uma visão geral
 Testes Unitários no Visual Studio: um exemplo
simples
 Behavior-Driven Development (BDD)
 BDD na plataforma .NET
 Para efetuar o download das soluções aqui apresentadas acesse:
Visual Studio 2013
https://gallery.technet.microsoft.com/Exemplo-de-aplicaes-7dd7cbf1
Visual Studio 2015
https://gallery.technet.microsoft.com/Exemplos-de-aplicaes-9b6252c8
 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
 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
 Testes unitários são uma forma rápida e flexível de se
validar classes e métodos → trata-se de uma proposta em
conformidade com o conceito ágil
 XP foi um dos primeiros métodos ágeis a incentivar o uso
de testes unitários automatizados
 Testes unitários foram a base para o surgimento da
metodologia conhecida como TDD (Test-Driven
Development)
 Rapidez na execução
 Implementados com facilidade, normalmente a partir de um
framework pré-existente
◦ Alternativas na plataforma .NET:
 Visual Studio Unit Testing Framework (MS Test)
 NUnit (http://www.nunit.org/)
 xUnit.net (https://github.com/xunit)
 Automatizados e repetíveis
 Possibilitam reuso em ações futuras
 Testes unitários codificados antes mesmo da implementação das
partes que serão submetidas a análises → evita-se assim a
elaboração de testes “viciados”
 Prioriza-se uma melhor organização do código, favorecendo
práticas como separação de responsabilidades, alta coesão e baixo
acoplamento
 A implementação de uma funcionalidade segue um ciclo
chamado Red-Green-Refactor (os testes unitários são
executados em todos os estágios)
 Cálculo do Fatorial – Casos de Teste:
 Classe estática a ser implementada:
 Estrutura esperada para a solução (Class Library + Unit Test Project):
 Metodologia para desenvolvimento de softwares proposta por Dan North
em 2006 (este especialista também criou o framework JBehave, primeira
implementação de BDD voltada à plataforma Java)
 Surgiu da experiência de North ministrando treinamentos sobre TDD, com
o mesmo se deparando com a dificuldade de desenvolvedores em aplicar
esta abordagem:
◦ Por onde começar com os testes unitários?
◦ O que testar ou não?
◦ Quando e quanto testar?
◦ Que nomenclatura utilizar nos testes?
◦ Por quais razões um teste falhou?
 Foco errado na adoção de testes → verificar aspectos e
pontos isolados de uma aplicação muitas vezes não é
suficiente
 Depender apenas de testes unitários não é garantia
nenhuma de sucesso
 É comum que surjam problemas durante a verificação da
integração de diferentes partes de um sistema
 Desenvolvedores experientes realizam testes enfatizando
o comportamento das funcionalidades
 Testes de aceitação → permitem a usuários finais simular
operações cotidianas, analisando se as expectativas foram
atendidas
 Testes unitários como documentação → não são
compreendidos por usuários de negócio (sem background
técnico)
 Metodologia baseada em user stories (histórias):
◦ Histórias descrevem os comportamentos esperados para funcionalidades
◦ Uso de uma linguagem ubíqua (em inglês “ubiquitous language”) →
vocabulário comum baseado em elementos de negócio e dominado por
todos os envolvidos no projeto
◦ Uma user story contém sentenças que seguem algumas regras de
sintaxe de fácil compreensão
◦ Algumas sentenças representam cenários → simulações de
comportamento em diferentes situações
◦ Frameworks permitem que as user stories sejam executadas como testes
automatizados
 Teste de aceitação → User story que serve de base para a
implementação de uma funcionalidade e posterior validação da
mesma
 Melhor comunicação entre os profissionais envolvidos em um
projeto → padronização através de uma linguagem comum
 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 →
desenvolvedores trabalham de forma mais direcionada
 Instrumento de grande valia em equipes que seguem metodologias
ágeis (como em Scrum, no qual também se empregam user stories)
 O SpecFlow é talvez hoje a principal solução para a adoção das
práticas de BDD em projetos no Visual Studio
◦ Site: http://www.specflow.org/
◦ Baseado em um framework chamado Cucumber, o qual foi concebido
inicialmente para a linguagem Ruby
◦ Empregado em conjunto com frameworks de testes unitários (MS Test,
NUnit)
◦ Faz uso de um mecanismo conhecido como Gherkin
 Parser que se baseia na utilização de uma linguagem estruturada
 Sintaxe simples e não-técnica, capaz de ser entendida por pessoas da área de
negócios
 Possui suporte à internacionalização
 Instalação de extensão para uso do SpecFlow → menu Tools
 Extensão que integra o SpecFlow ao Visual Studio
 Classe a ser criada:
 Conversão de temperatura em graus Fahrenheit (F) para o equivalente nas
escalas Celsius (C) e Kelvin (K):
 Estrutura esperada para a solução (Class Library + Unit Test Project):
 Adicionar o SpecFlow ao projeto de testes via NuGet:
 Alterar o app.config do projeto de testes, de forma que a user story
possa ser escrita em português (além de utilizar o framework MS
Test):
 Adicionar uma “Feature” ao projeto de testes:
 Embora o conteúdo inicial do arquivo ConvTemperatura.feature esteja
em inglês, o Visual Studio já exibirá como opções palavras-chaves em
português:
 A user story/especificação a ser criada deverá levar em
conta os seguintes casos de teste:
 A seguir está um possível conteúdo para a user story:
 O próximo passo será a criação de uma classe baseada no template
“SpecFlow Step Definition” → esta estrutura fará a conexão entre a user
story e a classe ConversorTemperatura:
 Em termos práticos, este novo arquivo conterá uma classe
responsável por validar os diferentes cenários especificados
anteriormente:
 Expressões regulares serão utilizadas como “placeholders”, a fim de possibilitar
a correta leitura dos parâmetros
 Cada método definido em ConvTemperaturaStepDefinition corresponde ao
mapeamento de uma sentença definida na user story (os atributos equivalem às
palavras-chaves em inglês):
 Uma possível implementação para ConvTemperaturaStepDefinition (utilizando a classe Assert do
framework MS Test) seria:
 É possível tanto a execução, quanto o “debug” de uma user story:
 Num primeiro momento a execução da user story resultará em falhas em todos os cenários:
 Regras para a implementação da classe ConversorTemperatura:
C = (F – 32) / 1,8
K = C + 273,15
 Uma possível implementação da classe ConversorTemperatura:
 Uma nova execução da user story indicará então sucesso em todos os cenários:
 Uma possível refatoração da classe ConversorTemperatura:
 Após a refatoração:
Dúvidas, sugestões???
 Behavior Driven Development (BDD) com Specflow
http://www.devmedia.com.br/behavior-driven-development-bdd-
com-specflow/29405
 Introducing BDD
http://dannorth.net/introducing-bdd/
 Testes Unitários no Visual Studio
http://www.devmedia.com.br/testes-unitarios-no-visual-studio-
2012/27215
 TDD - Test-Driven Development
http://pt.slideshare.net/renatogroff1/tdd-renato-groffe
Obrigado!!!

More Related Content

What's hot

Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Renato 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
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Renato Groff
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...Renato Groffe
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Renato Groff
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDDKleber Bernardo
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016Renato Groff
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Renato Groff
 
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
 
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
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumRenato Groff
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosAndreano Lanusse
 

What's hot (20)

Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
 
Mocking Test
Mocking TestMocking Test
Mocking Test
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 
Testes Automatizados No Cakephp
Testes Automatizados No CakephpTestes Automatizados No Cakephp
Testes Automatizados No Cakephp
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017
 
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
 
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
 
Julho 2016 - BDD com SpecFlow
Julho 2016 - BDD com SpecFlowJulho 2016 - BDD com SpecFlow
Julho 2016 - BDD com SpecFlow
 
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
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com Selenium
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
 

Similar to BDD (Behavior-Driven Development) - Setembro/2015

TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Renato Groff
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Renato 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
 
Specificationby example
Specificationby example Specificationby example
Specificationby example Laís Berlatto
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveJulian Cesar
 
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
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 

Similar to BDD (Behavior-Driven Development) - Setembro/2015 (20)

TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Mocking Test - Outubro/2015
Mocking Test - Outubro/2015
 
BDD com SpecFlow
BDD com SpecFlowBDD com SpecFlow
BDD com SpecFlow
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
 
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
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Specificationby example
Specificationby example Specificationby example
Specificationby example
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Reuso desw
Reuso deswReuso desw
Reuso desw
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Tees Final
Tees FinalTees Final
Tees Final
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle Behave
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
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 ...
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 

More from 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
 

More from 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 (Behavior-Driven Development) - Setembro/2015

  • 2.  Mais de 15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  Cursando MBA em Business Intelligence (FIAP)  Graduação em Sistemas de Informação  Técnico em Processamento de Dados  MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  • 3.  Página no Facebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe
  • 4.  Visual Studio Community 2015  Visual Studio 2013 (preferencialmente com o Update 4)  SpecFlow  Visual Studio Unit Testing Framework (também conhecido como MS Test)
  • 5.  Cenários comuns dentro do desenvolvimento de software  Test-Driven Development (TDD): uma visão geral  Testes Unitários no Visual Studio: um exemplo simples  Behavior-Driven Development (BDD)  BDD na plataforma .NET
  • 6.  Para efetuar o download das soluções aqui apresentadas acesse: Visual Studio 2013 https://gallery.technet.microsoft.com/Exemplo-de-aplicaes-7dd7cbf1 Visual Studio 2015 https://gallery.technet.microsoft.com/Exemplos-de-aplicaes-9b6252c8
  • 7.
  • 8.
  • 9.
  • 10.  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.
  • 12.  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
  • 13.  Testes unitários são uma forma rápida e flexível de se validar classes e métodos → trata-se de uma proposta em conformidade com o conceito ágil  XP foi um dos primeiros métodos ágeis a incentivar o uso de testes unitários automatizados  Testes unitários foram a base para o surgimento da metodologia conhecida como TDD (Test-Driven Development)
  • 14.  Rapidez na execução  Implementados com facilidade, normalmente a partir de um framework pré-existente ◦ Alternativas na plataforma .NET:  Visual Studio Unit Testing Framework (MS Test)  NUnit (http://www.nunit.org/)  xUnit.net (https://github.com/xunit)  Automatizados e repetíveis  Possibilitam reuso em ações futuras
  • 15.  Testes unitários codificados antes mesmo da implementação das partes que serão submetidas a análises → evita-se assim a elaboração de testes “viciados”  Prioriza-se uma melhor organização do código, favorecendo práticas como separação de responsabilidades, alta coesão e baixo acoplamento
  • 16.  A implementação de uma funcionalidade segue um ciclo chamado Red-Green-Refactor (os testes unitários são executados em todos os estágios)
  • 17.  Cálculo do Fatorial – Casos de Teste:  Classe estática a ser implementada:  Estrutura esperada para a solução (Class Library + Unit Test Project):
  • 18.  Metodologia para desenvolvimento de softwares proposta por Dan North em 2006 (este especialista também criou o framework JBehave, primeira implementação de BDD voltada à plataforma Java)  Surgiu da experiência de North ministrando treinamentos sobre TDD, com o mesmo se deparando com a dificuldade de desenvolvedores em aplicar esta abordagem: ◦ Por onde começar com os testes unitários? ◦ O que testar ou não? ◦ Quando e quanto testar? ◦ Que nomenclatura utilizar nos testes? ◦ Por quais razões um teste falhou?
  • 19.  Foco errado na adoção de testes → verificar aspectos e pontos isolados de uma aplicação muitas vezes não é suficiente  Depender apenas de testes unitários não é garantia nenhuma de sucesso  É comum que surjam problemas durante a verificação da integração de diferentes partes de um sistema
  • 20.  Desenvolvedores experientes realizam testes enfatizando o comportamento das funcionalidades  Testes de aceitação → permitem a usuários finais simular operações cotidianas, analisando se as expectativas foram atendidas  Testes unitários como documentação → não são compreendidos por usuários de negócio (sem background técnico)
  • 21.  Metodologia baseada em user stories (histórias): ◦ Histórias descrevem os comportamentos esperados para funcionalidades ◦ Uso de uma linguagem ubíqua (em inglês “ubiquitous language”) → vocabulário comum baseado em elementos de negócio e dominado por todos os envolvidos no projeto ◦ Uma user story contém sentenças que seguem algumas regras de sintaxe de fácil compreensão ◦ Algumas sentenças representam cenários → simulações de comportamento em diferentes situações ◦ Frameworks permitem que as user stories sejam executadas como testes automatizados
  • 22.
  • 23.  Teste de aceitação → User story que serve de base para a implementação de uma funcionalidade e posterior validação da mesma
  • 24.  Melhor comunicação entre os profissionais envolvidos em um projeto → padronização através de uma linguagem comum  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 → desenvolvedores trabalham de forma mais direcionada  Instrumento de grande valia em equipes que seguem metodologias ágeis (como em Scrum, no qual também se empregam user stories)
  • 25.  O SpecFlow é talvez hoje a principal solução para a adoção das práticas de BDD em projetos no Visual Studio ◦ Site: http://www.specflow.org/ ◦ Baseado em um framework chamado Cucumber, o qual foi concebido inicialmente para a linguagem Ruby ◦ Empregado em conjunto com frameworks de testes unitários (MS Test, NUnit) ◦ Faz uso de um mecanismo conhecido como Gherkin  Parser que se baseia na utilização de uma linguagem estruturada  Sintaxe simples e não-técnica, capaz de ser entendida por pessoas da área de negócios  Possui suporte à internacionalização
  • 26.  Instalação de extensão para uso do SpecFlow → menu Tools
  • 27.  Extensão que integra o SpecFlow ao Visual Studio
  • 28.  Classe a ser criada:  Conversão de temperatura em graus Fahrenheit (F) para o equivalente nas escalas Celsius (C) e Kelvin (K):  Estrutura esperada para a solução (Class Library + Unit Test Project):
  • 29.  Adicionar o SpecFlow ao projeto de testes via NuGet:
  • 30.  Alterar o app.config do projeto de testes, de forma que a user story possa ser escrita em português (além de utilizar o framework MS Test):
  • 31.  Adicionar uma “Feature” ao projeto de testes:
  • 32.  Embora o conteúdo inicial do arquivo ConvTemperatura.feature esteja em inglês, o Visual Studio já exibirá como opções palavras-chaves em português:
  • 33.  A user story/especificação a ser criada deverá levar em conta os seguintes casos de teste:
  • 34.  A seguir está um possível conteúdo para a user story:
  • 35.  O próximo passo será a criação de uma classe baseada no template “SpecFlow Step Definition” → esta estrutura fará a conexão entre a user story e a classe ConversorTemperatura:
  • 36.  Em termos práticos, este novo arquivo conterá uma classe responsável por validar os diferentes cenários especificados anteriormente:
  • 37.  Expressões regulares serão utilizadas como “placeholders”, a fim de possibilitar a correta leitura dos parâmetros  Cada método definido em ConvTemperaturaStepDefinition corresponde ao mapeamento de uma sentença definida na user story (os atributos equivalem às palavras-chaves em inglês):
  • 38.  Uma possível implementação para ConvTemperaturaStepDefinition (utilizando a classe Assert do framework MS Test) seria:
  • 39.  É possível tanto a execução, quanto o “debug” de uma user story:
  • 40.  Num primeiro momento a execução da user story resultará em falhas em todos os cenários:
  • 41.  Regras para a implementação da classe ConversorTemperatura: C = (F – 32) / 1,8 K = C + 273,15
  • 42.  Uma possível implementação da classe ConversorTemperatura:
  • 43.  Uma nova execução da user story indicará então sucesso em todos os cenários:
  • 44.  Uma possível refatoração da classe ConversorTemperatura:
  • 45.  Após a refatoração:
  • 47.  Behavior Driven Development (BDD) com Specflow http://www.devmedia.com.br/behavior-driven-development-bdd- com-specflow/29405  Introducing BDD http://dannorth.net/introducing-bdd/  Testes Unitários no Visual Studio http://www.devmedia.com.br/testes-unitarios-no-visual-studio- 2012/27215  TDD - Test-Driven Development http://pt.slideshare.net/renatogroff1/tdd-renato-groffe