34
Behavior-Driven Development OU COMO CODIFICAR TESTES COM UMA LINGUAGEM AMIGÁVEL

Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Embed Size (px)

Citation preview

Page 1: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Behavior-Driven DevelopmentOU COMO CODIFICAR TESTES COM UMA LINGUAGEM AMIGÁVEL

Page 2: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Renato Groffe Microsoft Most Valuable Professional (MVP)

Microsoft Technical Audience Contributor (MTAC)

MCP, MCTS, OCA, ITIL, COBIT

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

Articulista e Palestrante

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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Agenda◦ Testes de software e sua importância

◦ Behavior-Driven Development

◦ Exemplo prático utilizando o framework SpecFlow

Page 4: Behavior-Driven Development (BDD) - QA Ninja Conf 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) - QA Ninja Conf 2016

Alguns tipos de testes◦ Teste de unidade

◦ Teste de integração

◦ Teste de sistema

◦ Teste de regressão

Page 6: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Software esperado x entregue

Page 7: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

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

Page 8: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Testes são realmente importantes?

Page 9: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Surgem as metodologias ágeis...

Page 11: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Test-Driven Development (Red-Green-Refactor)

Page 16: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Um exemplo (xUnit.net)

Page 17: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

E como superar tais dificuldades?

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

Page 19: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Estrutura de uma user story

Page 21: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

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

Page 22: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

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

os envolvidos no projeto)

Page 23: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Exemplo prático

Page 28: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Recursos Utilizados◦ Microsoft Visual Studio Community 2015 Update 3

◦ MS Test

◦ SpecFlow

Page 29: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 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: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Exemplo de uso do SpecFlow◦ User story:

Page 32: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

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

Page 33: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Dúvidas?

Page 34: Behavior-Driven Development (BDD) - QA Ninja Conf 2016

Obrigado!