BEHAVIOR DRIVEN DEVELOPMENT BRUNO ROLIM MANSUR
AGENDA Motivação Processo Tradicional Processo BDD Fazer certo o certo Ciclo BDD Ferramentas Exemplo - Vídeo Rspec Vantagens e Desvantagens Referências
MOTIVAÇÃO Em 2012, a Força Aérea EUA decidiu abandonar um grande projeto de software que já havia custado mais de US $ 1 bilhão de dólares. O Sistema de Apoio a combate expedicionário foi projetado para modernizar e simplificar o gerenciamento da cadeia de abastecimento, a fim de economizar bilhões de dólares e conhecer novos requisitos legislativos. A edição do Relatório anual CHAOS do Standish Group 2011 encontrou que 42% dos projetos foram entregues com atraso, excedeu o orçamento, ou não conseguiram entregar todas as funcionalidades requeridas, e 21% dos projetos foram totalmente cancelados.
MOTIVAÇÃO E se não tivesse que ser dessa maneira? E se pudéssemos escrever software de uma forma que nos deixaria descobrir e concentrar os nossos esforços no que realmente importa? E se pudéssemos objetivamente aprender quais recursos realmente vai beneficiar a organização e a forma mais custo-efetiva para implementá-las? E se pudéssemos ver além do que o usuário solicita e construir o que o usuário realmente precisa?
MOTIVAÇÃO BDD ajuda as equipes a concentrar os seus esforços na identificação, compreensão e construção de recursos valiosos que são importantes para as empresas e assegura que estes recursos são bem concebidos e bem implementados. Como?
Processo tradicional
Processo tradicional Existem muitas oportunidades para alguma informação se perder na tradução, ser mal compreendida, ou apenas ser ignorada. As chances são de que o novo módulo em si não pode fazer exatamente o que era necessário e que a documentação não irá refletir os requisitos iniciais que o Usuário deu para o analista.
Processo BDD
Processo BDD Em comparação com o cenário anterior a equipe faz uso de conversas e exemplos para reduzir a quantidade de informação perdida na tradução. Cada estágio além da etapa 2 começa com as especificações de comportamento, que são baseados em exemplos concretos fornecidos pelo usuário. Desta forma, uma grande parte da ambiguidade em traduzir os requisitos iniciais do cliente em código, relatórios e documentação é removido.
Fazer certo o certo As maiores causas de falha em projetos de Software: Não desenvolver o software certo; Ou não desenvolver certo o software;
Evolução do TDD BDD foi originalmente inventado por Dan North no início e meados da década de 2000 como uma maneira mais fácil de ensinar e praticar Test- Driven Development (TDD). TDD, inventado por Kent Beck nos primeiros dias de Agile, é uma técnica extremamente eficaz que utiliza testes de unidade para especificar, projetar e verificar o código do aplicativo.
Evolução do TDD Apesar de suas vantagens, muitas equipes ainda têm dificuldade em adotar e utilizar TDD efetivamente. Os desenvolvedores muitas vezes têm dificuldade em saber por onde começar ou quais testes eles devem escrever a seguir. Às vezes TDD pode levar desenvolvedores para tornarem-se demasiado focados no detalhe, perdendo o quadro mais amplo dos objetivos de negócio que supostamente deveriam implementar. Algumas equipes também acham que o grande número de testes de unidade podem se tornar difícil de manter como a evolução do projeto.
Evolução do TDD O objetivo de criar o BDD é utilizar o conceito de linguagem ubíqua (DDD) para que analistas de negócios possam definir os requisitos de forma inequívoca, e que ests requisitos possam ser facilmente transformados em testes de aceitação automatizados. Exemplo: Dado um cliente tem uma conta corrente Quando o cliente transfere fundos a partir desta conta para uma conta no exterior Em seguida, os fundos devem ser depositados na conta no exterior E a taxa de transação deve ser deduzido da conta corrente Legenda: Vermelho: Descrição do Cenário Azul: Comportamento
Ferramentas Existem várias ferramentas que implementam BDD no nível da unidade de código. Eis algumas das principais:
Vantagens e Desvantagens Vantagens Desvantagens Reduz desperdício; Reduz o custo; Alterações mais fáceis e mais seguras; Entregas mais ágeis; Requer alto nível de engajamento e colaboração da equipe de negócio envolvida; BDD trabalha melhor em um contexto Ágil ou Interativo;
RSpec (Vídeo Youtube)
REFERÊNCIAS RSpec Tutorial (Level 1) https://www.youtube.com/watch?v=dj19o9klk6w Testing with RSpec https://www.codeschool.com/courses/testing-with-rspec Desenvolvimento orientado por comportamento (BDD) - Artigo Java Magazine 91 http://www.devmedia.com.br/desenvolvimento-orientado-por-comportamento-bdd-artigo-java-magazine-91/21127 Behavior Driven Development https://pt.wikipedia.org/wiki/behavior_driven_development Outside in software development https://en.wikipedia.org/wiki/outside%e2%80%93in_software_development BDD in Action: Behavior-Driven Development for the whole software lifecycle ISBN-10: 1-61729-165-X Dan North, Introducing BDD, http://dannorth.net/introducing-bdd/. 10 Kent Beck, Test-Driven Development: By Example (Addison-Wesley Professional, 2002).