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

ScrumRio 2023 - BDD - O que essa prática pode lhe ajudar com design de código

ScrumRio 2023 - BDD - O que essa prática pode lhe ajudar com design de código

BDD (behavior driven development) é uma prática da engenharia de software com foco em reduzir o problema de comunicação entre time técnico, time de negócios e cliente. Com BDD, gerarmos alinhamento entre todas as esferas e validamos o que realmente precisa ser desenvolvido, através da linguagem Gherkins. Mas muitos times de desenvolvimento não conseguem transcrever o texto em Gherkins para o código fonte e com isso a prática do BDD fica limitada a acordos de Product Owners e clientes. Nessa palestra pretendo mostrar o quanto aplicar BDD no código fonte pode tornar seu código mais coeso, simples e mais testável.

Wagner Voltz - Fusca

March 07, 2023
Tweet

More Decks by Wagner Voltz - Fusca

Other Decks in Programming

Transcript

  1. BDD | O que essa prática pode lhe ajudar com

    design de código Wagner Fusca
  2. 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 Definições
  3. Benefícios Documentação atualizada Conhecimento compartilhado (propriedade coletiva) Redução de desperdício

    e custo (software com menos bugs) Mudanças seguras e fáceis Lançamento de software mais rápido (a longo prazo)
  4. BDD requer alto envolvimento e colaboração do time de negócios

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

    software certo (eficácia) Conhecimento distribuído Entregar mais valor BDD
  6. Aslak Hellesoy, criador do Cucumber “Cucumber não é uma ferramenta

    de testar software. É uma ferramenta para testar o entendimento das pessoas em como um software (ainda a ser escrito) deve se comportar” https://news.ycombinator.com/item?id=10194242
  7. Wagner Fusca “BDD não é uma ferramenta de testar software.

    É uma prática para testar o entendimento das pessoas em como um software (ainda a ser escrito) deve se comportar. E BDD não é só Cucumber”
  8. “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
  9. YAGNI Simplicidade Arquitetura Simples Legibilidade de código Não aumenta a

    dívida técnica Tempos de execução de build e testes automatizados https://wagnerfusca.medium.com/o-que-precisa-ser-feito-%C3%A9-n%C3%A3o-fazer-este-c%C3%B3digo- 5faaceff7773
  10. BDD 1 ou mais “BDD” 1 ou mais TDD Código

    Código Testes Unitários BDD O que costuma ser Como deveria ser
  11. 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
  12. 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 Créditos - Elias Pereira - SGrio 2018 - https://www.youtube.com /watch?v=O_Fiotm X0R4
  13. Junte as pessoas (LOS 3 AMIGOS) Business – What problem

    are we trying to solve? Development – How might we build a solution to solve that problem? Testing – What about this, what could possibly happen? https://www.agilealliance.org/glossary/three-amigos/
  14. Critérios de aceitação (Dado) algum contexto (Quando) alguma ação é

    realizada (Então) um conjunto particular de consequências observáveis deve obter
  15. Extra - DDD Domain-Driven Design Voltado ao problema a ser

    resolvido (domain) Linguagem ubíqua
  16. 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