Top Banner
Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP www.agilcoop.org.br Hugo Corbucci [email protected]
68

Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Feb 14, 2019

Download

Documents

truongnhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Padrões de Testes Automatizados

Curso de Verão 2010 - IME/USPwww.agilcoop.org.br

Hugo Corbucci

[email protected]

Page 2: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 2

Introdução

Page 3: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 3

Introdução

● Código! De testes automatizados

Page 4: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 4

Introdução

● Código! De testes automatizados

E o que Métodos Ágeis dizem

que deve ser feito com código?

Page 5: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 5

Introdução

● Código! De testes automatizados

E o que Métodos Ágeis dizem

que deve ser feito com código?

Page 6: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 6

Introdução

● Código! De testes automatizados

E o que Métodos Ágeis dizem

que deve ser feito com código?

Page 7: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 7

Introdução

● Código! De testes automatizados

E o que Métodos Ágeis dizem

que deve ser feito com código?

Page 8: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 8

Introdução

● O que vale pra código de produção vale pra código de testes automatizados

Page 9: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 9

Introdução

● O que vale pra código de produção vale pra código de testes automatizados– Precisa ser mantido

Page 10: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 10

Introdução

● O que vale pra código de produção vale pra código de testes automatizados– Precisa ser mantido

– Precisa ser refatorado

Page 11: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 11

Introdução

● O que vale pra código de produção vale pra código de testes automatizados– Precisa ser mantido

– Precisa ser refatorado

– Precisa ter um design (ainda que simples)

Page 12: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 12

Introdução

● O que vale pra código de produção vale pra código de testes automatizados– Precisa ser mantido

– Precisa ser refatorado

– Precisa ter um design (ainda que simples)

– Precisa ser expressivo

Page 13: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 13

Introdução

● O que vale pra código de produção vale pra código de testes automatizados– Precisa ser mantido

– Precisa ser refatorado

– Precisa ter um design (ainda que simples)

– Precisa ser expressivo

– Pode ter erros

Page 14: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 14

Por que Padrões?

“Um padrão de projeto é uma solução conhecida e reutilizável para um problema

recorrente em design”

Page 15: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 15

Padrões para testes

● Facilitam e otimizam a escrita dos testes

Page 16: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 16

Padrões para testes

● Facilitam e otimizam a escrita dos testes

● Direcionam a refatoração do código de teste

Page 17: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 17

Anti-Padrão

“Um anti-padrão é uma aparente solução a um problema recorrente que introduz outros

problemas. Ou seja, um padrão cujo uso não é recomendado.”

Page 18: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 18

Cheiros

“Sintomas do código fonte que indicam a presença de algum problema.”

Page 19: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 19

Cheiros no código

Page 20: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 20

Cheiros no código

● Código obscuro

Page 21: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 21

Cheiros no código

● Código obscuro

● Lógica de teste condicional

Page 22: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 22

Cheiros no código

● Código obscuro

● Lógica de teste condicional

● Duplicação de código de teste

Page 23: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 23

Cheiros no código

● Código obscuro

● Lógica de teste condicional

● Duplicação de código de teste

● Produção de Lógica de teste

Page 24: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 24

Cheiros no código

● Código obscuro

● Lógica de teste condicional

● Duplicação de código de teste

● Produção de Lógica de teste

● Código difícil de testar

Page 25: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 25

Cheiros de comportamento

● Roleta de asserções

Page 26: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 26

Cheiros de comportamento

● Roleta de asserções

● Intervenção manual

Page 27: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 27

Cheiros de comportamento

● Roleta de asserções

● Intervenção manual

● Testes erráticos

Page 28: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 28

Cheiros de comportamento

● Roleta de asserções

● Intervenção manual

● Testes erráticos

● Testes frágeis

Page 29: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 29

Cheiros de comportamento

● Roleta de asserções

● Intervenção manual

● Testes erráticos

● Testes frágeis

● Debug frequente

Page 30: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 30

Cheiros de comportamento

● Roleta de asserções

● Intervenção manual

● Testes erráticos

● Testes frágeis

