Behavior-Driven Development (BDD) - Abril/2017
-
Upload
renato-groff -
Category
Software
-
view
31 -
download
0
Transcript of Behavior-Driven Development (BDD) - Abril/2017
![Page 1: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/1.jpg)
Behavior-Driven DevelopmentDESENVOLVIMENTO ORIENTADO A COMPORTAMENTO
![Page 2: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/2.jpg)
Renato Groffe◦ Microsoft Most Valuable Professional (MVP)
◦ Multi-Plataform Technical Audience Contributor
◦ Mais de 15 anos de experiência na área de Tecnologia
◦ Articulista e Palestrante
![Page 3: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/3.jpg)
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◦ GitHub ---> https://github.com/renatogroffe
![Page 4: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/4.jpg)
Agenda◦ Test-Driven Development: uma visão geral
◦ Behavior-Driven Development
◦ Exemplo prático utilizando o framework SpecFlow
![Page 5: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/5.jpg)
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
![Page 6: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/6.jpg)
Test-Driven Development (Red-Green-Refactor)
![Page 7: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/7.jpg)
Um exemplo (xUnit.net)
![Page 8: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/8.jpg)
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
![Page 9: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/9.jpg)
E como superar tais dificuldades?
A abordagem conhecida como Behavior-Driven Development pode ser uma resposta a esta pergunta
![Page 10: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/10.jpg)
Behavior-Driven Development (BDD)◦ Metodologia de desenvolvimento proposta por Dan North em 2006
◦ User stories (histórias) descrevem o comportamento de features (funcionalidades)
![Page 11: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/11.jpg)
Estrutura de uma user story
![Page 12: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/12.jpg)
Behavior-Driven Development (BDD)◦ As histórias fazem uso de uma linguagem ubíqua (compreendida por todos
os envolvidos no projeto)
![Page 13: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/13.jpg)
Behavior-Driven Development (BDD)◦ Ciclo de desenvolvimento muito semelhante àquele existente para TDD
![Page 14: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/14.jpg)
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
![Page 15: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/15.jpg)
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
![Page 16: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/16.jpg)
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
![Page 17: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/17.jpg)
SpecFlow e outros frameworks◦ MS Test, Nunit, xUnit.net, Selenium, Moq e Nsubstitute são algumas das
opções possíveis...
MS Test
![Page 18: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/18.jpg)
Exemplo prático
![Page 19: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/19.jpg)
Recursos Utilizados◦ Microsoft Visual Studio 2017
◦ MS Test
◦ SpecFlow
![Page 20: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/20.jpg)
Exemplo de uso do SpecFlow◦ Funcionalidade para conversão de alturas em pés para o equivalente em
metros
◦ Classe a ser implementada:
◦ GitHub: https://github.com/renatogroffe/BDD_VS2017
![Page 21: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/21.jpg)
Exemplo de uso do SpecFlow◦ Casos de teste:
◦ Considerar 2 casas decimais para arredondamento da distância em metros
![Page 22: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/22.jpg)
Exemplo de uso do SpecFlow◦ Regras para a implementação da classe ConversorTemperatura:
C = (F – 32) / 1,8
K = C + 273,15
![Page 23: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/23.jpg)
Dúvidas?
![Page 24: Behavior-Driven Development (BDD) - Abril/2017](https://reader033.fdocuments.us/reader033/viewer/2022051707/58ee1e6d1a28aba9488b4629/html5/thumbnails/24.jpg)
Obrigado!