Your SlideShare is downloading. ×
0
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mantendo a Qualidade dos Códigos de Teste

1,037

Published on

Apresentação feita no Agile Brazil 2011, em Fortaleza, por Maurício Eduardo Szabo …

Apresentação feita no Agile Brazil 2011, em Fortaleza, por Maurício Eduardo Szabo

Recomendo baixar a apresentação, a versão do slideshare não apresenta algumas animações que são essenciais para o entendimento

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
1,037
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo Szabo [email_address] @mauricio_szabo http://mauricioszabo.wordpress.com http://github.com/mauricioszabo/AgileBrazil2011
  • 2. about:me <ul><li>Programador Ruby, Java, Python, Scala, C/C++, etc...
  • 3. Scrum Master
  • 4. Test-Addicted
  • 5. Clean-Code Addicted
  • 6. Enfim... </li></ul>
  • 7. Intro <ul><li>Agilidade, mudanças contínuas, requisitos mutantes </li><ul><li>Garantia de estabilidade – testes
  • 8. ”Dedo duro” - sempre saber o estado de seu sistema
  • 9. Confiabilidade no código, acabar com o ”medo de mudar”
  • 10. Requisitos mudam == testes mudam </li></ul></ul>
  • 11. Intro – Testes se Pagam <ul><li>Testes demoram para ser escritos? </li></ul>
  • 12. Mudança - Exemplo <ul><li>Parsing de HTML </li><ul><li>Quero uma lista de todos os homens na página
  • 13. Para saber se o Ariovaldo está aparecendo na listagem de homens </li></ul></ul>
  • 14. Minha Abordagem: BDD <ul><li>Testes x Comportamento </li><ul><li>Deixa eu ver se isso funciona... </li><ul><li>assert(this, works()); </li></ul><li>Deixa eu ver se está fazendo isso mesmo... </li><ul><li>assertThat(this, isDoing(right)); </li></ul></ul><li>Assert x Should </li><ul><li>(Assert x Matcher) </li></ul><li>Big Picture – Small Picture – Smaller Picture – Unit Test </li></ul>
  • 15. Primeiros Exemplos <ul><li>Situação: elemento está verde? </li></ul>
  • 16. Mudança de ”Estilo” <ul><li>Situação: salário válido deve calcular IRPF </li></ul>
  • 17. (Evitar Cometer) Erros Comuns
  • 18. JAMAIS!!!
  • 19. Oops... Certos testes não dizem NADA Certos testes dizem DEMAIS
  • 20. Framework de Testes O que usar, como usar, por que usar?
  • 21. Framework de Testes <ul><li>Test/Unit, JBehave, RSpec, ScalaTest, JUnit, Jasminne, JSpec...
  • 22. Mocks: Mocha, FlexMock, Mockito, JMock, etc...
  • 23. Escolha corretamente: Um framework de testes: </li><ul><li>Deve ser extensível
  • 24. Deve ser flexível </li></ul><li>Um framework de mocks: </li><ul><li>Deve refletir a forma como você pensa </li></ul></ul>
  • 25. Framework de Testes
  • 26. Codebase <ul><li>Comparação entre código e linhas de teste 1:1 (se possível)
  • 27. Testes devem crescer junto com seu código </li><ul><li>Classes auxiliares, métodos, custom matchers, etc </li></ul><li>Conforme seu projeto vai crescendo, a dificuldade de escrever novos testes deve ficar constante ou diminuir! </li></ul>
  • 28. Mocks <ul><li>Expectations: antes do teste, o define-se o que esperamos que o mock receba </li><ul><li>(Mocha, RSpec, FlexMock, JMock) </li></ul><li>Assertions: depois do teste, vemos o que o mock recebeu </li><ul><li>(Mockito) </li></ul></ul>
  • 29. Eu uso... <ul><li>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 </li></ul>
  • 33. Primeiro, resolva o problema <ul><li>Represente! A vida é um teatro!
  • 34. Não escreva NADA antes de resolver o problema
  • 35. Protótipos são válidos, mas devem ser descartados </li></ul>
  • 36. Então, escreva o código <ul><li>Teste vem PRIMEIRO
  • 37. Código vem DEPOIS
  • 38. Somente um teste deve falhar por vez </li><ul><li>Quer dizer... </li></ul></ul>
  • 39. Somente um teste falhando? <ul><li>Mini-integrações </li></ul>
  • 40. Ambiente Isolado <ul><li>Todo teste, no BDD, é um cenário
  • 41. Pensar num teatro: </li><ul><li>Montar o cenário (Setup)
  • 42. Apresentação (para o código)
  • 43. Aceitação do público
  • 44. Desmontar tudo </li></ul><li>Peça foi um fracasso: ainda assim, desmontar tudo </li><ul><li>TearDown </li></ul></ul>Infra-Estrutura do Teatro Setup Apresentação Aceitação
  • 45. Preparação não pode ficar implícita <ul><li>(Muito comum no RSpec / Ruby) </li></ul>
  • 46. Mas também, nada de explícita <ul><li>(Comum com situações que exigem muito ”setup”) </li></ul>
  • 47. Meio-Termo <ul><li>Métodos que ajudam a construir o cenário ideal </li></ul>
  • 48. Métricas (LOC) <ul><li>Setup (montar o cenário): </li><ul><li>Ideal: de 1 a 4 linhas
  • 49. Ruim: de 5 a 7 linhas
  • 50. Maior que 7: Rever a preparação do Cenário </li></ul><li>Chamada de método: </li><ul><li>Ideal: 1 linha
  • 51. Péssimo: maior que 2 linhas </li></ul><li>JAMAIS: </li><ul><li>Use IF, CASE, ou qualquer condicional! </li></ul></ul>
  • 52. Estilo de Teste Como fazer seu teste ter menos cara de código e mais cara de texto.
  • 53. Bee English <ul><li>Dê sentido para as coisas! </li></ul>
  • 54. Bee English <ul><li>Falta de Sentido: ”que é que isso fazia mesmo???” </li></ul>
  • 55. Bee English <ul><li>Pense em como você descreveria aquele pedaço
  • 56. Adapte o texto até chegar à linguagem de teste </li></ul>
  • 57. Bee English <ul><li>Monte sua ”história” baseando-se na linguagem </li></ul>
  • 58. Uma Última Coisa Mocks e Stubs
  • 59. Stub! <ul><li>Stub como forma de ”controle”
  • 60. Programação Funcional </li></ul>Stub em algum lugar aqui dentro...
  • 61. Devil&apos;s Advocate <ul><li>Mas... e com a correria? </li><ul><li>Mas... você não demora mais pra fazer isso? </li></ul><li>Mas... a empresa (coloque aqui sua empresa favorita) não usa isso...
  • 62. Mas... meu código sequer tem testes, como eu vou aplicar isso? </li></ul>
  • 63. That&apos;s It <ul><li>Perguntas?
  • 64. Idéias?
  • 65. Contato: </li><ul><li>[email_address]
  • 66. @mauricio_szabo
  • 67. http://mauricioszabo.wordpress.com
  • 68. http://github.com/mauricioszabo/AgileBrazil2011 </li></ul></ul>

×