● Debug frequente

● Testes lentos

Page 31: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 31

Cheiros de projeto

● Testes bugados

Page 32: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 32

Cheiros de projeto

● Testes bugados

● Testes não escrito por desenvolvedores

Page 33: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 33

Cheiros de projeto

● Testes bugados

● Testes não escrito por desenvolvedores

● Alto custo de manutenção de testes

Page 34: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 34

Cheiros de projeto

● Testes bugados

● Testes não escrito por desenvolvedores

● Alto custo de manutenção de testes

● Bugs de produção

Page 35: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 35

Sugestões

● Nunca adicionar código de teste ao código de produção

– Não usar a lógica dos testes no sistema

Page 36: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 36

Sugestões

● Nunca adicionar código de teste ao código de produção

– Não usar a lógica dos testes no sistema● Não incluir código de testes em bibliotecas

– Se precisar, crie outra biblioteca pros testes

Page 37: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 37

Sugestões

● Nunca adicionar código de teste ao código de produção

– Não usar a lógica dos testes no sistema● Não incluir código de testes em bibliotecas

– Se precisar, crie outra biblioteca pros testes● Padronizar nomes de classes para facilitar a

identificação e utilização de scripts

– AlgumaClasseTest ou TesteDeAlgumaClasse

Page 38: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 38

Padrões de Organização

● Baterias:

– Named Test Suite

Page 39: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 39

Padrões de Organização

● Baterias:

– Named Test Suite● Classes:

– Uma classe de teste por Classe/Funcionalidade/Fixture

Page 40: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 40

Padrões de Organização

● Baterias:

– Named Test Suite● Classes:

– Uma classe de teste por Classe/Funcionalidade/Fixture

● Métodos:

– Testes parametrizados

– Superclasse de testes

– Classe/Método de ajuda para testes

Page 41: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 41

Verificações de Resultados

● Verificação de Estado

– Inspecionar o sistema para saber se o estado está correto:assertEquals(estadoEsperado, sistema.getEstado());

Page 42: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 42

Verificações de Resultados

● Verificação de Estado

● Verificação de Comportamento

– Sem estado. Usa um “espião” ou um “dublê”

Page 43: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 43

Verificações de Resultados

● Verificação de Estado

● Verificação de Comportamento

– Sem estado. Usa um “espião” ou um “dublê”

CUIDADO!Verifique a funcionalidade e NÃO a implementação.

Page 44: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 44

Verificações de Resultados

● Verificação de Estado

● Verificação de Comportamento

● Asserção personalizada

– Criar seu próprio validador

Page 45: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 45

Verificações de Resultados

● Verificação de Estado

● Verificação de Comportamento

● Asserção personalizada

● Asserção de mudanças

– Verifico que a mudança que fiz tem o efeito esperadoassertEquals(tamanhoAnterior+1, lista.size());

Page 46: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 46

Verificações de Resultados

● Verificação de Estado

● Verificação de Comportamento

● Asserção personalizada

● Asserção de mudanças

● Asserção de guarda

– Asserções para condições iniciais

Page 47: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 47

Verificações de Resultados

● Verificação de Estado

● Verificação de Comportamento

● Asserção personalizada

● Asserção de mudanças

● Asserção de guarda

● Asserção de teste inacabado

– Marca de que o teste ainda não terminoufail(“Teste não implementado”);@Ignore(“Produção ainda não está pronta”)

Page 48: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 48

Padrões de Valor

● Valores Literais

– Testes NÃO fazem contas.Informação é inserida hard-coded.

– Cuidado apenas para não tornar os testes não repetíveis

Page 49: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 49

Padrões de Valor

● Valores Literais

– Testes NÃO fazem contas.Informação é inserida hard-coded.

– Cuidado para não tornar os testes não repetíveis● Valores Derivados

– Implementar um algoritmo que gere o valor esperado se for muito complexo

– Cuidado para não ficar com uma cópia do código de produção

Page 50: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 50

Padrões de Valor

● Valor Gerado

– Gerar valores distintos a cada teste

– Útil para testes de Integração

