Desvios comuns em TDD

45
ERROS COMUNS EM TEST-DRIVEN DEVELOPMENT Mauricio Aniche [email protected] @mauricioaniche Thursday, June 24, 2010

description

Apresentação sobre "Desvios comuns em TDD" na Agile Brazil 2010.

Transcript of Desvios comuns em TDD

Page 1: Desvios comuns em TDD

ERROS COMUNS EM TEST-DRIVEN DEVELOPMENT

Mauricio [email protected]

@mauricioaniche

Thursday, June 24, 2010

Page 2: Desvios comuns em TDD

DESVIOS COMUNS EM TEST-DRIVEN DEVELOPMENT

Mauricio [email protected]

@mauricioaniche

Thursday, June 24, 2010

Page 3: Desvios comuns em TDD

MAS O QUE É TDD MESMO?

Thursday, June 24, 2010

Page 4: Desvios comuns em TDD

É SOBRE TESTES?

Thursday, June 24, 2010

Page 5: Desvios comuns em TDD

Thursday, June 24, 2010

Page 6: Desvios comuns em TDD

Thursday, June 24, 2010

Page 7: Desvios comuns em TDD

Thursday, June 24, 2010

Page 8: Desvios comuns em TDD

Thursday, June 24, 2010

Page 9: Desvios comuns em TDD

NÃO!

Thursday, June 24, 2010

Page 10: Desvios comuns em TDD

É SOBRE DESIGN!

Thursday, June 24, 2010

Page 11: Desvios comuns em TDD

