Desenvolvimento agil orientado a testes

110
Desenvolvimento Ágil Orientado a Testes Uma história real de como a busca pela qualidade de software transformou uma equipe de desenvolvimento Eder Ignatowicz segunda-feira, 5 de dezembro de 2011

description

Desenvolvimento Ágil Orientado a Testes. Palestra apresentada no SPIN Campinas (5/12) http://www.cpqd.com.br/spin-cps/ e no Polis Hyperlink (7/12) http://hyperlink.polisdetecnologia.com.br/

Transcript of Desenvolvimento agil orientado a testes

Page 1: Desenvolvimento agil orientado a testes

Desenvolvimento Ágil Orientado a Testes

Uma história real de como a busca pela qualidade de software transformou uma equipe de desenvolvimento

Eder Ignatowicz

segunda-feira, 5 de dezembro de 2011

Page 2: Desenvolvimento agil orientado a testes

Eder Ignatowicz...

@ederign

segunda-feira, 5 de dezembro de 2011

Page 3: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 4: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 5: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 6: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 7: Desenvolvimento agil orientado a testes

BDD

segunda-feira, 5 de dezembro de 2011

Page 8: Desenvolvimento agil orientado a testes

BDD

segunda-feira, 5 de dezembro de 2011

Page 9: Desenvolvimento agil orientado a testes

BDD

segunda-feira, 5 de dezembro de 2011

Page 10: Desenvolvimento agil orientado a testes

BDD

segunda-feira, 5 de dezembro de 2011

Page 11: Desenvolvimento agil orientado a testes

BDD

Pair Programming

segunda-feira, 5 de dezembro de 2011

Page 12: Desenvolvimento agil orientado a testes

BDD

Pair Programming

Kanban

segunda-feira, 5 de dezembro de 2011

Page 13: Desenvolvimento agil orientado a testes

BDD

segunda-feira, 5 de dezembro de 2011

Page 14: Desenvolvimento agil orientado a testes

Orgulho

segunda-feira, 5 de dezembro de 2011

Page 15: Desenvolvimento agil orientado a testes

O que te motiva no trabalho ?

segunda-feira, 5 de dezembro de 2011

Page 16: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 17: Desenvolvimento agil orientado a testes

Ou um sentido de realização, um senso de propósito, um senso de orgulho ?

segunda-feira, 5 de dezembro de 2011

Page 18: Desenvolvimento agil orientado a testes

Segundo o sociólogo e historiador norte-americano Richard Sennett, autor de "L'uomo artigiano" (O

homem artesão)...

segunda-feira, 5 de dezembro de 2011

Page 19: Desenvolvimento agil orientado a testes

É preciso restabelecer o "conceito de ofício, sobre o princípio do artesão: valorizar o significado do trabalho, em vez da remuneração que se pode

esperar dele. Reabilitar o conceito de trabalho bem desenvolvido pelo simples prazer de

desenvolvê-lo bem, independentemente do conceito de performance ou de retribuição. Apenas

esse compromissodesinteressado dá significado à vida".

segunda-feira, 5 de dezembro de 2011

Page 20: Desenvolvimento agil orientado a testes

É preciso restabelecer o "conceito de ofício, sobre o princípio do artesão: valorizar o significado do trabalho, em vez da

remuneração que se pode esperar dele. Reabilitar o conceito de

trabalho bem desenvolvido pelo simples prazer dedesenvolvê-lo bem, independentemente do

conceito de performance ou de retribuição. Apenas esse compromisso

desinteressado dá significado à vida".

segunda-feira, 5 de dezembro de 2011

Page 21: Desenvolvimento agil orientado a testes

E no desenvolvimento de Software ?

segunda-feira, 5 de dezembro de 2011

Page 22: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 23: Desenvolvimento agil orientado a testes

Mas e a minha história.... ?

segunda-feira, 5 de dezembro de 2011

Page 24: Desenvolvimento agil orientado a testes

Tinhamos um grande (e longo) projeto para um cliente bancário...

