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

renatogroff1 673 views 34 slides Oct 26, 2016
Slide 1
Slide 1 of 34
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34

About This Presentation

Slides de apresentação realizada no dia 24/10/2016 durante o evento QA Ninja Conf 2016.

Tópicos abordados:
- Testes de software e sua importância
- Behavior-Driven Development
- Exemplo prático utilizando o Visual Studio 2015 e o framework SpecFlow


Slide Content

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

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

Agenda Testes de software e sua importância Behavior-Driven Development Exemplo prático utilizando o framework SpecFlow

Por que testar um software? Garantir que o projeto atende às especificações Detectar falhas e defeitos antes da subida para produção

Alguns tipos de testes Teste de unidade Teste de integração Teste de sistema Teste de regressão

Software esperado x entregue

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

Testes são realmente importantes?

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

Surgem as metodologias ágeis...

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

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 )

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

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

Test- Driven Development ( Red -Green- Refactor )

Um exemplo (xUnit.net)

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

E como superar tais dificuldades? A abordagem conhecida como Behavior-Driven Development pode ser uma resposta a esta pergunta

Behavior-Driven Development (BDD) Metodologia de desenvolvimento proposta por Dan North em 2006 User stories (histórias) descrevem o comportamento de features (funcionalidades)

Estrutura de uma user story

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

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

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

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

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

SpecFlow e outros frameworks MS Test, Nunit , xUnit.net, Selenium , Moq e Nsubstitute são algumas das opções possíveis... M S Test

Exemplo prático

Recursos Utilizados Microsoft Visual Studio Community 2015 Update 3 MS Test SpecFlow

Exemplo de uso do SpecFlow Funcionalidade para conversão de alturas em pés para o equivalente em metros Classe a ser implementada:

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

Exemplo de uso do SpecFlow User story :

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

Dúvidas ?

Obrigado!