23
© FATTO Consultoria e Sistemas - www.fattoCS.com.br 1 © FATTO Consultoria e Siste Fatto Consultoria Inteligência para o mercado de TI Visão prática do BDD (Behavior Driven Design) para agilizar o processo de desenvolvimento Palestrante: Marcelo Nascimento Costa, MSc [email protected]

Visão prática do BDD (Behavior Driven Design) para ...fattocs.com/files/pt/apresentacoes/20170816-BDD-Specflow-Marcelo.pdf · Implementar a definição de User Stories como detalhamento

  • Upload
    dokiet

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

•1

•© FATTO Consultoria e Sistemas – www.fattocs.com

Fatto Consultoria

Inteligência para o mercado de TI

Visão prática do BDD (Behavior Driven Design) para agilizar o processo de desenvolvimento

Palestrante: Marcelo Nascimento Costa, MSc

[email protected]

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

“Consultor na área de qualidade de software, automação de testes, ALM/DevOps e gerência de projetos. Professor de graduação e pós-graduação na Universidade Veiga de Almeida. Ministra palestras e webinars em assuntos relativos a automação do desenvolvimento, testes e no aceite de software. Experiência de participação em projetos de consultoria, desenvolvimento de software e implantação de processos em empresas como a Accenture, Ipiranga, Globosat, Oi Móvel e Oi Fixa, Banco BBM, Telefonica-SP, Vivo, Banco Modal e Brasil Telecom. Atuou como empreendedor com diversos treinamentos ministrados, consultoria e projetos desenvolvidos para as plataformas Web e Móvel em grandes empresas, como Unigranrio, Laboratório Servier, Dataprev, Petrobrás e Marinha. Atuou como líder de projetos e administrador de banco de dados no startup de diversas empresas de telecomunicações, como a Telemar e a Embratel e na implantação da arquitetura do Sistema de Pagamento Brasileiro (SPB) no Banco Central.”

Minibio

•2

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Definição de BDD

Como funciona o BDD

Vantagens

Dúvidas comuns

Diferenças entre BDD e TDD

Boas práticas

Specflow como ferramenta de BDD

Exemplo do Specflow

Agenda

•3

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

BDD - Definição

“Behavior-driven development é sobre

implementar uma aplicação através da

descrição de seu comportamento pela

perspectiva de seus stakeholders”

-- Dan North

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Criar software que importa!

Tem valor de negócio

tangível

Entregue incrementalmente

Fácil de manter e gerenciar

Fácil de entender e

comunicar

Foco no valor

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

É um conjunto de práticas ágeis para agilizar o desenvolvimento de software através da integração das User Stories definidas para o software com a automação dos testes funcionais do software desenvolvido

O BDD é uma evolução feita a partir da implantação de técnicas TDD (Test Driven Development)

O BDD não é uma metodologia de desenvolvimento de software, porém incorpora e melhora as ideias de muitas dessas metodologias

Em outras palavras, o que é BDD?

•6

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Funcionamento do BDD

•7

Necessidade de implantação de

uma funcionalidade

do backlog

Levantamento das User Stories com os Usuários

e partes interessadas

Descrição dos cenários de

comportamento (features)

Levantamento dos exemplos

concretos como resultado

esperado das User Stories

Definição dos Testes

funcionais automatizados com base nos

Exemplos

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Levantamento das User Stories

•8

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Scenario: Transferir dinheiro para uma conta poupança

GIVEN a conta de numero <numero> com o limite <limite> e saldo <saldo>

WHEN o dono realiza o deposito no valor de <deposito> na conta

AND o dono realiza o primeiro saque no valor de <primeiro_saque> na conta

AND o dono realiza o segundo saque no valor de <segundo_saque> na conta

THEN o dono tem o saldo no valor de <saldo_esperado> na conta

Exemplos:

| numero | limite | saldo | deposito | primeiro_saque | segundo_saque | saldo_esperado |

| 111 | 1000 | 0 | 100 | 10 | 10 | 80 |

| 222 | 1000 | 0 | 200 | 10 | 10 | 180 |

Exemplo de uma implementação BDD (Notação Gherkin)

•9

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

BDD oferece um nível de entendimento comum entre especialistas de domínio, product owners, desenvolvedores e testadores.

Agilizar o processo diminuindo o gap entre os requisitos/User Stories e a automação dos testes de aceitação do usuário

