Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BDD - Behavior Driven Development - UEM - Secom...

BDD - Behavior Driven Development - UEM - Secomp 2022

Palestra/Workshop sobre BDD - Behavior Drive Development na Semana da Computação da Universidade Estadual de Maringá.

Realizado nos dias 06/10/2022 e 07/10/2022.

Projeto funcionando utilizando Cucumber, Java, JUnit5 e Maven: https://github.com/wagnerfusca/bdd-uem

Wagner Voltz - Fusca

October 07, 2022
Tweet

More Decks by Wagner Voltz - Fusca

Other Decks in Programming

Transcript

  1. Definições • Prática de engenharia de software (não é método

    ou metodologia) • Toda prática precisa de disciplina • A prática te leva a excelência técnica e te torna mais ágil Benefícios • Documentação atualizada • Conhecimento compartilhado (propriedade coletiva) • Redução de desperdício / Software com menos bugs • Redução de custo • Mudanças seguras e fáceis • Lançamento de software mais rápido (a longo prazo) Definições e benefícios
  2. BDD requer alto envolvimento e colaboração do time de negócios

    BDD só funciona com contexto ágil BDD não funciona quando existem silos BDD mal escritos podem levar a custos mais altos de manutenção Desvantagens
  3. O que resolve? Construir o software corretamente (eficiência) Construir o

    software certo (eficácia) Conhecimento distribuído Entregar mais valor BDD
  4. “O uso do BDD não requer ferramentas ou linguagens de

    programação específicas e é principalmente uma abordagem conceitual; torná-lo uma prática puramente técnica ou que dependa de ferramentas específicas seria perder completamente o ponto” Agile Alliance
  5. Como BDD é aplicado? - User Story - 3Cs -

    Cartão - conversa - confirmação - Critérios de aceitação - GIVEN – WHEN – THEN (Gherkins) - Prática de refinamento coletivo (los 3 amigos)
  6. Usar uma linguagem ubíqua - Gherkin Feature: short title As

    a (Como) ………… I want to (quero) ………… so that I can (para) ………… Scenario: …… Given (dado) When (quando) Then (então) Scenario: …… Given (dado) When (quando) Then (então) Passado (step) ou início/configuração Presente (step) ou ação Futuro (step) ou resultado
  7. What is Gherkin? Gherkin is a set of grammar rules

    that makes plain text structured enough for Cucumber to understand. Gherkin serves multiple purposes: • Unambiguous executable specification • Automated testing using Cucumber • Document how the system actually behaves
  8. Usar uma linguagem ubíqua - Gherkin Feature: Movimentar conta corrente

    As a (Como) um correntista bancário I want to (quero) transferir dinheiro pelo app so that I can (para) evitar de ir a uma agência Acceptance criteria Scenario: …… Given (dado) When (quando) Then (então)
  9. Usar uma linguagem ubíqua - Gherkin Feature: Movimentar conta corrente

    As a (Como) um correntista bancário I want to (quero) transferir dinheiro pelo app so that I can (para) evitar de ir a uma agência Acceptance criteria Scenario: Transferir dinheiro para uma conta poupança Given (dado) que eu tenho 1000,00 em minha conta corrente When (quando) transfiro 600,00 para minha conta poupança Then (então) ficarei com saldo de 400,00
  10. Cuidado com BDD e BDT (Behavior driven testing) BDT -

    mais técnico, orientado ao domínio, testa a parte técnica e não de negócio (por exemplo mobile) BDT - imperativo (descrevem como deveria ser o comportamento do cenário e não exatamente o que ele quer.) BDD - declarativo BDT BDD
  11. Criar o arquivo de step Criar arquivo .feature Criar arquivo

    de execução do Cucumber Criar source folder de test Adicionar as dependências O que faremos 30 Criar o projeto com Maven no Netbeans Aprender mais sobre BDD Criar relatórios Implementar código Java
  12. Usar uma linguagem ubíqua - Gherkin Feature: Movimentar conta corrente

    As a (Como) um correntista bancário I want to (quero) transferir dinheiro pelo app so that I can (para) evitar de ir a uma agência Acceptance criteria Scenario: Transferir dinheiro para uma conta poupança Given (dado) que eu tenho 1000,00 em minha conta corrente When (quando) transfiro 600,00 para minha conta poupança Then (então) ficarei com saldo de 400,00
  13. SÃO PAULO | SP Rua Peixoto Gomide, 996 6º andar

    | Cerqueira César CEP: 01409-000 +55 11 3176-8100 CURITIBA | PR Av. João Gualberto, 1740 9º andar | Juvevê CEP: 80030-001 +55 41 3122-9100 MARINGÁ | PR Av. Horácio Raccanelo Filho, 5355 Sala 1 | Zona 7 CEP: 87020-035 +55 44 3032-9150 CHICAGO | IL | USA 222 Merchandise Mart Plaza Suite 1225 | Chicago | Illinois 60654 +1 312 885-7619