147
Testes de Unidade com JUnit Paulo César M. Jeveaux [email protected]

Palestra Testes De Unidade Com JUnit

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Palestra Testes De Unidade Com JUnit

Testes de Unidadecom JUnit

Paulo César M. Jeveaux

[email protected]

Page 2: Palestra Testes De Unidade Com JUnit

Giran Soluções e Ensino

• Consultoria e Treinamento especialidados

• Java

• Ruby on Rails

• Desenvolvimento ágil

• Gerenciamento de projetos com SCRUM

• Profissionais altamente qualificados

• Participação ativa na comunidade

• http://www.giran.com.br

Page 3: Palestra Testes De Unidade Com JUnit

Jeveaux• CEO da Giran

• Desenvolvedor Java há 8++ anos

• Fundador do ESJUG e Agile-ES

• Administrador do PortalJava.com

• Palestrante e evangelista Java

• Entusiasta Ruby, Rails, Python e Agile

• Curioso e aprendendo Erlang

Page 4: Palestra Testes De Unidade Com JUnit

Sobre o que vamos falar hoje...

Page 5: Palestra Testes De Unidade Com JUnit
Page 6: Palestra Testes De Unidade Com JUnit

desenvolvimento de software

Page 7: Palestra Testes De Unidade Com JUnit

desenvolvimento de software

processo tradicional

Page 8: Palestra Testes De Unidade Com JUnit

desenvolvimento de software

processo tradicional

um pouquinho de XP

Page 9: Palestra Testes De Unidade Com JUnit

desenvolvimento de software

processo tradicional

Testes

um pouquinho de XP

Page 10: Palestra Testes De Unidade Com JUnit

desenvolvimento de software

processo tradicional

Testes

um pouquinho de XP

JUnit

Page 11: Palestra Testes De Unidade Com JUnit

O que é umTeste?

Page 12: Palestra Testes De Unidade Com JUnit
Page 13: Palestra Testes De Unidade Com JUnit

você entrarianum avião...

Page 14: Palestra Testes De Unidade Com JUnit

você entrarianum avião...

... que nuncasaiu do

chão?

Page 15: Palestra Testes De Unidade Com JUnit

ta maluco?

Page 16: Palestra Testes De Unidade Com JUnit

e por que vocêentrega softwaresem testar?

Page 17: Palestra Testes De Unidade Com JUnit

como você desenvolvesoftware hoje?

Page 18: Palestra Testes De Unidade Com JUnit

Code and fix!

Page 19: Palestra Testes De Unidade Com JUnit

• Sem metodologia de desenvolvimento

• Procedural e estruturada

• Grande dificuldade para mostrar e simular a relação entre o código (entidades) e o negócio

[Cristiano Milfont]

O processo tradicional

Page 20: Palestra Testes De Unidade Com JUnit

Unificação de Processos

Page 21: Palestra Testes De Unidade Com JUnit

• Criação de processos unificados (*UP)

• Direcionados a casos de uso

• Centrados na arquitetura

• Iterativos e incrementais

• Utilização da linguagem UML

• Fases bem definidas, como na engenharia civil

• Concepção, elaboração, construção e transição

[Cristiano Milfont]

Page 22: Palestra Testes De Unidade Com JUnit

Quase sempre a civil

Inspirado em outrasengenharias

Page 23: Palestra Testes De Unidade Com JUnit

Quase sempre a civil

Inspirado em outrasengenharias

Page 24: Palestra Testes De Unidade Com JUnit

Quase sempre a civil

Inspirado em outrasengenharias

Page 25: Palestra Testes De Unidade Com JUnit

Dá pra afastar um pouquinho?

Page 26: Palestra Testes De Unidade Com JUnit

Custo de mudanças

Page 27: Palestra Testes De Unidade Com JUnit
Page 28: Palestra Testes De Unidade Com JUnit

BDUFbig design up front

Page 29: Palestra Testes De Unidade Com JUnit

BDUFbig design up front

is evil!

Page 30: Palestra Testes De Unidade Com JUnit

nós estamos jogando

com as regras erradas!

