Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRui Anjos Pereira Alterado mais de 7 anos atrás
1
Testes de Unidade Curso de Verão 2010 - IME/USP www.agilcoop.org.br Hugo Corbucci hugo@agilcoop.org.br
2
Copyleft AgilCoop 2010 2 Caracterização
3
Copyleft AgilCoop 2010 3 Caracterização
4
Copyleft AgilCoop 2010 4 Caracterização
5
Copyleft AgilCoop 2010 5 Caracterização
6
Copyleft AgilCoop 2010 6 Caracterização Como?
7
Copyleft AgilCoop 2010 7 Caracterização
8
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
9
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
10
Copyleft AgilCoop 2010 10 Estratégias de testes Poucos testes de unidade Muitos testes de interface
11
Copyleft AgilCoop 2010 11 Estratégias de testes Muitos testes de unidade Poucos testes de interface
12
Copyleft AgilCoop 2010 12 Estratégias de testes ou
13
Copyleft AgilCoop 2010 13 Estratégias de testes X ✓
14
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
15
Copyleft AgilCoop 2010 15 Rápidos
16
Copyleft AgilCoop 2010 16 Rápidos Quantas vezes por dia você rodaria esses testes?
17
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
18
Copyleft AgilCoop 2010 18 Rápidos ● Então não faz testes que demoram? ● Apaga os testes que demoram? ● Ignora algoritmos pesados?
19
Copyleft AgilCoop 2010 19 Rápidos ● Então não faz testes que demoram? ● Apaga os testes que demoram? ● Ignora algoritmos pesados? NÃO
20
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
21
Copyleft AgilCoop 2010 21 Como lidar com esses casos? ● Separe-os do resto! ● Suites de Teste Pastas fontes diferentes Tarefas diferentes
22
Copyleft AgilCoop 2010 22 Independentes Esses testes passam?
23
Copyleft AgilCoop 2010 23 Independentes Esses nessa ordem?
24
Copyleft AgilCoop 2010 24 Independentes ● Outros testes – Ordem de execução – Sucesso
25
Copyleft AgilCoop 2010 25 Independentes ● De outros testes – Devem funcionar em qualquer ordem de execução
26
Copyleft AgilCoop 2010 26 Independentes ● De outros testes – Devem funcionar em qualquer ordem de execução – Do sucesso dos anteriores
27
Copyleft AgilCoop 2010 27 Repetíveis O que precisa para esse teste passar?
28
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,...
29
Copyleft AgilCoop 2010 29 Repetíveis
30
Copyleft AgilCoop 2010 30 Repetíveis
31
Copyleft AgilCoop 2010 31 Repetíveis ● Cuidado com situações não-determinísticas – Aleatoriedade – Tempo – Concorrência – etc...
32
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
33
Copyleft AgilCoop 2010 33 Auto-verificantes
34
Copyleft AgilCoop 2010 34 Auto-verificantes OU
35
Copyleft AgilCoop 2010 35 Auto-verificantes OU
36
Copyleft AgilCoop 2010 36 Auto-verificantes ● Um teste tem UMA asserção Passa ou Falha ● Tem que falhar se estiver errado ● Tem que passar se estiver certo
37
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
38
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
39
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!
40
Copyleft AgilCoop 2010 40 Úteis Vale a pena testar isso?
41
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
42
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
43
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!
44
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!
45
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
46
Copyleft AgilCoop 2010 46 Ferramentas ● CxxTest (C++): http://cxxtest.tigris.org/http://cxxtest.tigris.org/ ● JUnit (Java): http://www.junit.orghttp://www.junit.org ● DUnit (Delphi): http://dunit.sourceforge.nethttp://dunit.sourceforge.net ● VBUnit (Visual Basic): http://www.vbunit.comhttp://www.vbunit.com ● TestNG (Java): http://testng.orghttp://testng.org ● RSpec (Ruby): http://rspec.info/http://rspec.info/ ● http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
47
Copyleft AgilCoop 2010 47 Perguntas ? Hugo Corbucci hugo@agilcoop.org.br
48
Copyleft AgilCoop 2010 48 Mão na massa
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.