SlideShare uma empresa Scribd logo
1 de 48
Renato Groffe
Maio/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 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:
https://gallery.technet.microsoft.com/Exemplo-de-aplicaes-7dd7cbf1
 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!!!

Mais conteúdo relacionado

Mais procurados

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentElias Nogueira
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsIosif Itkin
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Elias Nogueira
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de SoftwareRafael Berto
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de SoftwareCloves da Rocha
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaFrederico Augusto Do Carmo Moreira
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareCamilo Almendra
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDDKnoldus Inc.
 
Manual Testing Material by Durgasoft
Manual Testing Material by DurgasoftManual Testing Material by Durgasoft
Manual Testing Material by DurgasoftDurga Prasad
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução Elaine Cecília Gatto
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de softwareEdgardo Rojas
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentLiz Keogh
 

Mais procurados (20)

Exemplo de Plano de testes
Exemplo de Plano de testes Exemplo de Plano de testes
Exemplo de Plano de testes
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Carreira de QA
Carreira de QA Carreira de QA
Carreira de QA
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Cons
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de Software
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de Software
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDD
 
Manual Testing Material by Durgasoft
Manual Testing Material by DurgasoftManual Testing Material by Durgasoft
Manual Testing Material by Durgasoft
 
Ciclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemasCiclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemas
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de software
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 

Destaque

Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDDIsmael
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...Rafael Chiavegatto
 
Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)Eron Rodrigues Alves
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
Testes automatizados (2)
Testes automatizados (2)Testes automatizados (2)
Testes automatizados (2)cesarvianna
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012Igor Abade
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Vanderson Silva
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Ajay Danait
 
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016GUTS-RS
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationJohn Ferguson Smart Limited
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testingdversaci
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 

Destaque (18)

Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDD
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
 
Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)
 
BDD
BDDBDD
BDD
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehave
 
BDD - aula
BDD - aulaBDD - aula
BDD - aula
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Testes automatizados (2)
Testes automatizados (2)Testes automatizados (2)
Testes automatizados (2)
 
BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
BDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + JavaBDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + Java
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
 
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Tendências de Teste de Software para 2016
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 

Semelhante a BDD (Behavior-Driven Development)

BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato 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 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
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Renato Groff
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Renato 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
 
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
 
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
 
Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Renato Groff
 
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
 
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
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato 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
 

Semelhante a BDD (Behavior-Driven Development) (20)

BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
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 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
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
 
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...
 
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
 
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
 
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
 
Mocking Test
Mocking TestMocking Test
Mocking Test
 
Mocking Test - Outubro/2015
Mocking Test - Outubro/2015Mocking Test - Outubro/2015
Mocking Test - Outubro/2015
 
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
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017
 
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
 
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
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 
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
 

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 (Behavior-Driven Development)

  • 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 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: https://gallery.technet.microsoft.com/Exemplo-de-aplicaes-7dd7cbf1
  • 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