Top Banner
Behavior-Driven Development ou como codificar testes com uma linguagem amigável Renato Groffe Software Engineer, MTAC | Aon TRILHA | MELHORIA CONTÍNUA @RenatoGroff | http://renatogroffe.net/
21

Behavior-Driven Development (BDD) - DevOps Summit 2016

Apr 15, 2017

Download

Software

Renato Groff
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Behavior-Driven Development (BDD) - DevOps Summit 2016

Behavior-Driven Development ou como codificar testes com uma linguagem amigável

Renato GroffeSoftware Engineer, MTAC | Aon

TRILHA | MELHORIA CONTÍNUA

@RenatoGroff | http://renatogroffe.net/

Page 2: Behavior-Driven Development (BDD) - DevOps Summit 2016

Agenda• Uma visão geral sobre testes de software

• Behavior-Driven Development

• Exemplo prático utilizando o framework SpecFlow

Page 3: Behavior-Driven Development (BDD) - DevOps Summit 2016

Link para acesso aos slides e fontes:

http://bit.ly/bdd-devops-summit-2016

Page 4: Behavior-Driven Development (BDD) - DevOps Summit 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: Behavior-Driven Development (BDD) - DevOps Summit 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: Behavior-Driven Development (BDD) - DevOps Summit 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 7: Behavior-Driven Development (BDD) - DevOps Summit 2016

Test-Driven Development (Red-Green-Refactor)

Page 8: Behavior-Driven Development (BDD) - DevOps Summit 2016

Um exemplo de teste de unidade (xUnit.net)

Page 9: Behavior-Driven Development (BDD) - DevOps Summit 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 10: Behavior-Driven Development (BDD) - DevOps Summit 2016

E como superar tais dificuldades?

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

Page 11: Behavior-Driven Development (BDD) - DevOps Summit 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 12: Behavior-Driven Development (BDD) - DevOps Summit 2016

Estrutura de uma user story

Page 13: Behavior-Driven Development (BDD) - DevOps Summit 2016

Behavior-Driven Development (BDD)• Ciclo de desenvolvimento muito semelhante àquele existente

para TDD

Page 14: Behavior-Driven Development (BDD) - DevOps Summit 2016

Behavior-Driven Development (BDD)• As histórias fazem uso de uma linguagem ubíqua

(compreendida por todos os envolvidos no projeto)

Especialistasde Negócio

Especialistas Técnicos

Linguagemubíqua

Page 15: Behavior-Driven Development (BDD) - DevOps Summit 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 16: Behavior-Driven Development (BDD) - DevOps Summit 2016

BDD e a plataforma .NET• A opção mais utilizada na atualidade é o framework gratuito

SpecFlowhttp://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) - DevOps Summit 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 18: Behavior-Driven Development (BDD) - DevOps Summit 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 19: Behavior-Driven Development (BDD) - DevOps Summit 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 20: Behavior-Driven Development (BDD) - DevOps Summit 2016

Exemplo de uso do SpecFlow• User story:

Page 21: Behavior-Driven Development (BDD) - DevOps Summit 2016