Page 31: Palestra Testes De Unidade Com JUnit

“A maioria das nossas suposições sobre negócios, tecnologia e organizações têm pelo menos 50 anos. Elas tem sobrevivido ao seu tempo. Como resultado, estamos pregando, ensinando, e praticando políticas que estão cada vez mais desalinhadas com a realidade, e são contra produtivas.”

Peter Drucker (1909-2005)

Page 32: Palestra Testes De Unidade Com JUnit
Page 33: Palestra Testes De Unidade Com JUnit

Não é assim que se faz software

Page 34: Palestra Testes De Unidade Com JUnit

Não é assim que se faz software

Acredite!

Page 35: Palestra Testes De Unidade Com JUnit

Manifesto ÁgilEstamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:

Indivíduos e interação entre eles mais que processos e ferramentasSoftware em funcionamento mais que documentação abrangente

Colaboração com o cliente mais que negociação de contratosResponder a mudanças mais que seguir um plano

Ou seja, mesmo havendo valor nos itens à direita,valorizamos mais os itens à esquerda.

Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, JamesGrenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor,

Ken Schwaber, Jeff Sutherland, Dave Thomas

©2001, Autores acima citados.

Esta declaração pode ser livremente copiada, sob qualquer forma,mas apenas na sua totalidade através do presente aviso.

Page 36: Palestra Testes De Unidade Com JUnit

XPExtreme Programming

Page 37: Palestra Testes De Unidade Com JUnit

O que é XP?

Page 38: Palestra Testes De Unidade Com JUnit

Sempre7%

Frequentemente13%

Às vezes16%

Raramente19%

Nunca45%

Utilização de funcionalidades de software

Page 39: Palestra Testes De Unidade Com JUnit

Raramente19%

Nunca45%

desperdício

Page 40: Palestra Testes De Unidade Com JUnit

Sempre7%

Frequentemente13%

Pareto

20% das funcionalidadesgeram 80% do valor

Page 41: Palestra Testes De Unidade Com JUnit

XP é a arte de maximizar a quantidade de software que

você não vai fazerVinícius Manhães Teles - ImproveIt

Page 42: Palestra Testes De Unidade Com JUnit

Extreme ProgrammingÉ um conjunto de princípios, valores e práticas

Page 43: Palestra Testes De Unidade Com JUnit

Onde...

Page 44: Palestra Testes De Unidade Com JUnit

Onde...

... os princípios conectam os valores às práticas

Page 45: Palestra Testes De Unidade Com JUnit

• O XP é uma metodologia rigorosa e disciplinada que requer o cumprimento de suas práticas para o sucesso na adoção.

• O XP pode ser usado com CMM e UPs.

• A preocupação não é com qualidade (que deve natural) e sim com a saúde do sistema (segundo Kent Beck).

[Cristiano Milfont]

Page 46: Palestra Testes De Unidade Com JUnit

e testes vão me salvar?

Page 47: Palestra Testes De Unidade Com JUnit

e testes vão me salvar?

testes evitarão falhas?

Page 48: Palestra Testes De Unidade Com JUnit

falhas existem

[1] [2]

Page 49: Palestra Testes De Unidade Com JUnit

falhas existem

1/3poderiam ser

evitadas

[1] [2]

Page 50: Palestra Testes De Unidade Com JUnit

falhas existem

1/3poderiam ser

evitadas

50%são detectadasem produção

[1] [2]

Page 51: Palestra Testes De Unidade Com JUnit

falhas existem

1/3poderiam ser

evitadas

50%são detectadasem produção

U$60 bi anocustam caro!

[1] [2]

Page 52: Palestra Testes De Unidade Com JUnit
Page 53: Palestra Testes De Unidade Com JUnit

bug

Page 54: Palestra Testes De Unidade Com JUnit

bug feature

Page 55: Palestra Testes De Unidade Com JUnit

defeitos são caros!

quanto mais tarde forem encontrados, mais caros serão

Page 56: Palestra Testes De Unidade Com JUnit

conclusão:é melhor encontrar os defeitos o mais cedo

possível!

