4
respostas

Biblioteca para gerar Testes Automatizados

Boa noite Pessoal,

Estou aqui para pedia uma ajuda a comunidade do Alura.

Estou desenvolvendo uma biblioteca para geração de testes automatizados por annotations como TCC da minha faculdade, e uma das partes da conclusão do meu TCC é disponibilizar este projetos para que a comunidade teste e opine respondendo um questionário.

Introduzindo rapidamente o que a biblioteca realiza, o objetivo consiste em gerar testes automatizados dos métodos das classes de negócio à partir da declarações de annotations, que serão responsáveis por gerar uma classe de testes automatizado no padrão de escrita do JUnit, e Mockito para escrita de mock objects.

Ela ainda está um pouco limitada, no que se diz respeito a alguns cenários de geração. Mas a intenção é validar a ideia em si.

Peço por gentileza, se tiverem uns 10 min para testar e responderem o questionário ficaria muito grato! Vocês poderão encontrar este questionário na página do projeto ou pelo link: https://goo.gl/forms/kl8PZK2biwExq4A83

Segue os links do projeto.

GitHub https://github.com/rgoncalves94/jtcgen

Apresentação e Documentação: http://rgoncalves94.github.io/jtcgen/

Projeto de Exemplo: https://github.com/rgoncalves94/jtcgen-example (um pequeno ambiente de facil acesso para testar a lib.)

Caso encontrem algum problema na utilização ou dúvida estou à disposição.

Agradeço desde já!

4 respostas

Oi Rafael, em primeiro lugar parabéns pelo projeto. Naveguei pelo site e dei uma olhada no projeto de exemplo, além de preencher o formulário, é claro :).

Em geral tenho uma resistência a projetos que tentam mudar radicalmente algo que já vem sendo feito há muito tempo. Não é que eu não goste de inovação, pelo contrário.. Mas no caso do seu projeto eu estou deixando de escrever meus testes em Java para escrever casos de teste em String que vão gerar os testes em Java para mim, não vi tanta vantagem.

Falando aqui, do conforto da minha poltrona, eu ia amar que o projeto olhasse o meu código e gerasse a classe de teste :). Para este tipo de approach valer a pena, pelo menos para mim, a tarefa que eu executo manualmente tinha que ser muito complexa, não é o caso na hora de escrever um teste.

Vou passar o link do fórum para Mauricio Aniche, um dos caras mais influentes nessa área aqui no Brasil, acho que ele pode dar uma opinião legal para você :).

Obrigado Alberto pela sua resposta.

Entendo seu ponto de vista, pois quando estava pesquisando e lendo muitas coisas relacionadas a testes acabei tendo um pouco destes sentimentos que você citou. rs

A ideia mesmo era testar um caminho diferente e coletar a opinião e aceitação sobre esta abordagem.

Agradeço pelo seu comentário, pode ter certeza que agregou bastante!

Oi Rafael,

Projeto muito legal. Mostra que você tem excelente talento técnico! As empresas caçarão você em breve! :)

Sobre "testar um caminho diferente", parabéns por isso também. Se vc soubesse pra onde deveria ir, não haveria pesquisa, haveria apenas 'engineering work'. Você pensou fora da caixa!

Vejo alguns pontos positivos da sua abordagem:

  • O teste está pertinho do código. Não tem como o desenvolvedor não vê-lo.
  • A sua DSL elimina todo o boilerplate que é necessário para se escrever um simples teste que invoca um método e vê uma saída.

O que eu faria agora?

O quão fácil e útil é testar uma classe de verdade? Você dá exemplos, que apesar de parecerem reais, não são, hehe. Minha sugestão pra você é pegar um conjunto de classes reais (por exemplo, classes aleatórias de projetos da Apache.. Collections, Math, etc), e escrevê-las com seu framework.

Ao final, você terá o teste original e o seu teste com a DSL. Em primeiro lugar, medir quantos testes você consegue escrever -- isso ajuda a mostrar que sua abordagem funciona pra exemplos reais.

Segundo, é comparar os resultados. Talvez entrevistar alguns desenvolvedores, mostrando pra eles os dois códigos, e coletando as coisas boas e a ruins que eles enxergam.

Talvez isso seja muito para um TCC. Mas esse seria o caminho que eu tomaria se a ideia fosse publicar um paper mais maduro sobre a técnica.

Novamente, parabéns! E fique à vontade para me escrever e-mails.

Olá Maurício,

Muito obrigado pelo retorno. Realmente, você citou alguns pontos e métricas que fazem muito sentido.

Considerarei testar o framework em projetos reais e aplicar essas métricas.

Agradeço por compartilhar sua experiência, é de grande valor!