Mantendo a Qualidade dos Códigos de Teste
-
Upload
mauricioszabo -
Category
Technology
-
view
1.040 -
download
0
description
Transcript of Mantendo a Qualidade dos Códigos de Teste
- 1. AgileBrazil 2011 Melhorando a Qualidade dos Cdigos de Teste Maurcio Eduardo Szabo [email_address] @mauricio_szabo http://mauricioszabo.wordpress.com http://github.com/mauricioszabo/AgileBrazil2011
2. about:me
- Programador Ruby, Java, Python, Scala, C/C++, etc...
3. Scrum Master 4. Test-Addicted 5. Clean-Code Addicted 6. Enfim... 7. Intro
- Agilidade, mudanas contnuas, requisitos mutantes
- Garantia de estabilidade testes
8. Dedo duro - sempre saber o estado de seu sistema 9. Confiabilidade no cdigo, acabar com o medo de mudar 10. Requisitos mudam == testes mudam 11. Intro Testes se Pagam
- Testes demoram para ser escritos?
12. Mudana - Exemplo
- Parsing de HTML
- Quero uma lista de todos os homens na pgina
13. Para saber se o Ariovaldo est aparecendo na listagem de homens 14. Minha Abordagem: BDD
- Testes x Comportamento
- Deixa eu ver se isso funciona...
- assert(this, works());
Deixa eu ver se est fazendo isso mesmo...
- assertThat(this, isDoing(right));
Assert x Should
- (Assert x Matcher)
Big Picture Small Picture Smaller Picture Unit Test 15. Primeiros Exemplos
- Situao: elemento est verde?
16. Mudana de Estilo
- Situao: salrio vlido deve calcular IRPF
17. (Evitar Cometer) Erros Comuns 18. JAMAIS!!! 19. Oops... Certos testes no dizem NADA Certos testes dizem DEMAIS 20. Framework de Testes O que usar, como usar,por que usar? 21. Framework de Testes
- Test/Unit, JBehave, RSpec, ScalaTest, JUnit, Jasminne, JSpec...
22. Mocks: Mocha, FlexMock, Mockito, JMock, etc... 23. Escolha corretamente: Um framework de testes:
- Deve ser extensvel
24. Deve ser flexvel Um framework de mocks:
- Deve refletir a forma como voc pensa
25. Framework de Testes 26. Codebase
- Comparao entre cdigo e linhas de teste 1:1 (se possvel)
27. Testes devem crescer junto com seu cdigo
- Classes auxiliares, mtodos, custom matchers, etc
Conforme seu projeto vai crescendo, a dificuldade de escrever novos testes deve ficar constante ou diminuir! 28. Mocks
- Expectations: antes do teste, o define-se o que esperamos que o mock receba
- (Mocha, RSpec, FlexMock, JMock)
Assertions: depois do teste, vemos o que o mock recebeu
- (Mockito)
29. Eu uso...
- Para Ruby: RSpec, e s vezes, Mocha
30. Para Scala: ScalaTest com Mockito 31. Para Java: JUnit (com os Hamcrest matchers) e Mockito 32. Para JavaScript: Jasminne 33. Primeiro, resolva o problema
- Represente! A vida um teatro!
34. No escreva NADA antes de resolver o problema 35. Prottipos so vlidos, mas devem ser descartados 36. Ento, escreva o cdigo
- Teste vem PRIMEIRO
37. Cdigo vem DEPOIS 38. Somente um teste deve falhar por vez
- Quer dizer...
39. Somente um teste falhando?
- Mini-integraes
40. Ambiente Isolado
- Todo teste, no BDD, um cenrio
41. Pensar num teatro:
- Montar o cenrio (Setup)
42. Apresentao (para o cdigo) 43. Aceitao do pblico 44. Desmontar tudo Pea foi um fracasso: ainda assim, desmontar tudo
- TearDown
Infra-Estrutura do Teatro Setup Apresentao Aceitao 45. Preparao no pode ficar implcita
- (Muito comum no RSpec / Ruby)
46. Mas tambm, nada de explcita
- (Comum com situaes que exigem muito setup)
47. Meio-Termo
- Mtodos que ajudam a construir o cenrio ideal
48. Mtricas (LOC)
- Setup (montar o cenrio):
- Ideal: de 1 a 4 linhas
49. Ruim: de 5 a 7 linhas 50. Maior que 7: Rever a preparao do Cenrio Chamada de mtodo:
- Ideal: 1 linha
51. Pssimo: maior que 2 linhas JAMAIS:
- Use IF, CASE, ou qualquer condicional!
52. Estilo de Teste Como fazer seu teste ter menos cara de cdigo e mais cara de texto. 53. Bee English
- D sentido para as coisas!
54. Bee English
- Falta de Sentido: que que isso fazia mesmo???
55. Bee English
- Pense em como voc descreveria aquele pedao
56. Adapte o texto at chegar linguagem de teste 57. Bee English
- Monte sua histria baseando-se na linguagem
58. Uma ltima Coisa Mocks e Stubs 59. Stub!
- Stub como forma de controle
60. Programao Funcional Stub em algum lugar aqui dentro... 61. Devil's Advocate
- Mas... e com a correria?
- Mas... voc no demora mais pra fazer isso?
Mas... a empresa (coloque aqui sua empresa favorita) no usa isso... 62. Mas... meu cdigo sequer tem testes, como eu vou aplicar isso? 63. That's It
- Perguntas?
64. Idias? 65. Contato:
- [email_address]
66. @mauricio_szabo 67. http://mauricioszabo.wordpress.com 68. http://github.com/mauricioszabo/AgileBrazil2011