Page 57: Palestra Testes De Unidade Com JUnit

depois eu testo

Page 58: Palestra Testes De Unidade Com JUnit

estou sem tempo

Page 59: Palestra Testes De Unidade Com JUnit

funcionou!?

Page 60: Palestra Testes De Unidade Com JUnit

funcionou!?

Page 61: Palestra Testes De Unidade Com JUnit

seja profissionalgaranta o seu trabalho!

Page 62: Palestra Testes De Unidade Com JUnit

você é o únicoresponsável pelaqualidade do seu

trabalho

Page 63: Palestra Testes De Unidade Com JUnit

ninguém melhora sevocê não melhorarprimeiro!

Page 64: Palestra Testes De Unidade Com JUnit

programadoresprofissionais

escrevem testes.[3]

Page 65: Palestra Testes De Unidade Com JUnit

teste tudo antes - TDD

Page 66: Palestra Testes De Unidade Com JUnit

quando você terminar

Page 67: Palestra Testes De Unidade Com JUnit

quando você terminar

é porque vocêrealmente terminou

Page 68: Palestra Testes De Unidade Com JUnit

quando você terminar

é porque vocêrealmente terminou

Page 69: Palestra Testes De Unidade Com JUnit

escreva os testesantes!

Page 70: Palestra Testes De Unidade Com JUnit

você vai

Page 71: Palestra Testes De Unidade Com JUnit

você vai

amar seus códigos

Page 72: Palestra Testes De Unidade Com JUnit

você vai

amar seus códigos

programar melhor

Page 73: Palestra Testes De Unidade Com JUnit

você vai

amar seus códigos

programar melhor

pensar antes de escrever

Page 74: Palestra Testes De Unidade Com JUnit

você vai

amar seus códigos

programar melhor

pensar antes de escrever

reduzir código inútil

Page 75: Palestra Testes De Unidade Com JUnit

você vai

amar seus códigos

programar melhor

pensar antes de escrever

reduzir código inútil

ganhar com qualidade

Page 76: Palestra Testes De Unidade Com JUnit

“Sempre que estiver tentado a escrever um print() ou uma

expressão de depuração, escreva um teste”

-- Martin Fowler

Page 77: Palestra Testes De Unidade Com JUnit

entre no ritmo

Page 78: Palestra Testes De Unidade Com JUnit

stand-up meeting @ 09:00h

monte seu par

escreva um teste

codifique para passar no teste refatore

entregar

Ir para casa @ 17:00h

Page 79: Palestra Testes De Unidade Com JUnit

red

Page 80: Palestra Testes De Unidade Com JUnit

red

escreva um teste que não funciona

Page 81: Palestra Testes De Unidade Com JUnit

green

Page 82: Palestra Testes De Unidade Com JUnit

green

escreva código que passe no teste

Page 83: Palestra Testes De Unidade Com JUnit

refactor

Page 84: Palestra Testes De Unidade Com JUnit

refactor

refatore, recomece e refatore. Sempre!

Page 85: Palestra Testes De Unidade Com JUnit

testes de unidade

Page 86: Palestra Testes De Unidade Com JUnit

testes de unidadeteste todo seu código

Page 87: Palestra Testes De Unidade Com JUnit

testes de unidadeteste todo seu código

por partes

Page 88: Palestra Testes De Unidade Com JUnit

testes de unidadeteste todo seu código

por partes

isoladas

Page 89: Palestra Testes De Unidade Com JUnit

testes de unidadeteste todo seu código

por partes

isoladas

e independentes

Page 90: Palestra Testes De Unidade Com JUnit

testes de unidade

Page 91: Palestra Testes De Unidade Com JUnit

testes de unidadeevitam bugs

Page 92: Palestra Testes De Unidade Com JUnit

testes de unidadeevitam bugs

permitem fáceis alterações (coragem)

Page 93: Palestra Testes De Unidade Com JUnit

testes de unidadeevitam bugs

permitem fáceis alterações (coragem)

documenta

Page 94: Palestra Testes De Unidade Com JUnit

testes de unidadeevitam bugs

permitem fáceis alterações (coragem)

