Acabei de encontrar um problema interessante de codificação colaborativa no trabalho.
Eu escrevi alguns testes de unidade / funcional / integração e implementei novas funcionalidades no aplicativo que tem ~ 20 desenvolvedores trabalhando nele. Todos os testes foram aprovados e eu verifiquei o código. No dia seguinte, atualizei meu projeto e notei (por acaso) que alguns dos meus métodos de teste foram excluídos por outros desenvolvedores (mesclando problemas no final). O novo código do aplicativo não foi tocado.
Como posso detectar esse problema automaticamente? Quero dizer, escrevo testes para verificar automaticamente se meu código ainda funciona (ou não foi excluído). Como faço o mesmo para testes?
Estamos usando Java, JUnit, Selenium, SVN e Hudson CI, se isso importa.
Respostas:
Não estou familiarizado com o Hudson para IC, mas minha ferramenta de IC também pode calcular a cobertura de código. Se você puder escrever um processo que o notificará quando a cobertura do código diminuir, isso seria um bom indicador de que um teste foi removido. Também informa se o novo código foi adicionado sem testes. Não é o que você estava perguntando, mas é bom saber.
fonte
As isenções de responsabilidade padrão se aplicam: estamos criando uma solução de engenharia para um problema social. No entanto, esse é um problema de higiene do projeto, por isso é um pouco como dizer que os banheiros são uma solução de engenharia para um problema social.
Tenha um trabalho entregue o feed RSS do Hudson. Conte o número de testes no relatório Hudson. Se diminuir, toque um alarme. Tenha um auto-da-fe 'quando o alarme tocar.
O culpado do commit pode ser identificado e punido. Seu problema vai desaparecer.
Você pode criar outros problemas como resultado desta solução. Se a tontura persistir, consulte o seu médico.
fonte
Abordagem organizacional
Tenha uma política em vigor que exija que a pessoa exclua os testes converse com o criador do teste. Normalmente, você excluiria testes apenas ao depreciar alguma funcionalidade que está sendo testada, e isso não acontece com muita frequência.
Abordagem técnica
Essa é mais a abordagem do controle, mas você pode ter um teste separado, que verifica o código-fonte quanto à presença de todos os testes que deseja verificar. Possivelmente você também pode interagir com o Hudson e obter a lista de testes executados.
fonte
Semelhante à resposta de Art ..
Comentários Comece usando o comentário bem. Para cada método; não esqueça de colocar a entrada e saída esperadas, uma breve descrição para funções mais complexas e seu nome.
Diretrizes Mas isso realmente destaca que há uma necessidade de mais comunicação entre o desenvolvedor. equipe. Deve haver diretrizes para trabalhar em conjunto ... ou pelo menos conversar com seu proj. gerente e peça que ele esclareça isso entre a equipe.
Uso adequado do SVN Você também pode escrever suas classes e métodos e rastreá-los. Também enquanto estiver usando o SVN, espero sinceramente que essas exclusões sejam rastreadas como alterações, anotadas separadamente e com BOAS razões.
Antes de escrever um programa especial, você também pode comparar o diff. arquivos no SVN para rastrear alterações nos seus métodos.
fonte
O mesmo poderia acontecer com o código real e você não saberá até perceber que sua alteração não existe mais.
Dito isto, é difícil identificar o código que está sendo removido como algo ruim, pois muitas vezes você remove manualmente o código / recursos, etc.
fonte