Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo Szabo [email_address] @mauricio_szabo http:/...
about:me <ul><li>Programador Ruby, Java, Python, Scala, C/C++, etc...
Scrum Master
Test-Addicted
Clean-Code Addicted
Enfim... </li></ul>
Intro <ul><li>Agilidade, mudanças contínuas, requisitos mutantes </li><ul><li>Garantia de estabilidade – testes
”Dedo duro” - sempre saber o estado de seu sistema
Confiabilidade no código, acabar com o ”medo de mudar”
Requisitos mudam == testes mudam </li></ul></ul>
Intro – Testes se Pagam <ul><li>Testes demoram para ser escritos? </li></ul>
Mudança - Exemplo <ul><li>Parsing de HTML </li><ul><li>Quero uma lista de todos os homens na página
Para saber se o Ariovaldo está aparecendo na listagem de homens </li></ul></ul>
Minha Abordagem: BDD <ul><li>Testes x Comportamento </li><ul><li>Deixa eu ver se isso funciona... </li><ul><li>assert(this...
Primeiros Exemplos <ul><li>Situação: elemento está verde? </li></ul>
Mudança de ”Estilo” <ul><li>Situação: salário válido deve calcular IRPF </li></ul>
(Evitar Cometer) Erros Comuns
JAMAIS!!!
Oops... Certos testes não dizem NADA Certos testes dizem DEMAIS
Framework de Testes O que usar, como usar,  por que usar?
Framework de Testes <ul><li>Test/Unit, JBehave, RSpec, ScalaTest, JUnit, Jasminne, JSpec...
Mocks: Mocha, FlexMock, Mockito, JMock, etc...
Escolha corretamente: Um framework de testes: </li><ul><li>Deve ser extensível
Deve ser flexível </li></ul><li>Um framework de mocks: </li><ul><li>Deve refletir a forma como você pensa </li></ul></ul>
Framework de Testes
Codebase <ul><li>Comparação entre código e linhas de teste 1:1 (se possível)
Testes devem crescer junto com seu código </li><ul><li>Classes auxiliares, métodos, custom matchers, etc </li></ul><li>Con...
Mocks <ul><li>Expectations: antes do teste, o define-se o que esperamos que o mock receba </li><ul><li>(Mocha, RSpec, Flex...
Eu uso... <ul><li>Para Ruby: RSpec, e às vezes, Mocha
Para Scala: ScalaTest com Mockito
Para Java: JUnit (com os Hamcrest matchers) e Mockito
Para JavaScript: Jasminne </li></ul>
Primeiro, resolva o problema <ul><li>Represente! A vida é um teatro!
Não escreva NADA antes de resolver o problema
Upcoming SlideShare
Loading in …5
×

of

Mantendo a Qualidade dos Códigos de Teste Slide 1 Mantendo a Qualidade dos Códigos de Teste Slide 2 Mantendo a Qualidade dos Códigos de Teste Slide 3 Mantendo a Qualidade dos Códigos de Teste Slide 4 Mantendo a Qualidade dos Códigos de Teste Slide 5 Mantendo a Qualidade dos Códigos de Teste Slide 6 Mantendo a Qualidade dos Códigos de Teste Slide 7 Mantendo a Qualidade dos Códigos de Teste Slide 8 Mantendo a Qualidade dos Códigos de Teste Slide 9 Mantendo a Qualidade dos Códigos de Teste Slide 10 Mantendo a Qualidade dos Códigos de Teste Slide 11 Mantendo a Qualidade dos Códigos de Teste Slide 12 Mantendo a Qualidade dos Códigos de Teste Slide 13 Mantendo a Qualidade dos Códigos de Teste Slide 14 Mantendo a Qualidade dos Códigos de Teste Slide 15 Mantendo a Qualidade dos Códigos de Teste Slide 16 Mantendo a Qualidade dos Códigos de Teste Slide 17 Mantendo a Qualidade dos Códigos de Teste Slide 18 Mantendo a Qualidade dos Códigos de Teste Slide 19 Mantendo a Qualidade dos Códigos de Teste Slide 20 Mantendo a Qualidade dos Códigos de Teste Slide 21 Mantendo a Qualidade dos Códigos de Teste Slide 22 Mantendo a Qualidade dos Códigos de Teste Slide 23 Mantendo a Qualidade dos Códigos de Teste Slide 24 Mantendo a Qualidade dos Códigos de Teste Slide 25 Mantendo a Qualidade dos Códigos de Teste Slide 26 Mantendo a Qualidade dos Códigos de Teste Slide 27 Mantendo a Qualidade dos Códigos de Teste Slide 28 Mantendo a Qualidade dos Códigos de Teste Slide 29 Mantendo a Qualidade dos Códigos de Teste Slide 30 Mantendo a Qualidade dos Códigos de Teste Slide 31 Mantendo a Qualidade dos Códigos de Teste Slide 32 Mantendo a Qualidade dos Códigos de Teste Slide 33 Mantendo a Qualidade dos Códigos de Teste Slide 34
Upcoming SlideShare
Scala e JRuby
Next
Download to read offline and view in fullscreen.

1 Like

Share

Download to read offline

Mantendo a Qualidade dos Códigos de Teste

Download to read offline

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

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Mantendo a Qualidade dos Códigos de Teste

  1. 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. 2. about:me <ul><li>Programador Ruby, Java, Python, Scala, C/C++, etc...
  3. 3. Scrum Master
  4. 4. Test-Addicted
  5. 5. Clean-Code Addicted
  6. 6. Enfim... </li></ul>
  7. 7. Intro <ul><li>Agilidade, mudanças contínuas, requisitos mutantes </li><ul><li>Garantia de estabilidade – testes
  8. 8. ”Dedo duro” - sempre saber o estado de seu sistema
  9. 9. Confiabilidade no código, acabar com o ”medo de mudar”
  10. 10. Requisitos mudam == testes mudam </li></ul></ul>
  11. 11. Intro – Testes se Pagam <ul><li>Testes demoram para ser escritos? </li></ul>
  12. 12. Mudança - Exemplo <ul><li>Parsing de HTML </li><ul><li>Quero uma lista de todos os homens na página
  13. 13. Para saber se o Ariovaldo está aparecendo na listagem de homens </li></ul></ul>
  14. 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. 15. Primeiros Exemplos <ul><li>Situação: elemento está verde? </li></ul>
  16. 16. Mudança de ”Estilo” <ul><li>Situação: salário válido deve calcular IRPF </li></ul>
  17. 17. (Evitar Cometer) Erros Comuns
  18. 18. JAMAIS!!!
  19. 19. Oops... Certos testes não dizem NADA Certos testes dizem DEMAIS
  20. 20. Framework de Testes O que usar, como usar, por que usar?
  21. 21. Framework de Testes <ul><li>Test/Unit, JBehave, RSpec, ScalaTest, JUnit, Jasminne, JSpec...
  22. 22. Mocks: Mocha, FlexMock, Mockito, JMock, etc...
  23. 23. Escolha corretamente: Um framework de testes: </li><ul><li>Deve ser extensível
  24. 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. 25. Framework de Testes
  26. 26. Codebase <ul><li>Comparação entre código e linhas de teste 1:1 (se possível)
  27. 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. 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. 29. Eu uso... <ul><li>Para Ruby: RSpec, e às vezes, Mocha
  30. 30. Para Scala: ScalaTest com Mockito
  31. 31. Para Java: JUnit (com os Hamcrest matchers) e Mockito
  32. 32. Para JavaScript: Jasminne </li></ul>
  33. 33. Primeiro, resolva o problema <ul><li>Represente! A vida é um teatro!
  34. 34. Não escreva NADA antes de resolver o problema
  35. 35. Protótipos são válidos, mas devem ser descartados </li></ul>
  36. 36. Então, escreva o código <ul><li>Teste vem PRIMEIRO
  37. 37. Código vem DEPOIS
  38. 38. Somente um teste deve falhar por vez </li><ul><li>Quer dizer... </li></ul></ul>
  39. 39. Somente um teste falhando? <ul><li>Mini-integrações </li></ul>
  40. 40. Ambiente Isolado <ul><li>Todo teste, no BDD, é um cenário
  41. 41. Pensar num teatro: </li><ul><li>Montar o cenário (Setup)
  42. 42. Apresentação (para o código)
  43. 43. Aceitação do público
  44. 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. 45. Preparação não pode ficar implícita <ul><li>(Muito comum no RSpec / Ruby) </li></ul>
  46. 46. Mas também, nada de explícita <ul><li>(Comum com situações que exigem muito ”setup”) </li></ul>
  47. 47. Meio-Termo <ul><li>Métodos que ajudam a construir o cenário ideal </li></ul>
  48. 48. Métricas (LOC) <ul><li>Setup (montar o cenário): </li><ul><li>Ideal: de 1 a 4 linhas
  49. 49. Ruim: de 5 a 7 linhas
  50. 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. 51. Péssimo: maior que 2 linhas </li></ul><li>JAMAIS: </li><ul><li>Use IF, CASE, ou qualquer condicional! </li></ul></ul>
  52. 52. Estilo de Teste Como fazer seu teste ter menos cara de código e mais cara de texto.
  53. 53. Bee English <ul><li>Dê sentido para as coisas! </li></ul>
  54. 54. Bee English <ul><li>Falta de Sentido: ”que é que isso fazia mesmo???” </li></ul>
  55. 55. Bee English <ul><li>Pense em como você descreveria aquele pedaço
  56. 56. Adapte o texto até chegar à linguagem de teste </li></ul>
  57. 57. Bee English <ul><li>Monte sua ”história” baseando-se na linguagem </li></ul>
  58. 58. Uma Última Coisa Mocks e Stubs
  59. 59. Stub! <ul><li>Stub como forma de ”controle”
  60. 60. Programação Funcional </li></ul>Stub em algum lugar aqui dentro...
  61. 61. Devil'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. 62. Mas... meu código sequer tem testes, como eu vou aplicar isso? </li></ul>
  63. 63. That's It <ul><li>Perguntas?
  64. 64. Idéias?
  65. 65. Contato: </li><ul><li>[email_address]
  66. 66. @mauricio_szabo
  67. 67. http://mauricioszabo.wordpress.com
  68. 68. http://github.com/mauricioszabo/AgileBrazil2011 </li></ul></ul>
  • rubiaferdias

    Mar. 24, 2016

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

Views

Total views

1,362

On Slideshare

0

From embeds

0

Number of embeds

113

Actions

Downloads

16

Shares

0

Comments

0

Likes

1

×