documenta

serve como métrica do projeto

Page 95: Palestra Testes De Unidade Com JUnit

testes de unidadeevitam bugs

permitem fáceis alterações (coragem)

documenta

serve como métrica do projeto

- testes == requisitos

Page 96: Palestra Testes De Unidade Com JUnit

rode os testes todo o tempo

Page 97: Palestra Testes De Unidade Com JUnit

rode os testes todo o tempo

é melhor corrigirdois ou três probleminhas

Page 98: Palestra Testes De Unidade Com JUnit

rode os testes todo o tempo

é melhor corrigirdois ou três probleminhas

do que corrigir um problemão

Page 99: Palestra Testes De Unidade Com JUnit

mantenha tudo simples

Page 100: Palestra Testes De Unidade Com JUnit

mantenha tudo simplesdeixe os ‘complexos’ por último

Page 101: Palestra Testes De Unidade Com JUnit

mantenha tudo simplesdeixe os ‘complexos’ por último

seja criativo

Page 102: Palestra Testes De Unidade Com JUnit

mantenha tudo simplesdeixe os ‘complexos’ por último

seja criativo

mantenha o foco

Page 103: Palestra Testes De Unidade Com JUnit

mantenha tudo simplesdeixe os ‘complexos’ por último

seja criativo

mantenha o foco

use dados suficientes

Page 104: Palestra Testes De Unidade Com JUnit

mantenha tudo simplesdeixe os ‘complexos’ por último

seja criativo

mantenha o foco

use dados suficientes

- se 3 condições bastam, pra que 10?

Page 105: Palestra Testes De Unidade Com JUnit

achou um bug?

Page 106: Palestra Testes De Unidade Com JUnit

achou um bug?

não o conserte antes de terum teste que o reproduza

Page 107: Palestra Testes De Unidade Com JUnit

achou um bug?

não o conserte antes de terum teste que o reproduza

ou então ele volta!

Page 108: Palestra Testes De Unidade Com JUnit

JUnit

Page 109: Palestra Testes De Unidade Com JUnit

framework que facilita o desenvolvimento e execução de testes de unidade em Java

fornece uma API para criar os testes e aplicações

para executa-los

Page 110: Palestra Testes De Unidade Com JUnit

escrito originalmente por Erich Gamma e Kent Beck

parte de uma família de arquitetura de testes

conhecida como xUnit

Page 111: Palestra Testes De Unidade Com JUnit

pra que um framework?

Page 112: Palestra Testes De Unidade Com JUnit

pra que um framework?verifica toda unidade de código

Page 113: Palestra Testes De Unidade Com JUnit

pra que um framework?verifica toda unidade de código

facilita a criação

Page 114: Palestra Testes De Unidade Com JUnit

pra que um framework?verifica toda unidade de código

facilita a criação

facilita a automatização

Page 115: Palestra Testes De Unidade Com JUnit

pra que um framework?verifica toda unidade de código

facilita a criação

facilita a automatização

é OO, gratuito, Open Source ...

Page 116: Palestra Testes De Unidade Com JUnit

JUnit 4 ficou muito simples

Page 117: Palestra Testes De Unidade Com JUnit

@Test

anote seu métodonão precisa mais do prefixo test

suas classes não precisam estenderTestCase

Page 118: Palestra Testes De Unidade Com JUnit

@Before e @After

anote seus métodos que serão osetUp e tearDown

@BeforeClass e @AfterClass

anote seus métodos que serão osetUp e tearDown em nível de classe

Page 119: Palestra Testes De Unidade Com JUnit

Exceptions

@Test(expected = ArithmeticException.class)

@Ignore

@Ignore(“Não pode ser executado ainda.”)@Test

Page 120: Palestra Testes De Unidade Com JUnit

Timeout

@Test(timeout = 1000)

Page 121: Palestra Testes De Unidade Com JUnit

o ritual

Page 122: Palestra Testes De Unidade Com JUnit

saiba o vai implementar

Page 123: Palestra Testes De Unidade Com JUnit

saiba o vai implementarliste tudo que deve ser feito

