testes automatizados e especificação por exemplo - unindo ti e negócio através do bdd

44
Testes automatizados e especificação por exemplo Unindo TI e negócio através do BDD

Upload: bruno-bemfica

Post on 22-Jul-2015

310 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Testes automatizados e especificação por exemplo

Unindo TI e negócio através do BDD

Page 2: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Quem sou eu?

• Bruno “Codeman” Bemfica

• Trabalho com TI há 12 anos.

• CEO/Fundador da Sonne Tech

• Membro fundador do PyTchê

• Já passei por empresas como Groupon, PeixeUrbano e Grupo Pão de Açúcar

• Desenvolvo em Python, C# e no que mais der natelha (desde que não seja PHP)

• Gosto muito de felinos

Page 3: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Um pouco de história

• Até a década de 90, modelos dominantes:

– PMI + Waterfall (1970 – Winston Royce)

– RUP (Rational)

– XGH (eXtreme Go Horse )

Page 4: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Um pouco de história

Waterfall RUP

Page 5: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Estatísticas de projetos de software(fonte: Gartner Group)

Page 6: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD
Page 7: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Causas dos problemas

• Desenvolver software é fácil como caminharsobre a água

• Toda a documentação do projeto costuma serfeita no começo

• Orçamentos fechados dependem de estimativas precisas

• Estimativas dependem de critérios bemdefinidos

Page 8: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Causas dos problemas

• “Uma estimativa é um palpite. Não hácomprometimento implicado. Nenhumapromessa foi feita. Perder uma estimativanão é desonra de forma alguma. O motivopelo qual fazemos estimativas é por que nãosabemos quanto tempo algo levará.”MARTIN, Robert C. - O Codificador limpo.

Page 9: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Causas dos problemas

• Mudança de requisitos == Mudança de prazos

• Falta de contato com o cliente == Dúvidas

• Mudanças de requisitos + falta de contatocom cliente == retrabalho

• Adição de novos recursos ao projeto

Page 10: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Frequência de uso das funcionalidades de um software(Fonte: Standish Group)

Page 11: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Consequências dos problemas

• Retrabalhoˆ3

• Ciclos de desenvolvimento cada vez maiores

• Pressão por entrega:

– Código ruim e POG

– Impossibilidade de refactoring

– Poucos ou nenhum teste

Page 12: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Enquanto isso, no desenvolvimento…

Page 13: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD
Page 14: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Resultado

Page 15: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Enquanto isso, no desenvolvimento…

Page 16: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

PMI/Waterfall e RUP

• RUP é um modelo atrasado de desenvolvimento de software que não cabemais no cenário atual

• Waterfall é inútil e PMI é um excelentemétodo de gestão… Para qualquer coisa quenão seja software.

Page 17: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Como mostramos ao cliente

Page 18: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Como é de verdade

Page 19: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Problemas chave

• Metodologias ineficientes de gestão

• Problemas de comunicação business – devs

• Más práticas de código derivadas dos problemas anteriores

Page 20: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Uma luz no fim do túnel

Page 21: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Manifesto ágil

• Criado em 2001, com 17 signatários

• Processos adaptativos

• Prioriza entregas e não documentações

• Prioriza colaborações

• Responde rápido a mudanças (ciclos curtos)

• Gerou N variações (XP, Scrum, FDD, ASD, etc)

• Preza por boas práticas de programação

Page 22: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD
Page 23: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD
Page 24: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Kanban

Page 25: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD
Page 26: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

TDD

• “Criado” por Kent Beck em 2003

• Código que testa código

• Diminui (mas não exclui) testes manuais

• Uso de stubs e mocks facilita o foco no queinteressa

Page 27: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Testes automatizados e TDD

Page 28: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

STOP!

Page 29: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Vantagens do TDD

• Reduz intervalo entre inserção e correção de bug

• Reduz tempo gasto em debugging

• Induz ao refactoring de código

• Força a uma melhor escrita de código e arquitetura

Page 30: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Desvantagens do TDD

• Difícil de vender

• Difícil de começar a usar (mudar o pensamento)

• Atingir o estado da arte leva tempo

• Não testa regra de negócio x especificação

Page 31: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Problemas anteriores