E uma equipe competente...

segunda-feira, 5 de dezembro de 2011

Page 25: Desenvolvimento agil orientado a testes

Utilizávamos Scrum e grande parte dos preceitos ágeis...

segunda-feira, 5 de dezembro de 2011

Page 26: Desenvolvimento agil orientado a testes

Mas a cada mês o projeto crescia e surgiam problemas cada vez maiores (como em todos grandes projetos)....

segunda-feira, 5 de dezembro de 2011

Page 27: Desenvolvimento agil orientado a testes

e o incômodo ficava cada vez maior....

segunda-feira, 5 de dezembro de 2011

Page 28: Desenvolvimento agil orientado a testes

... dentre estes incômodos, o principal era...

segunda-feira, 5 de dezembro de 2011

Page 29: Desenvolvimento agil orientado a testes

Nós podemos mais !

Precisamos construir (e garantir) uma maior qualidade do nosso trabalho...

segunda-feira, 5 de dezembro de 2011

Page 30: Desenvolvimento agil orientado a testes

Numa “calma” reunião técnica...

segunda-feira, 5 de dezembro de 2011

Page 31: Desenvolvimento agil orientado a testes

Escutamos uns aos outros e decidimos utilizar:

segunda-feira, 5 de dezembro de 2011

Page 32: Desenvolvimento agil orientado a testes

TDD e BDD para as regras de negócio:

segunda-feira, 5 de dezembro de 2011

Page 33: Desenvolvimento agil orientado a testes

E como fazemos isto ?

segunda-feira, 5 de dezembro de 2011

Page 34: Desenvolvimento agil orientado a testes

TDD

segunda-feira, 5 de dezembro de 2011

Page 35: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 36: Desenvolvimento agil orientado a testes

Para mim (e para muita gente)...

TDD não se refere a testes...

segunda-feira, 5 de dezembro de 2011

Page 37: Desenvolvimento agil orientado a testes

TDD se refere a DESIGN de código.

segunda-feira, 5 de dezembro de 2011

Page 38: Desenvolvimento agil orientado a testes

Nunca escreva uma única linha de código a menos que falhe em um teste

automatizado(RED). Então escreva o mínimo de código para o teste passar

(GREEN) e depois elimine a duplicação. (REFACTOR)

Kent Beck em um ângulo não muito favorável ;)

segunda-feira, 5 de dezembro de 2011

Page 39: Desenvolvimento agil orientado a testes

Escreveremos testes unitários para todas as nossas classes.

segunda-feira, 5 de dezembro de 2011

Page 40: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 41: Desenvolvimento agil orientado a testes

Pair Programming

segunda-feira, 5 de dezembro de 2011

Page 42: Desenvolvimento agil orientado a testes

Pair Programming?!?

segunda-feira, 5 de dezembro de 2011

Page 43: Desenvolvimento agil orientado a testes

Pair Programming?!?

Pairing Station

segunda-feira, 5 de dezembro de 2011

Page 44: Desenvolvimento agil orientado a testes

Pairing Station

Piloto

Pair Programming?!?

segunda-feira, 5 de dezembro de 2011

Page 45: Desenvolvimento agil orientado a testes

Pairing Station

Piloto

Navegador

Pair Programming?!?

segunda-feira, 5 de dezembro de 2011

Page 46: Desenvolvimento agil orientado a testes

Pairing Station

Piloto

Navegador

Próxima linha de código, sintaxe, API, classe em

desenvolvimento....

Pair Programming?!?

segunda-feira, 5 de dezembro de 2011

Page 47: Desenvolvimento agil orientado a testes

Pairing Station

Piloto

Próxima linha de código, sintaxe, API, classe em

desenvolvimento....

Navegador

Estamos indo na direção certa? Requisitos,

alternativas, próximo caso de teste

Pair Programming?!?

segunda-feira, 5 de dezembro de 2011

Page 48: Desenvolvimento agil orientado a testes

Não é um desperdício?

Meu custo dobrará?

Porque eu colocaria duas pessoas em uma tarefa que uma pode fazer?