A notação simples utilizada pelo BDD – Given-Then-When – para os testes de aceitação são próximas do entendimento dos envolvidos no projeto

Garante a regressão das funcionalidades após a re-execução de todos os testes de aceitação.

Acelera a criação dos testes com a geração automática dos passos do código de testes a partir dos cenários descritos

Vantagens e Benefícios do BDD

•10

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

A grande confusão nos clientes no mercado se refere a mistura dos conceitos entre TDD e BDD.

Perguntas comuns no mercado?

– Eu fiz um TDD com uma cobertura de 90%, eu ainda preciso do BDD?

– O TDD não testa todo o código?

– Eu tenho User Stories bem detalhadas com uma quantidade expressiva de exemplos, faz-se necessário o TDD?

– Onde começa o TDD e onde termina o BDD?

– Enquanto eu faço o TDD, eu não posso executar tarefas de BDD?

– Eu comecei a desenvolver as features do BDD, depois comecei a desenvolver o código de testes do TDD, então tenho que parar as tarefas do BDD?

Dúvidas comuns sobre BDD

•11

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Interação entre BDD x TDD

•12

testes caixa-branca

testes caixa-preta

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

TDD - Exercita o código vinculado a cada método do objeto.

BDD - valida se o resultado apresentado pela UI está de acordo

com o comportamento definidos nos exemplos na User Story.

Diferenças fundamentais do BDD x TDD

•13

10

0

Passou pelo tratamento de Exceções?

10

0

Popup com a mensagem “Erro: Divisão inválida”?

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Implementar a definição de User Stories como detalhamento de requisitos

Envolver o usuário na definição dos exemplos concretos para os testes

Pontuar a User Story contemplando a definição dos testes de aceitação para servir como base para a execução dos testes no BDD

Implementar uma arquitetura com a ferramenta de BDD (Specflow/Cucumber/Jbehave) executando em diversas plataformas

Pontuar as tarefas de manutenção para contemplar a manutenção dos cenários implementados na ferramenta de BDD

Por onde eu começo?

•14

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Boas práticas para implementação do BDD

•15

Envolvimento Testador nas User Stories

User Stories seguindo padrão INVEST

Coach Arquitetura Ferramenta

BDD

Entregar o BDD na Sprint

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

É uma ferramenta Opensource integrada ao ecossistema .Net que gera e executa testes definidos a partir do padrão Given-When-Then

É totalmente integrado ao ambiente Visual Studio contemplando templates de projetos que podem ser instanciados no próprio Visual Studio.

Suporta frameworks de testes como MSTest e Nunit (2 e 3)

Utiliza como notação de execução de testes o WebDriver do Selenium, largamente conhecido no mercado.

Após a configuração correta, consegue executar multibrowsers (Chrome, IE e Firefox)

O que é Specflow?

•16

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Definição das Features

Definição dos

Scenarios

Definição dos Steps

Código de implantação dos Steps

Biblioteca de Automação

de IU

Execução dos

Scenarios

Analisar os defeitos

gerados pela execução

dos Scenarios

Corrigir o código de produção

para resolução de

defeitos

Dinâmica do SpecFlow

•17

Orientação de Negócios

Orientação Técnica

Orientação de Negócios Orientação

Técnica

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Arquitetura .Net de Execução com Continuous Delivery

•18

Pacote Arquitetura

1.Builds 2.Runs

5. Drives

3. Drives

4. Drives

TFS Build

SpecFlow Package

NUnit Package

Selenium Package

Teste Executável

5. Outputs

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Exemplo SpecFLow – Cenário Válido

•19

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Exemplo SpecFLow – Cenário Inválido

•20

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Código Exemplo

•21

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

Verificação do Resultado

•22

•© FATTO Consultoria e Sistemas - www.fattoCS.com.br

O BDD é uma realidade no mercado e possui um ferramental forte

A execução dos testes automatizados na visão funcional através do BDD e da visão técnica através do TDD fornecem um potencial para melhorar a qualidade do software entregue seguindo as principais premissas ágeis.

Tem que haver um investimento em tempo e recursos devido a curva de aprendizado para os primeiros projetos utilizando BDD.

O ideal é ter papeis diferentes para a criação dos testes TDD e outro para criação dos testes BDD

Conclusão

•23