testes de unidade - ccslccsl.ime.usp.br/agilcoop/files/agilcoop-verao2010-testes-04... · na...
TRANSCRIPT
![Page 2: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/2.jpg)
Copyleft AgilCoop 2010 2
Caracterização
![Page 3: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/3.jpg)
Copyleft AgilCoop 2010 3
Caracterização
![Page 4: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/4.jpg)
Copyleft AgilCoop 2010 4
Caracterização
![Page 5: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/5.jpg)
Copyleft AgilCoop 2010 5
Caracterização
![Page 6: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/6.jpg)
Copyleft AgilCoop 2010 6
Caracterização
Como?
![Page 7: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/7.jpg)
Copyleft AgilCoop 2010 7
Caracterização
![Page 8: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/8.jpg)
Copyleft AgilCoop 2010 8
Ou seja....
● Testa uma Classe/Módulo, cada método/função● Foco: Funcionalidade● Baixo nível, básico mas muito importante● Preciso: aponta o caso específico que dá
problema● Sólido e independente
![Page 9: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/9.jpg)
Copyleft AgilCoop 2010 9
Estratégias de testes
Testes de interface
Testes de integração, aceitação, história, etc.
Testes de unidade/micro/isolação
![Page 10: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/10.jpg)
Copyleft AgilCoop 2010 10
Estratégias de testes
Poucos testes de unidade
Muitos testes de interface
![Page 11: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/11.jpg)
Copyleft AgilCoop 2010 11
Estratégias de testes
Muitos testes de unidade
Poucos testes de interface
![Page 12: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/12.jpg)
Copyleft AgilCoop 2010 12
Estratégias de testes
ou
![Page 13: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/13.jpg)
Copyleft AgilCoop 2010 13
Estratégias de testes
X ✓
![Page 14: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/14.jpg)
Copyleft AgilCoop 2010 14
Objetivos para Testes de Unidade
F ast (Rápidos)
I ndependent (Independentes)
R epeatable (Repetíveis)
S elf-verifying (Auto-verificantes)
T imely (Em tempo)
– Clean Code
![Page 15: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/15.jpg)
Copyleft AgilCoop 2010 15
Rápidos
![Page 16: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/16.jpg)
Copyleft AgilCoop 2010 16
Rápidos
Quantas vezes por dia você rodaria esses testes?
![Page 17: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/17.jpg)
Copyleft AgilCoop 2010 17
Rápidos
● Serão numerosos e você não pode esperar o dia todo para eles rodarem
● Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças
![Page 18: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/18.jpg)
Copyleft AgilCoop 2010 18
Rápidos
● Então não faz testes que demoram?
● Apaga os testes que demoram?
● Ignora algoritmos pesados?
![Page 19: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/19.jpg)
Copyleft AgilCoop 2010 19
Rápidos
● Então não faz testes que demoram?
● Apaga os testes que demoram?
● Ignora algoritmos pesados?
NÃO
![Page 20: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/20.jpg)
Copyleft AgilCoop 2010 20
O que pode tornar um teste lento?
● Algoritmos pesados:– Matemática
– Bioinformática
– Computação gráfica
– Otimização
● Alta complexidade computacional● Algoritmos concorrentes● Testes mini-integrados – não isolados
![Page 21: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/21.jpg)
Copyleft AgilCoop 2010 21
Como lidar com esses casos?
● Separe-os do resto!
● Suites de TestePastas fontes diferentesTarefas diferentes
![Page 22: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/22.jpg)
Copyleft AgilCoop 2010 22
Independentes
Esses testes passam?
![Page 23: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/23.jpg)
Copyleft AgilCoop 2010 23
Independentes
Esses nessa ordem?
![Page 24: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/24.jpg)
Copyleft AgilCoop 2010 24
Independentes
● Outros testes– Ordem de execução
– Sucesso
![Page 25: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/25.jpg)
Copyleft AgilCoop 2010 25
Independentes
● De outros testes– Devem funcionar em qualquer ordem de execução
![Page 26: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/26.jpg)
Copyleft AgilCoop 2010 26
Independentes
● De outros testes– Devem funcionar em qualquer ordem de execução
– Do sucesso dos anteriores
![Page 27: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/27.jpg)
Copyleft AgilCoop 2010 27
Repetíveis
O que precisa para esse teste passar?
![Page 28: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/28.jpg)
Copyleft AgilCoop 2010 28
Repetíveis
● Em vários ambientes– Com ou sem conexão externa: http, ftp, smtp, ...
– Em produção, homologação ou desenvolvimento
– Num servidor, no seu laptop, no micro de casa, ...
![Page 29: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/29.jpg)
Copyleft AgilCoop 2010 29
Repetíveis
![Page 30: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/30.jpg)
Copyleft AgilCoop 2010 30
Repetíveis
![Page 31: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/31.jpg)
Copyleft AgilCoop 2010 31
Repetíveis
● Cuidado com situações não-determinísticas– Aleatoriedade
– Tempo
– Concorrência
– etc...
![Page 32: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/32.jpg)
Copyleft AgilCoop 2010 32
Repetíveis
● Várias execuções dos testes deveriam ser idênticas
● Testes intermitentes são evidência de problema
● Isole a lógica e crie dublês
![Page 33: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/33.jpg)
Copyleft AgilCoop 2010 33
Auto-verificantes
![Page 34: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/34.jpg)
Copyleft AgilCoop 2010 34
Auto-verificantes
OU
![Page 35: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/35.jpg)
Copyleft AgilCoop 2010 35
Auto-verificantes
OU
![Page 36: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/36.jpg)
Copyleft AgilCoop 2010 36
Auto-verificantes
● Um teste tem UMA asserçãoPassa ou Falha
● Tem que falhar se estiver errado
● Tem que passar se estiver certo
![Page 37: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/37.jpg)
Copyleft AgilCoop 2010 37
Em tempo
● Muito antes e provavelmente precisará ser reescrito
● Muito depois e provavelmente nunca será escrito
● Junto com o código de produção– Antes, se possível em TDD
![Page 38: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/38.jpg)
Copyleft AgilCoop 2010 38
Em tempo
● E se já tiver código e não tiver testes ou estiverem incompletos?
● Para entender o sistema (testes de estudo)
● Antes de refatorar (não introduzir erros)
● Antes de mudar um comportamento
![Page 39: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/39.jpg)
Copyleft AgilCoop 2010 39
Objetivos para Testes de Unidade
F ast (Rápidos)
I ndependent (Independentes)
R epeatable (Repetíveis)
S elf-verifying (Auto-verificantes)
T imely (Em tempo)
– Clean Code
Além disso: Úteis!
![Page 40: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/40.jpg)
Copyleft AgilCoop 2010 40
Úteis
Vale a pena testar isso?
![Page 41: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/41.jpg)
Copyleft AgilCoop 2010 41
Úteis
● Motivos para escrever um teste– Precisa mudar algo no código de produção
– Descobriu um bug
– Quer documentar um comportamento não evidente
– Está em dúvida sobre o funcionamento
![Page 42: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/42.jpg)
Copyleft AgilCoop 2010 42
Casos especiais em O.O.
● Classes abstratas– Implementação simples pro teste
● Métodos de classe
● Protegidos => Teste no mesmo pacote
● Singletons
![Page 43: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/43.jpg)
Copyleft AgilCoop 2010 43
Sinais de problemas
● Vontade de testar– Classes Anônimas
– Classes Privadas
– Métodos Privados
● Sinal de que essas coisa auxiliares tem lógicas complexas demais. Refatore!
![Page 44: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/44.jpg)
Copyleft AgilCoop 2010 44
Dicas
● Verifique valores limites– Em loops (primeiro valor, último valor)
– Em comparações (o menor de um tipo contra maior de outro)
● Identifique e agrupe conjuntos de teste com um mesmo objetivo
● Teste que tudo dá certo com coisas certas.E que dá errado com coisas erradas!
![Page 45: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/45.jpg)
Copyleft AgilCoop 2010 45
Dicas
● Listas: cheias, vazias, nulas● String: Vazias, nulas, grandes, caracteres
estranhos● Números: 0, negativos, positivos, grandes,
pequenos, valores máximos e mínimos● Expressões regulares: sequências repetidas,
acentos, caracteres estranhos, pontuações
![Page 46: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/46.jpg)
Copyleft AgilCoop 2010 46
Ferramentas
● CxxTest (C++): http://cxxtest.tigris.org/● JUnit (Java): http://www.junit.org● DUnit (Delphi): http://dunit.sourceforge.net● VBUnit (Visual Basic): http://www.vbunit.com● TestNG (Java): http://testng.org● RSpec (Ruby): http://rspec.info/
● http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
![Page 48: Testes de Unidade - CCSLccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao2010-Testes-04... · Na prática, há integração de unidades e os testes proveem feedback sobre as mudanças](https://reader031.vdocuments.site/reader031/viewer/2022022110/5c0c6fa009d3f254238c1494/html5/thumbnails/48.jpg)
Copyleft AgilCoop 2010 48
Mão na massa