• Gestão engessada e focada em papel, não eminterações e pessoas: √

• Código ruim, oriundo de pressa e impossibilidade de melhorias em virtude de pressão externa:√

• Comunicação entre a equipe: ?

Page 32: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Especificação por exemplo/BDD

• Criado também em 2003, por Dan North, como uma“resposta” ao TDD

• Foco maior em negócio do que o TDD

• Utiliza linguagem ubíqua para que programadores e humanos se entendam

• Testes (d)escritos pela equipe de negócios

• Foco em entrada de usuários (ex: telas) e no que realmenteé importante a quem usa o sistema (princípio YAGNI)

Page 33: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Problemas em se mudar o jeito de fazer software

• Pessoas não gostam de mudanças

• Mudanças levam tempo

• Mudanças tem custos, muitas vezes bem alto$

• No mundo corporativo, ninguém tem amigos

Page 34: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Histórias de usuários

• Eu, enquanto <papel no sistema>, preciso<objetivo>. Para tal, devo <funcionalidade>

• Pilar fundamental: Critérios de aceitação

Page 35: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Exemplo

• Funcionalidade: Eu, enquanto analista de crédito, preciso checar se um cliente está com o nome limpo antes de liberar um empréstimo. Para tal, preciso inserir que o sistema me avise sobre a situaçãofinanceira do cliente ao digitar o CPF dele no cadastro

• Cenário: Cliente com nome limpo– Dado um cliente com CPF 789.456.123-00– Quando o CPF dele não estiver na lista do SPC ou Serasa– Então o sistema deve liberar a aprovação de crédito

• Cenário: Cliente com nome sujo– Dado um cliente com CPF 123.456.789-00– Quando o CPF dele estiver na lista do SPC ou Serasa– Então o sistema deve me avisar e impedir a aprovação de crédito

Page 36: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

STOP!

Page 37: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Ganhos

• Testes de funcionalidade, requisitos funcionais e especificação se tornam a mesma coisa.

• Documentação centralizada junto ao projeto, tornam-se uma coisa só

• Documentação direta e reta, sem rodeios

• Documentação é sempre atualizada junto ao projeto

• Velocidade de entrega aumenta

Page 38: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Dicas para iniciar o processo

• Evite o nome “ágil/agile”

• Comece automatizando os testes exploratórios/funcionais (ensine Selenium aostesters)

• Tenha em mente que a queda de produtividade nos primeiros meses écompletamente normal

Page 39: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Dicas para iniciar o processo

• Derivar o escopo dos objetivos

• Olhar o micro, sem esquecer o macro

• Especificação deve ser colaborativa (PO + equipe)

• Validar frequentemente e automatizar a especificação(documentação viva)

• Comece pelas telas (entrada de usuário – YAGNI)

• Certifique-se de ter apoio da gestão

Page 40: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Dicas para lidar com pessoas reativas

• Comece implementando uma prática que aumente a qualidade e ganhe tempo

• Cuidado para não se queimar por desorganizaçãoalheia

• Venda o processo como algo que diminui o TTM

• Cuidado com os bumerangues

• Agile tem documentação sim

Page 41: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Filosofia de vida

“Qualidade é sobre estar tão preparado para o comum que quando o incomum aparece, temos

tempo para atacá-lo” – ADZIK, Gojko

“Não existe problema técnico. Todos osproblemas são de natureza humana” –

WEISSMANN, Henrique Lobo (www.itexto.com.br)

Page 42: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Obrigado!

• Twitter: @ubuntroll

• Site: www.brunobemfica.net

• Email: [email protected]

• PS: Não usem PHP!

Page 43: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Perguntas? Comentários? Xingamentos?

• Ligue para o nosso sac: 0800-BDD

• Código mostrado na palestra: https://github.com/BrunoCodeman/PalestraTestes

Page 44: Testes Automatizados e Especificação Por Exemplo - Unindo TI e Negócio através do BDD

Bibliografia

• Specification By Example – Gojko Adzik

• Bridging the Communication Gap – Gojko Adzik

• ATDD By Example – Markus Gärtner

• Desenvolvimento Guiado por Testes – Kent Beck

• Desenvolvimento de Software com Scrum – Mike Cohn

• O Codificador Limpo – Robert C. Martin