Meus empregadores realizam uma competição mensal de testes unitários. Um dia inteiro é dedicado a escrever testes de unidade - obviamente, fazemos mais testes ao longo do mês, mas este é um dia inteiro - e o "vencedor" da competição recebe um prêmio. No entanto, estamos descobrindo que é difícil determinar quem é o vencedor.
Estávamos atribuindo pontos para cada caso de teste. Então, se você escreveu um teste de unidade como este ...
for (int i = 0; i < 100; i++) {
assertTrue(i*i, square(i));
}
você receberia 100 pontos. Obviamente, este é um exemplo simplista, mas demonstra os problemas ao atribuir "pontos" a cada caso de teste.
Somos principalmente uma loja Java e Javascript. Então, sugeri contar o número de ramificações de código testadas como uma métrica. Podemos contar facilmente as ramificações testadas por meio de uma ferramenta de cobertura de código (como EclEmma). No entanto, não tenho certeza de como faríamos isso com nossos testes Selenium e obter uma cobertura de código nas fontes Javascript (alguma idéia?)
Alguém tem alguma sugestão sobre como podemos determinar melhor o vencedor desta competição?
Editar
Sei como escrever testes de unidade, sei como escrever testes de unidade eficazes, não preciso de ajuda para determinar o que testar. Não tenho controle sobre essa competição - a competição continuará. Então, ou adiciono alguma informação para melhorar ou continuo jogando os testes (sim, eu jogo com eles. É claro que eu jogo com eles. Há prêmios a serem ganhos)
Editar
Essa pergunta aqui obviamente não é duplicada, embora contenha informações úteis sobre como encontrar bons casos de teste, ela não fornece métricas úteis para avaliar a concorrência.