segunda-feira, 5 de dezembro de 2011

Page 49: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 50: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 51: Desenvolvimento agil orientado a testes

E como Pair Programming nos ajudou?

Revisão contínuaComunicação

Menos Defeitos (ou antecipados)Qualidade do design

Resolução de problemasAmbiente de aprendizado e colaboração

Maior produtividadeSatisfação

Entrosamento do Time

segunda-feira, 5 de dezembro de 2011

Page 52: Desenvolvimento agil orientado a testes

BDD

segunda-feira, 5 de dezembro de 2011

Page 53: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 54: Desenvolvimento agil orientado a testes

Behavior Driven Development pode ser visto como uma técnica de

desenvolvimento ágil que encoraja colaboração entre

desenvolvedores, analistas, QA e o pessoal não técnico (stackholders)

para o sucesso de um projeto.

segunda-feira, 5 de dezembro de 2011

Page 55: Desenvolvimento agil orientado a testes

Behavior Driven Development pode ser visto como uma técnica de

desenvolvimento ágil que encoraja colaboração entre

desenvolvedores, analistas, QA e o pessoal não técnico (stackholders)

para o sucesso de um projeto.

segunda-feira, 5 de dezembro de 2011

Page 56: Desenvolvimento agil orientado a testes

Porque para mim TODOS são desenvolvedores de software!

segunda-feira, 5 de dezembro de 2011

Page 57: Desenvolvimento agil orientado a testes

Multidisciplinaridade

segunda-feira, 5 de dezembro de 2011

Page 58: Desenvolvimento agil orientado a testes

Penso que BDD pode por fim a “GUERRA” entre QA e

desenvolvedores (aka programadores)...

segunda-feira, 5 de dezembro de 2011

Page 59: Desenvolvimento agil orientado a testes

Porque a guerra acontece ?

segunda-feira, 5 de dezembro de 2011

Page 60: Desenvolvimento agil orientado a testes

“Testers” e “Programadores” não falam a mesma língua

segunda-feira, 5 de dezembro de 2011

Page 61: Desenvolvimento agil orientado a testes

E com BDD conseguimos...

segunda-feira, 5 de dezembro de 2011

Page 62: Desenvolvimento agil orientado a testes

Conversar no mesmo idioma (o do negócio)

segunda-feira, 5 de dezembro de 2011

Page 63: Desenvolvimento agil orientado a testes

E como fazemos isto ?

segunda-feira, 5 de dezembro de 2011

Page 64: Desenvolvimento agil orientado a testes

Todos membros do time escrevem as histórias colaborativamente nas reuniões

de planning...

segunda-feira, 5 de dezembro de 2011

Page 65: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 66: Desenvolvimento agil orientado a testes

Collective Ownership entre desenvolvedores (aka testers +

programadores)

segunda-feira, 5 de dezembro de 2011

Page 67: Desenvolvimento agil orientado a testes

Também decidimos...

segunda-feira, 5 de dezembro de 2011

Page 68: Desenvolvimento agil orientado a testes

ATDD (ou especificação por exemplo) para TODOS os fluxos principais do negócio

segunda-feira, 5 de dezembro de 2011

Page 69: Desenvolvimento agil orientado a testes

E como fazemos isto ?

segunda-feira, 5 de dezembro de 2011

Page 70: Desenvolvimento agil orientado a testes

Todos membros do time colaborativamente selecionam as

principais histórias nas reuniões de planning...

segunda-feira, 5 de dezembro de 2011

Page 71: Desenvolvimento agil orientado a testes

Nem todas histórias viram testes de aceitação...

segunda-feira, 5 de dezembro de 2011

Page 72: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 73: Desenvolvimento agil orientado a testes

Testes precisam ser organizados e fáceis de escrever e manter...

segunda-feira, 5 de dezembro de 2011

Page 74: Desenvolvimento agil orientado a testes

Através da Selenium IDE / Badboy ?

segunda-feira, 5 de dezembro de 2011

