A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Testes de Unidade Curso de Verão 2010 - IME/USP Hugo Corbucci

Apresentações semelhantes


Apresentação em tema: "Testes de Unidade Curso de Verão 2010 - IME/USP Hugo Corbucci"— Transcrição da apresentação:

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


Carregar ppt "Testes de Unidade Curso de Verão 2010 - IME/USP Hugo Corbucci"

Apresentações semelhantes


Anúncios Google