Desvios comuns em TDD

Post on 24-May-2015

3,048 views 2 download

Tags:

description

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

transcript

ERROS COMUNS EM TEST-DRIVEN DEVELOPMENT

Mauricio Anichemauricio@aniche.com.br

@mauricioaniche

Thursday, June 24, 2010

DESVIOS COMUNS EM TEST-DRIVEN DEVELOPMENT

Mauricio Anichemauricio@aniche.com.br

@mauricioaniche

Thursday, June 24, 2010

MAS O QUE É TDD MESMO?

Thursday, June 24, 2010

É SOBRE TESTES?

Thursday, June 24, 2010

Thursday, June 24, 2010

Thursday, June 24, 2010

Thursday, June 24, 2010

Thursday, June 24, 2010

NÃO!

Thursday, June 24, 2010

É SOBRE DESIGN!

Thursday, June 24, 2010

QUE CONFUSÃO! :-(

Thursday, June 24, 2010

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

Thursday, June 24, 2010

É SIMPLES!

Thursday, June 24, 2010

MAS NÃO É FÁCIL!

Thursday, June 24, 2010

PROGRAMADORES ÀS VEZES COMETEM DESVIOS...

Thursday, June 24, 2010

FATORES DE INFLUÊNCIA

Thursday, June 24, 2010

QUESTIONÁRIO

Thursday, June 24, 2010

NÃO VER O TESTE FALHAR

Thursday, June 24, 2010

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

ESQUECER DE REFATORAR

Thursday, June 24, 2010

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

REFATORAR OUTRO TRECHO DE CÓDIGO

ENQUANTO TRABALHA EM UM TESTE

Thursday, June 24, 2010

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

NÃO COMEÇAR PELO TESTE MAIS SIMPLES

POSSÍVEL

Thursday, June 24, 2010

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

RODAR APENAS O TESTE CORRENTE

Thursday, June 24, 2010

•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

ESCREVER TESTESCOMPLEXOS

Thursday, June 24, 2010

•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

NÃO IMPLEMENTAR O CÓDIGO MAIS SIMPLES

QUE FAÇA O TESTE PASSAR

Thursday, June 24, 2010

•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

NOMES NÃO CLAROSPARA OS TESTES

Thursday, June 24, 2010

•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

NÃO REFATORAR CÓDIGO DE TESTE

Thursday, June 24, 2010

•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

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

34

PRECISO SEGUIR A RISCAO TEMPO TODO?

Thursday, June 24, 2010

35

O QUE ELES PENSAM SOBRE TDD?

Thursday, June 24, 2010

36

PROBLEMASA VALIDAR

Thursday, June 24, 2010

37

CONCLUSÃO

Thursday, June 24, 2010

38

TRABALHOS FUTUROS

Thursday, June 24, 2010

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

40

GOSTOU E QUER AJUDAR?

Thursday, June 24, 2010

41

@mauricioanichemauricio@aniche.com.br

Thursday, June 24, 2010