QUE CONFUSÃO! :-(

Thursday, June 24, 2010

Page 12: Desvios comuns em TDD

Test-driven development (TDD) is the craft of producing automated tests for production code, and using that process to drive design and programming. For every tiny bit of functionality in the production

code, you first develop a test that specifies and validates what the code will do. You then produce

exactly as much code as will enable that test to pass. Then you refactor (simplify and clarify) both the

production code and the test code.

www.agilealliance.org/programs/ roadmaps/Roadmap/tdd/tdd_index.htm

Thursday, June 24, 2010

Page 13: Desvios comuns em TDD

Thursday, June 24, 2010

Page 14: Desvios comuns em TDD

É SIMPLES!

Thursday, June 24, 2010

Page 15: Desvios comuns em TDD

MAS NÃO É FÁCIL!

Thursday, June 24, 2010

Page 16: Desvios comuns em TDD

PROGRAMADORES ÀS VEZES COMETEM DESVIOS...

Thursday, June 24, 2010

Page 17: Desvios comuns em TDD

FATORES DE INFLUÊNCIA

Thursday, June 24, 2010

Page 18: Desvios comuns em TDD

QUESTIONÁRIO

Thursday, June 24, 2010

Page 19: Desvios comuns em TDD

NÃO VER O TESTE FALHAR

Thursday, June 24, 2010

Page 20: Desvios comuns em TDD

0

13

25

38

50

Rarely

Sometimes

Regularly

Frequently

Always

Never

•55% nunca esquece ou esquece raramente de ver o teste falhar ;

•24% esquece regularmente ou frequentemente;

•4% sempre esquece;

Thursday, June 24, 2010

Page 21: Desvios comuns em TDD

ESQUECER DE REFATORAR

Thursday, June 24, 2010

Page 22: Desvios comuns em TDD

0

10

20

30

40

Never

Rarely

Sometimes

Regularly

Frequently

Always

•44% dos programadores experientes e 52% dos iniciantes cometem esse erro regularmente ou frequentemente;

•1% sempre esquece.

Thursday, June 24, 2010

Page 23: Desvios comuns em TDD

REFATORAR OUTRO TRECHO DE CÓDIGO

ENQUANTO TRABALHA EM UM TESTE

Thursday, June 24, 2010

Page 24: Desvios comuns em TDD

0

10

20

30

40

Never

Rarely

Sometimes

Regularly

Frequently

Always

•40% refatora outro trecho de código regularmente ou frequentemente;

•5% refatora o tempo todo;

•6% nunca refatora;

•38% dos experientes fazem isso regularmente ou frequentemente. No entendo, 44% nunca faz ou faz apenas raramente.

Thursday, June 24, 2010

Page 25: Desvios comuns em TDD

NÃO COMEÇAR PELO TESTE MAIS SIMPLES

POSSÍVEL

Thursday, June 24, 2010

Page 26: Desvios comuns em TDD

0

13

25

38

50

Never

Rarely

Sometimes

Regularly

Frequently

Always

•33% não começam pelo teste mais simples possível regularmente ou frequentemente;

•2% sempre cometem o erro;

•10% nunca cometem.

Thursday, June 24, 2010

Page 27: Desvios comuns em TDD

RODAR APENAS O TESTE CORRENTE

Thursday, June 24, 2010

Page 28: Desvios comuns em TDD

•16% rodam apenas o teste corrente regularmente ou frequentemente;

•2% cometem o erro o tempo todo;

•25% nunca esquecem de rodar a suíte inteira;

•Programadores experientes cometem esse erro mais frequentemente do que os iniciantes (21% contra 15%).

0

10

20

30

40

Never

Rarely

Sometimes

Regularly

Frequently

Always

Thursday, June 24, 2010

Page 29: Desvios comuns em TDD

ESCREVER TESTESCOMPLEXOS

Thursday, June 24, 2010

Page 30: Desvios comuns em TDD

•50% escrevem cenários complexos regularmente ou frequentemente;

•4% escreve o tempo todo;

•3% nunca escreve;

•35% dos programadores experientes e 53% dos iniciantes fazem isso regularmente ou frequentemente;0

10

20

30

40

Never

Rarely

Sometimes

Regularly

Frequently

Always

Thursday, June 24, 2010

Page 31: Desvios comuns em TDD

NÃO IMPLEMENTAR O CÓDIGO MAIS SIMPLES

QUE FAÇA O TESTE PASSAR

Thursday, June 24, 2010

Page 32: Desvios comuns em TDD

•35% dos iniciantes e 17% dos experientes tendem a não implementar o código mais simples que faça o teste passar regularmente ou frequentemente;

0

13

25

38

50

Never

Rarely

Sometimes

Regularly

Frequently

Always

Thursday, June 24, 2010

Page 33: Desvios comuns em TDD

NOMES NÃO CLAROSPARA OS TESTES

Thursday, June 24, 2010

Page 34: Desvios comuns em TDD

•32% usam nomes não claros regularmente ou frequentemente;

•1% usam nomes não claros o tempo todo;

•14% nunca usam e 45% nunca usa ou usa raramente.

30

0

10

20

30

40

Never

Rarely

Sometimes

Regularly

Frequently

Always

Thursday, June 24, 2010

Page 35: Desvios comuns em TDD

NÃO REFATORAR CÓDIGO DE TESTE

Thursday, June 24, 2010

Page 36: Desvios comuns em TDD

•23% não refatora o código de teste regularmente ou frequentemente;

•1% sempre esquece de refatorar ;

•16% nunca comete o erro;

32

0

13

25

38

50

Never

Rarely

Sometimes

Regularly

Frequently

Always

Thursday, June 24, 2010

Page 37: Desvios comuns em TDD

DESVIOS MAIS COMUNSDesvio Média/Desvio Padrão Correlação de Pearson Frequente ou sempre

Escrever testes complexos 2.58 / 1.21 -0.1 26.61%

Esquecer de refatorar 2.37 / 1.17 -0.03 19.72%

Refatorar outro trecho de código 2.34 / 1.36 -0.13 23.85%

Não comecar pelo teste mais simples possível 2.00 / 1.28 -0.09 15.14%

Não implementar o código mais simples que faz o teste passar 1.90 / 1.19 -0.24 11.01%

Nomes de testes não claros 1.84 / 1.25 -0.02 11.01%

Não ver o teste falhar 1.75 / 1.35 -0.22 14.22%

Não refatorar o código de teste 1.67 / 1.19 -0.21 8.72%

Rodar apenas o teste corrente 1.40 / 1.20 -0.01 5.96%

33

Thursday, June 24, 2010

Page 38: Desvios comuns em TDD

34

PRECISO SEGUIR A RISCAO TEMPO TODO?

Thursday, June 24, 2010

Page 39: Desvios comuns em TDD

35

O QUE ELES PENSAM SOBRE TDD?

Thursday, June 24, 2010

Page 40: Desvios comuns em TDD

36

PROBLEMASA VALIDAR

Thursday, June 24, 2010

Page 41: Desvios comuns em TDD

37

CONCLUSÃO

Thursday, June 24, 2010

Page 42: Desvios comuns em TDD

38

TRABALHOS FUTUROS

Thursday, June 24, 2010

Page 43: Desvios comuns em TDD

39

•O artigo foi publicado no 1st International Workshop on Test-Driven Development e pode ser encontrado na biblioteca da IEEE Digital.

•Ou através da página dedicada ao trabalho em http://www.ime.usp.br/~aniche/tdd-survey

AONDE POSSO LER MAIS SOBRE ISSO?

Thursday, June 24, 2010

Page 44: Desvios comuns em TDD

40

GOSTOU E QUER AJUDAR?

Thursday, June 24, 2010