[TDCFloripa 2018] Como não escrever seus testes

[TDCFloripa 2018] Como não escrever seus testes

Sabemos que escrever testes automatizados é extremamente importante, pois, entre outras coisas, eles garantem a qualidade do nosso código e o funcionamento da nossa aplicação. Apesar disso, muitas vezes acabamos com uma suíte de testes que, além de ser difícil de entender e manter, não é confiável. Nessa talk, vamos ver como reconhecer e evitar alguns dos problemas mais comuns que nos fazem odiar nossos testes, além de dar algumas dicas de como melhorar nossos testes.

# Links
Trilha DevTest: http://www.thedevelopersconference.com.br/tdc/2018/florianopolis/trilha-devtest
Vídeo disponível em: https://www.eventials.com/Globalcode/tdc-floripa-2018-stadium-sexta-3/

# Outras observações
Gifs não funcionam no speaker deck e isso me deixa muito triste, porém vida que segue.

36489105af6ebd101e8f250e537e70d3?s=128

Camila Campos

April 20, 2018
Tweet

Transcript

  1. @camposmilaa como não escrever seus testes Trilha #DevTest Camila Campos

    @camposmilaa
  2. @camposmilaa camila campos Desenvolvedora na Creditas Organizadora do Rails Girls

    Organizadora do Women Dev Summit
  3. @camposmilaa Plataforma online Empréstimo com garantia Juros baixos pra você

    <3 !!! TAMO CONTRATANDO !!!
  4. @camposmilaa Projeto maravilhindo Inserir mulheres em TI Workshop de Rails

    Inspiração railsgirls.com.br fb.com/railsgirls.sp twitter.com/railsgirlssp
  5. @camposmilaa Junção de comunidades Oficinas Palestras Paineis womendevsummit.com @WomenDevSummit fb.com/womendevsummit

  6. @camposmilaa como não escrever seus testes Trilha #DevTest Camila Campos

    @camposmilaa
  7. @camposmilaa como evitar de fazer testes que vão nos deixar

    tristes Trilha #DevTest Camila Campos @camposmilaa
  8. @camposmilaa só não fazer teste!

  9. @camposmilaa por que escrevemos testes?

  10. @camposmilaa a gente gosta

  11. @camposmilaa a gente gosta

  12. @camposmilaa a gente gosta alta confiança

  13. @camposmilaa a gente gosta alta confiança entendimento

  14. @camposmilaa a gente gosta alta confiança entendimento

  15. @camposmilaa a gente gosta alta confiança entendimento funciona

  16. @camposmilaa a gente gosta alta confiança entendimento funciona facilita refactor

  17. @camposmilaa a gente gosta alta confiança entendimento

  18. @camposmilaa a gente gosta alta confiança entendimento fácil de usar

    ou mudar
  19. @camposmilaa a gente gosta alta confiança entendimento fácil de usar

    ou mudar guia design
  20. @camposmilaa por que odiamos nossos testes?

  21. @camposmilaa

  22. @camposmilaa lento

  23. @camposmilaa lento desnecessário

  24. @camposmilaa lento desnecessário complicado

  25. @camposmilaa lento desnecessário complicado

  26. @camposmilaa lento

  27. @camposmilaa lento

  28. @camposmilaa e2e integração unidade lento

  29. @camposmilaa end to end

  30. @camposmilaa end to end

  31. @camposmilaa unidade controller service model model logic object repository model

  32. @camposmilaa unidade controller service model model logic object repository model

    o que é unidade?
  33. @camposmilaa unidade controller service model model logic object repository model

  34. @camposmilaa unidade controller service model model logic object repository model

  35. @camposmilaa unidade colaborador 2 colaborador 1 unidade

  36. @camposmilaa unidade test double 2 test double 1 colaborador 2

    colaborador 1 unidade
  37. @camposmilaa unidade

  38. @camposmilaa integração controller service model model logic object repository model

  39. @camposmilaa integração unidade e2e lento

  40. @camposmilaa e2e integração unidade lento

  41. @camposmilaa e2e integração unidade lento

  42. @camposmilaa unidade lento

  43. @camposmilaa unidade e2e lento

  44. @camposmilaa integração unidade e2e lento

  45. @camposmilaa integração unidade e2e dados (bd) deps. externas colaboradores regras

    e convenções
  46. @camposmilaa integração unidade e2e dados (bd) deps. externas colaboradores regras

    e convenções
  47. @camposmilaa lento complicado desnecessário

  48. @camposmilaa testes difíceis de ler, entender e/ou manter complicado

  49. @camposmilaa complicado

  50. @camposmilaa teste com lógica complicado

  51. @camposmilaa teste com lógica teste muito mágico complicado

  52. @camposmilaa teste com lógica teste bagunçado teste muito mágico complicado

  53. @camposmilaa teste com lógica teste bagunçado teste não claro teste

    muito mágico complicado
  54. @camposmilaa teste com lógica teste bagunçado teste não claro teste

    muito mágico complicado
  55. @camposmilaa teste é um código que garante que seu código

    de produção funciona não claro
  56. @camposmilaa teste é um código não testado que garante que

    seu código de produção funciona não claro
  57. @camposmilaa teste é um código não testado que garante que

    seu código de produção funciona simples não claro
  58. @camposmilaa teste é um código não testado que garante que

    seu código de produção funciona simples legível não claro
  59. @camposmilaa teste é um código não testado que garante que

    seu código de produção funciona simples legível objetivo não claro
  60. @camposmilaa não claro

  61. @camposmilaa não claro

  62. @camposmilaa não claro

  63. @camposmilaa não claro

  64. @camposmilaa não claro

  65. @camposmilaa não claro

  66. @camposmilaa não claro

  67. @camposmilaa teste com lógica teste bagunçado teste não claro teste

    muito mágico
  68. @camposmilaa teste só faz 3 coisas bagunçado

  69. @camposmilaa ajeita o que precisa para o teste funcionar bagunçado

  70. @camposmilaa ajeita o que precisa para o teste funcionar executa

    a ação que você quer testar bagunçado
  71. @camposmilaa ajeita o que precisa para o teste funcionar executa

    a ação que você quer testar verifica se aconteceu o que você esperava bagunçado
  72. @camposmilaa A A A

  73. @camposmilaa Arrange A A

  74. @camposmilaa Arrange Act A

  75. @camposmilaa Arrange Act Assert

  76. @camposmilaa setup exercise verify Arrange Act Assert

  77. @camposmilaa

  78. @camposmilaa bagunçado

  79. @camposmilaa bagunçado

  80. @camposmilaa bagunçado

  81. @camposmilaa bagunçado

  82. @camposmilaa teste com lógica teste bagunçado teste não claro teste

    muito mágico
  83. @camposmilaa mágico

  84. @camposmilaa mágico

  85. @camposmilaa mágico

  86. @camposmilaa mágico

  87. @camposmilaa mágico

  88. @camposmilaa mágico

  89. @camposmilaa mágico

  90. @camposmilaa teste com lógica teste bagunçado teste não claro teste

    muito mágico
  91. @camposmilaa código real precisa ser refatorado lógica

  92. @camposmilaa setup extenso/complexo lógica

  93. @camposmilaa setup extenso/complexo muitas dependências lógica

  94. @camposmilaa setup extenso/complexo muitas verificações muitas dependências lógica

  95. @camposmilaa setup extenso/complexo muitas verificações muitas dependências muitas responsabilidades lógica

  96. @camposmilaa setup extenso/complexo muitas verificações muitos passos de “exercise” muitas

    dependências muitas responsabilidades lógica
  97. @camposmilaa setup extenso/complexo muitas verificações muitos passos de “exercise” muitas

    dependências muitas responsabilidades interface complicada lógica
  98. @camposmilaa setup extenso/complexo muitas verificações muitos passos de “exercise” inteligência

    no teste muitas dependências muitas responsabilidades interface complicada (ex. Loops, mock método privado) lógica
  99. @camposmilaa setup extenso/complexo muitas verificações muitos passos de “exercise” inteligência

    no teste muitas dependências muitas responsabilidades interface complicada código muito complexo (ex. Loops, mock método privado) lógica
  100. @camposmilaa lento complicado desnecessário

  101. @camposmilaa testes que passam depois do rebuild desnecessário

  102. @camposmilaa testes que passam depois do rebuild testes que funcionam

    dependendo da ordem desnecessário
  103. @camposmilaa testes que passam depois do rebuild testes que funcionam

    dependendo da ordem testes que quebram "a toa" desnecessário
  104. @camposmilaa controller service model logic object desnecessário

  105. @camposmilaa controller service model logic object testes redundantes desnecessário

  106. @camposmilaa controller service model logic object A B desnecessário

  107. @camposmilaa controller service model logic object A B A B

    desnecessário
  108. @camposmilaa controller service model logic object A B A B

    A B desnecessário
  109. @camposmilaa controller service model logic object A C A B

    A B desnecessário
  110. @camposmilaa controller service model logic object A C A C

    A B desnecessário
  111. @camposmilaa controller service model logic object A C A C

    A C desnecessário
  112. @camposmilaa controller service model logic object A C A C

    A C mock pra tudo desnecessário
  113. @camposmilaa controller service model logic object A C A C

    A C mock pra tudo menos testes em camadas desnecessário
  114. @camposmilaa lento complicado desnecessário

  115. @camposmilaa lento complicado desnecessário

  116. @camposmilaa lento complicado desnecessário bonus

  117. @camposmilaa falta de testes!

  118. @camposmilaa melhor ter testes ruins do que não ter nenhum.

  119. @camposmilaa melhor ter testes ruins do que não ter nenhum.

    MELHOR NÃO TER TESTES DO QUE TER TESTES RUINS.
  120. @camposmilaa melhor ter testes ruins do que não ter nenhum.

    MELHOR NÃO TER TESTES DO QUE TER TESTES RUINS. confiança entendimento
  121. @camposmilaa agradecida! camila.campos@creditas.com.br @camposmilaa bit.ly/tdc-testes-camila