Fatto Consultoria Inteligência para o mercado de TI Visão prática do BDD (Behavior Driven Design) para agilizar o processo de desenvolvimento 1 Palestrante: Marcelo Nascimento Costa, MSc marcelo.costa@fattocs.com.br FATTO Consultoria e Sistemas - www.fattocs.com.br FATTO Consultoria e Siste
2 Minibio Consultor na área de qualidade de software, automação de testes, ALM/DevOps e gerência de projetos. Professor de graduação e pósgraduaçã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.
Agenda 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 FATTO Consultoria e Sistemas - www.fattocs.com.br 3
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
Foco no valor 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
6 Em outras palavras, o que é BDD? É 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
7 Funcionamento do BDD Definição dos Testes funcionais automatizados com base nos Exemplos Necessidade de implantação de uma funcionalidade do backlog Levantamento dos exemplos concretos como resultado esperado das User Stories Levantamento das User Stories com os Usuários e partes interessadas Descrição dos cenários de comportamento (features)
8 Levantamento das User Stories
Exemplo de uma implementação BDD (Notação Gherkin) 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 FATTO Consultoria e Sistemas - www.fattocs.com.br 9
10 Vantagens e Benefícios do BDD 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
Dúvidas comuns sobre BDD 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? FATTO Consultoria e Sistemas - www.fattocs.com.br 11
12 Interação entre BDD x TDD testes caixa-preta testes caixa-branca
13 Diferenças fundamentais do BDD x TDD TDD - Exercita o código vinculado a cada método do objeto. 10 Passou pelo tratamento de Exceções? 0 BDD - valida se o resultado apresentado pela UI está de acordo com o comportamento definidos nos exemplos na User Story. 10 Popup com a mensagem Erro: Divisão inválida? 0
14 Por onde eu começo? 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
Boas práticas para implementação do BDD FATTO Consultoria e Sistemas - www.fattocs.com.br 15 Envolvimento Testador nas User Stories Coach Arquitetura Ferramenta BDD User Stories seguindo padrão INVEST Entregar o BDD na Sprint
O que é Specflow? É 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) FATTO Consultoria e Sistemas - www.fattocs.com.br 16
Dinâmica do SpecFlow Orientação de Negócios Orientação Técnica Orientação de Negócios 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 FATTO Consultoria e Sistemas - www.fattocs.com.br Orientação Técnica 17
Arquitetura.Net de Execução com Continuous Delivery FATTO Consultoria e Sistemas - www.fattocs.com.br 18 1.Builds TFS Build 2.Runs Pacote Arquitetura SpecFlow Package 5. Outputs NUnit Package Selenium Package Teste Executável 3. Drives 4. Drives 5. Drives
19 Exemplo SpecFLow Cenário Válido
20 Exemplo SpecFLow Cenário Inválido
21 Código Exemplo
22 Verificação do Resultado
23 Conclusão 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