Page 75: Desenvolvimento agil orientado a testes

A promessa...

segunda-feira, 5 de dezembro de 2011

Page 76: Desenvolvimento agil orientado a testes

A realidade...

segunda-feira, 5 de dezembro de 2011

Page 77: Desenvolvimento agil orientado a testes

Que tal Page Objects ?

segunda-feira, 5 de dezembro de 2011

Page 78: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 79: Desenvolvimento agil orientado a testes

Reutilizáveis

segunda-feira, 5 de dezembro de 2011

Page 80: Desenvolvimento agil orientado a testes

Baixa manutenção

segunda-feira, 5 de dezembro de 2011

Page 81: Desenvolvimento agil orientado a testes

Escondem detalhes desnecessários através de Orientação a Objetos

(tornando mais fácil o seu uso)

segunda-feira, 5 de dezembro de 2011

Page 82: Desenvolvimento agil orientado a testes

E como fazemos isto ?

segunda-feira, 5 de dezembro de 2011

Page 83: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 84: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 85: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 86: Desenvolvimento agil orientado a testes

Animei, quero codificar meus testes...

segunda-feira, 5 de dezembro de 2011

Page 87: Desenvolvimento agil orientado a testes

Mas para preencher um simples Suggestion Box Ajax no Selenium...

segunda-feira, 5 de dezembro de 2011

Page 88: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 89: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 90: Desenvolvimento agil orientado a testes

Eu como QA, quero (e devo) me preocupar com o negócio.

O meu FOCO é outro.

segunda-feira, 5 de dezembro de 2011

Page 91: Desenvolvimento agil orientado a testes

Mas...

segunda-feira, 5 de dezembro de 2011

Page 92: Desenvolvimento agil orientado a testes

Eu te afirmo...

segunda-feira, 5 de dezembro de 2011

Page 93: Desenvolvimento agil orientado a testes

Com uma API caprichada toda a equipe é capaz de gostar de automatizar (programar) testes

funcionais !!!

segunda-feira, 5 de dezembro de 2011

Page 94: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 95: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 96: Desenvolvimento agil orientado a testes

Todo o time programando testes !

segunda-feira, 5 de dezembro de 2011

Page 97: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 98: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 99: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 100: Desenvolvimento agil orientado a testes

segunda-feira, 5 de dezembro de 2011

Page 101: Desenvolvimento agil orientado a testes

TODOS somos desenvolvedores de software!

segunda-feira, 5 de dezembro de 2011

Page 102: Desenvolvimento agil orientado a testes

(Selenium + Page Objects + BDD Demo)

segunda-feira, 5 de dezembro de 2011

Page 103: Desenvolvimento agil orientado a testes

E finalmente...

segunda-feira, 5 de dezembro de 2011

Page 104: Desenvolvimento agil orientado a testes

O Jenkins e o Sonar cuidando para que tudo se mantenha em ordem...

segunda-feira, 5 de dezembro de 2011

Page 105: Desenvolvimento agil orientado a testes

KANBAN para controle do fluxo

segunda-feira, 5 de dezembro de 2011

Page 106: Desenvolvimento agil orientado a testes

E quais foram os resultados ?

segunda-feira, 5 de dezembro de 2011

Page 107: Desenvolvimento agil orientado a testes

Para o cliente:

• Produto funcionando;

• Deploy “contínuo” em um sistema bancário;

• Velocidade e adaptação as mudanças;

•Confiança na equipe.

segunda-feira, 5 de dezembro de 2011

Page 108: Desenvolvimento agil orientado a testes

Para a equipe:

• Produto funcionando;

• Maximização da qualidade;

• Confiança na modificação de funcionalidades;

• Sono tranquilo e....

segunda-feira, 5 de dezembro de 2011

Page 109: Desenvolvimento agil orientado a testes

Orgulho

segunda-feira, 5 de dezembro de 2011

Page 110: Desenvolvimento agil orientado a testes

Eder Ignatowicz...

@ederign

segunda-feira, 5 de dezembro de 2011