Page 124: Palestra Testes De Unidade Com JUnit

saiba o vai implementarliste tudo que deve ser feito

escreva um teste antes paraqualquer tarefa listada

Page 125: Palestra Testes De Unidade Com JUnit

saiba o vai implementarliste tudo que deve ser feito

escreva um teste antes paraqualquer tarefa listada

certifique-se que o teste falhe

Page 126: Palestra Testes De Unidade Com JUnit

implemente

Page 127: Palestra Testes De Unidade Com JUnit

implementeimplemente um código simplespara passar no teste

Page 128: Palestra Testes De Unidade Com JUnit

implementeimplemente um código simplespara passar no teste

refatore o teste e depois o código

Page 129: Palestra Testes De Unidade Com JUnit

implementeimplemente um código simplespara passar no teste

refatore o teste e depois o código

recomece

Page 130: Palestra Testes De Unidade Com JUnit

alguns lembretes

Page 131: Palestra Testes De Unidade Com JUnit

alguns lembretesassertEquals

Page 132: Palestra Testes De Unidade Com JUnit

alguns lembretesassertEquals

- testa igualdade (esperado x retornado)

Page 133: Palestra Testes De Unidade Com JUnit

alguns lembretesassertEquals

- testa igualdade (esperado x retornado)

assertTrue

Page 134: Palestra Testes De Unidade Com JUnit

alguns lembretesassertEquals

- testa igualdade (esperado x retornado)

assertTrue- testa o retorno ‘true’

Page 135: Palestra Testes De Unidade Com JUnit

alguns lembretesassertEquals

- testa igualdade (esperado x retornado)

assertTrue- testa o retorno ‘true’

assertFalse

Page 136: Palestra Testes De Unidade Com JUnit

alguns lembretesassertEquals

- testa igualdade (esperado x retornado)

assertTrue- testa o retorno ‘true’

assertFalse- testa o retorno ‘false’

Page 137: Palestra Testes De Unidade Com JUnit

alguns lembretes

Page 138: Palestra Testes De Unidade Com JUnit

alguns lembretesassertNull

Page 139: Palestra Testes De Unidade Com JUnit

alguns lembretesassertNull

- testa se um valor é nulo

Page 140: Palestra Testes De Unidade Com JUnit

alguns lembretesassertNull

- testa se um valor é nulo

assertNotNull

Page 141: Palestra Testes De Unidade Com JUnit

alguns lembretesassertNull

- testa se um valor é nulo

assertNotNull- testa se um valor não é nulo

Page 142: Palestra Testes De Unidade Com JUnit

hands on!

Page 143: Palestra Testes De Unidade Com JUnit

dúvidas?

Page 144: Palestra Testes De Unidade Com JUnit

http://www.esjug.org

Page 145: Palestra Testes De Unidade Com JUnit

Referências• Fotos

• ImproveIt - http://www.improveit.com.br

• Pesquisas

• [1] - NIST - http://www.nist.gov/public_affairs/releases/n02-10.htm

• [2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd

• [3] – Fragmental - Shoes - http://blog.fragmental.com.br/2007/10/31/programadoresprofissionais-escrevem-testes-ponto-final

• Materiais

• Extreme Programming - http://extremeprogramming.org

• Igor Macaubas e Marcos Pereira - http://www.slideshare.net/macaubas/seminario-scrum-presentation

• ImproveIt - http://www.improveit.com.br/scrum

• ImproveIt - http://www.improveit.com.br/xp

• Manifesto Ágil - http://manifestoagil.com.br

• Guilherme Chapiewski - http://www.slideshare.net/gchapiewski/desenvolvimento-gil-com-xp-e-scrum-presentation

• André Faria Gomes - http://andrefaria.com/2008/08/22/junit-4-em-60-segundos

• Cristiano Milfont - http://www.slideshare.net/cmilfont/extreme-programming-148802

Page 146: Palestra Testes De Unidade Com JUnit

Obrigado!podem acordar

Page 147: Palestra Testes De Unidade Com JUnit

Testes de Unidadecom JUnit

Paulo César M. Jeveaux

[email protected]