bdd (behavior-driven development) - gdg-sp - julho/2016

34
Behavior-Driven Development DESENVOLVIMENTO ORIENTADO A COMPORTAMENTO

Upload: renato-groff

Post on 10-Jan-2017

364 views

Category:

Software


3 download

TRANSCRIPT

Page 1: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Behavior-Driven DevelopmentDESENVOLVIMENTO ORIENTADO A COMPORTAMENTO

Page 2: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Renato Groffe Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT

Mais de 15 anos de experiência na área de Tecnologia

Articulista e Palestrante (Devmedia, .NET Magazine,

Canal .NET, .NET Coders, TechNet Wiki)

Contatos◦ Facebook: https://www.facebook.com/renatogroff◦ Site: http://renatogroffe.net/◦ Canal .NET: https://www.facebook.com/canaldotnet◦ LinkedIn: http://br.linkedin.com/in/renatogroffe

Page 3: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Agenda◦ Testes de software e sua importância

◦ Behavior-Driven Development

◦ Exemplo prático utilizando o framework SpecFlow

Page 4: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Por que testar um software?◦ Garantir que o projeto atende às especificações

◦ Detectar falhas e defeitos antes da subida para produção

Page 5: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Alguns tipos de testes◦ Teste de unidade

◦ Teste de integração

◦ Teste de sistema

◦ Teste de aceitação

◦ Teste de regressão

Page 6: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Software esperado x entregue

Page 7: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

A área de software atualmente (ainda...)

Page 8: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Testes são realmente importantes?

Page 9: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Cenários comuns – área de software◦ Pressões por rápida entrega

◦ Prazos muito curtos

◦ Equipes reduzidas

◦ Mudanças frequentes em requisitos

◦ Áreas de Negócio e Técnica não falam mesma língua

◦ Testes não são levados tão a sério como se deveria

Page 10: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Surgem as metodologias ágeis...

Page 11: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Metodologias ágeis◦ Conciliar tempo reduzido com mudanças frequentes ao longo do projeto

◦ Busca de equilíbrio entre qualidade e produtividade

◦ Melhoria na comunicação entre os envolvidos em um projeto

◦ XP (Extreme Programming) e Scrum são os exemplos mais famosos

Page 12: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Metodologias ágeis e testes de unidade◦ Testes de unidade são uma forma rápida e flexível de se validar

classes e métodos

◦ XP foi pioneiro na adoção desta prática

◦ Foram a base para o surgimento de TDD (Test-Driven Development)

Page 13: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Testes de unidade bem definidos◦ Rapidez na execução

◦ Implementados com facilidade, a partir de um framework pré-existente

◦ Automatizados e repetíveis

◦ Possibilitam reuso em ações futuras

Page 14: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

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 15: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Test-Driven Development (Red-Green-Refactor)

Page 16: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Um exemplo (xUnit.net)

Page 17: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

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 18: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

E como superar tais dificuldades?

A abordagem conhecida como Behavior-Driven Development pode ser uma resposta a esta pergunta

Page 19: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Behavior-Driven Development (BDD)◦ Metodologia de desenvolvimento proposta por Dan North em 2006

◦ User stories (histórias) descrevem o comportamento de features (funcionalidades)

Page 20: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Estrutura de uma user story

Page 21: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

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

Page 22: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Behavior-Driven Development (BDD)◦ As histórias fazem uso de uma linguagem ubíqua (compreendida por todos

os envolvidos no projeto)

Page 23: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

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 24: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

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 25: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

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 26: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

SpecFlow e outros frameworks◦ MS Test, Nunit, xUnit.net, Selenium, Moq e Nsubstitute são algumas das

opções possíveis...

MS Test

Page 27: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Exemplo prático

Page 28: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Recursos Utilizados◦ Microsoft Visual Studio Community 2015 Update 3

◦ MS Test

◦ SpecFlow

Page 29: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Exemplo de uso do SpecFlow◦ Funcionalidade para conversão de alturas em pés para o equivalente em

metros

◦ Classe a ser implementada:

Page 30: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Exemplo de uso do SpecFlow◦ Fórmula a ser considerada:

◦ Casos de teste:

◦ Considerar 4 casas decimais para arredondamento da distância em metros

Distância em m = Pés * 0,3048

Page 31: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Exemplo de uso do SpecFlow◦ User story:

Page 32: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Fontes:https://github.com/renatogroffe/ExemploBDD_GDGSP

Page 33: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Dúvidas?

Page 34: BDD (Behavior-Driven Development) - GDG-SP - Julho/2016

Obrigado!