– Cuidado para não conseguir mais repetir esse teste caso ele falhe

Page 51: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 51

Padrões de Valor

● Valor Gerado

– Gerar valores distintos a cada teste

– Útil para testes de Integração

– Cuidado para não conseguir mais repetir esse teste caso ele falhe

● Objeto Bobo

– Só para não atrapalhar

Page 52: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 52

SetUp: Zerados

● In-line set up

– Set Up é pequeno e muda para cada teste então cada teste tem o seu

Page 53: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 53

SetUp: Zerados

● In-line set up

– Set Up é pequeno e muda para cada teste então cada teste tem o seu

● Delegated set up

– SetUp distintos para cada teste num método auxiliar. Chamada explícita.

Page 54: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 54

SetUp: Zerados

● In-line set up

– Set Up é pequeno e muda para cada teste então cada teste tem o seu

● Delegated set up

– SetUp distintos para cada teste num método auxiliar. Chamada explícita.

● Implicit set up

– TestCase por Fixture

– Uso de arcabouços (frameworks)

Page 55: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 55

SetUp: Compartilhados

● Fixtures pré-montadas

● Set up preguiçoso

● Set up para suite baseada em Fixtures

● Decoradores de Set up

Page 56: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 56

Estratégias para tear down

● Tear down para coletar lixo

– Delete

– frame.cleanUp()

– System.gc()

Page 57: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 57

Estratégias para tear down

● Tear down para coletar lixo

– Delete

– frame.cleanUp()

– System.gc()● Tear down automático

– Guardo uma lista do que inseri e o tear down se vira pra tirar

Page 58: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 58

Organização de tear down

● In-line tear down

– Tear down é curto então cada teste cuida do seu

– Sempre deve ficar depois das verificações

Page 59: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 59

Organização de tear down

● In-line tear down

– Tear down é curto então cada teste cuida do seu

– Sempre deve ficar depois das verificações● Tear down implícito

– Uso de arcabouços (frameworks)

Page 60: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 60

Padrões de arquitetura testável

● Injeção de dependência

– Injeta por construtor

– Injeta via setter/variáveis públicas

Page 61: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 61

Padrões de arquitetura testável

● Injeção de dependência

● Busca de dependências (lookup)

– Teste usa um repositório de objeto

Page 62: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 62

Padrões de arquitetura testável

● Injeção de dependência

● Busca de Dependências (lookup)

● Humble Object

– Existem características que dificultam testar um objeto: quebre-o e teste a parte com lógica

Page 63: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 63

Padrões de arquitetura testável

● Injeção de dependência

● Busca de Dependências (lookup)

● Humble Object

● Anti-Padrão: Hook de teste

if(TESTANDO) { … } else { ... }

– Modifica o sistema para funcionar diferente ao executar o teste.

Page 64: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 64

Anti-padrões

● Incluir código no sistema para uso exclusivo dos testes

// Usado apenas para testes

public Sistema() {}

Page 65: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 65

Anti-padrões

● Incluir código no sistema para uso exclusivo dos testes

● Torturar o código do teste para encaixar no sistema ao invés de refatorar o sistema para permitir testes

Page 66: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 66

Anti-padrões

● Incluir código no sistema para uso exclusivo dos testes

● Torturar o código do teste para encaixar no sistema ao invés de refatorar o sistema para permitir testes

● Testar a implementação, não a funcionalidade

Page 67: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft Agilcoop 2010 67

Anti-padrões

● Incluir código no sistema para uso exclusivo dos testes

● Torturar o código do teste para encaixar no sistema ao invés de refatorar o sistema para permitir testes

● Testar a implementação, não a funcionalidade

● Qualquer outro anti-padrão de código de produção

Page 68: Padrões de Testes Automatizados - ccsl.ime.usp.brccsl.ime.usp.br/.../files/AgilCoop-Verao2010-Testes-05-Padroes.pdf · Padrões de Testes Automatizados Curso de Verão 2010 - IME/USP

Copyleft AgilCoop 2010 68

Perguntas

?Hugo Corbucci

[email protected]