Desenvolvedores e Testes Automatizados em suas IDEs

Será que fazemos o que falamos? Falamos o que fazemos? Em um estudo bastante interessante, os pesquisadores monitoraram programadores usando o Eclipse, e vejam o que encontraram:

  • A maioria dos projetos e usuários não praticam testes ativamente.
  • Desenvolvedores, em sua maioria, não rodam testes na IDE. Mas quando o fazem, fazem com muita frequência.
  • Código de testes e código de produção não co-evoluem de maneira elegante.
  • Testes que são executados na IDE rodam muito rápido.
  • Desenvolvedores comumente executam apenas um conjunto específico de testes. Na maioria dos casos, os desenvolvedores executam apenas um teste.
  • A maioria das execuções de testes dentro das IDEs falham.
  • A reação mais comum a um teste falhando é mergulhar no código de produção culpado.
  • TDD não é amplamente praticado. E os programadores que dizem fazer, não o fazem estritamente e nem para todas as modificações.
  • Desenvolvedores gastam um quarto do seu tempo trabalhando em testes. Curiosamente, eles acreditavam que esse número era o dobro maior.

E o mais legal: os resultados observadores contradizem as respostas que esses mesmos desenvolvedores deram em uma survey.

E você? Como faz!? 🙂

Beller, Moritz, Georgios Gousios, Annibale Panichella, and Andy Zaidman. “When, how, and why developers (do not) test in their IDEs.” In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, pp. 179-190. ACM, 2015.

2 thoughts on “Desenvolvedores e Testes Automatizados em suas IDEs

  1. André Willik Valenti

    Olá, Maurício!

    Bem legal o post. O resultado dessa pesquisa me parece não muito surpreendente, mas muito interessante! Quem já bateu o pé e disse “Quer saber? Eu vou praticar TDD 100%!” sabe quantos obstáculos encontra no caminho. No meu caso, o item mais importante talvez seja a velocidade. Se eles forem lentos para executar, ou se eu tiver que dar ALT+TAB > comando > ENTER e esperar um tempo, fatalmente vou querer rodá-los com menos frequência. Outra coisa que me irrita é quando você usa ferramentas externas (como frameworks de persistência) e elas te causam problemas para escrever os testes. Isso já me fez desistir uma vez.

    Quase todos chegamos à conclusão de que 100% de TDD não vale a pena. E aí muitos se sentem mal, porque defenderam essa visão para os outros, e, de repente, não estão mais praticando-a. Acho importante que a gente saiba se colocar para as pessoas quando muda de ideia. Ninguém precisa defender a mesma coisa a vida inteira. Pelo contrário, quem faz isso normalmente se engana. É preciso ter a humildade de chegar e falar “Sabe aquilo que eu dizia tanto? Então… Descobri que não é bem assim”. Acredito que o resultado dessa pesquisa seja em parte devido a isso. Por medo de se expor, muita gente continua dizendo a mesma coisa, mas passa a fazer outra.

    Pessoalmente, gosto muito do TDD (vou até dar um minicurso sobre ele no sábado), mas já aceitei que não rola 100%. Acredito que o iniciante, sim, deva buscar os 100%, porque ele ainda não consegue discernir direito entre “aqui não cabe TDD” e “aqui cabe, mas eu ainda não sei fazer”. Meus projetos atuais (https://github.com/awvalenti/bauhinia) são centrados no uso do Wii Remote no computador. Esses projetos envolvem Bluetooth, interface gráfica e threads. Ou seja: tudo o que NÃO casa bem com TDD! Então, até o momento, não escrevi nenhum teste automatizado. Até consigo imaginar algumas classes que pudessem ser testadas em isolamento, mas ainda não vi necessidade. Antigamente, eu me sentiria mal por isso; hoje em dia, estou tranquilo!

    Reply
    1. mauricioaniche Post author

      Oi André,

      É isso mesmo. Quando mais maduro você é, melhor consegue tomar essas decisões!

      Bom workshop! 🙂

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *