behavior-driven development (bdd) - abril/2017

24
Behavior-Driven Development DESENVOLVIMENTO ORIENTADO A COMPORTAMENTO

Upload: renato-groff

Post on 12-Apr-2017

22 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Behavior-Driven Development (BDD) - Abril/2017

Behavior-Driven DevelopmentDESENVOLVIMENTO ORIENTADO A COMPORTAMENTO

Page 2: Behavior-Driven Development (BDD) - Abril/2017

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

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

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

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

Test-Driven Development (Red-Green-Refactor)

Page 7: Behavior-Driven Development (BDD) - Abril/2017

Um exemplo (xUnit.net)

Page 8: Behavior-Driven Development (BDD) - Abril/2017

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

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

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

Estrutura de uma user story

Page 12: Behavior-Driven Development (BDD) - Abril/2017

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

Behavior-Driven Development (BDD)◦ Ciclo de desenvolvimento muito semelhante àquele existente para TDD

Page 14: Behavior-Driven Development (BDD) - Abril/2017

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

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

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

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

Exemplo prático

Page 19: Behavior-Driven Development (BDD) - Abril/2017

Recursos Utilizados◦ Microsoft Visual Studio 2017

◦ MS Test

◦ SpecFlow

Page 20: Behavior-Driven Development (BDD) - Abril/2017

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

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

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

Dúvidas?

Page 24: Behavior-Driven Development (BDD) - Abril/2017

Obrigado!