Mis empleadores organizan una competencia mensual del día de prueba de la unidad. Un día entero se dedica a escribir pruebas unitarias, obviamente hacemos más pruebas durante todo el mes, pero este es un día completo, y el "ganador" de la competencia recibe un premio. Sin embargo, nos resulta difícil determinar quién es el ganador.
Estábamos asignando puntos para cada caso de prueba. Entonces, si escribiste una prueba unitaria como esta ...
for (int i = 0; i < 100; i++) {
assertTrue(i*i, square(i));
}
Te darían 100 puntos. Obviamente, este es un ejemplo simplista, pero demuestra los problemas con la asignación de "puntos" a cada caso de prueba.
Somos principalmente una tienda Java y Javascript. Así que sugerí contar el número de ramas de código probadas como una métrica. Podemos contar fácilmente las ramas probadas a través de una herramienta de cobertura de código (como EclEmma). Sin embargo, no estoy seguro de cómo haríamos esto con nuestras pruebas de Selenium y obtener una cobertura de código en las fuentes de Javascript (¿alguna idea?)
¿Alguien tiene alguna sugerencia sobre cómo podríamos determinar mejor al ganador de esta competencia?
Editar
Sé cómo escribir pruebas unitarias, sé cómo escribir pruebas unitarias efectivas, no necesito ayuda para determinar qué probar. No tengo control sobre esta competencia, la competencia continuará. Entonces, agrego algo de información para mejorarlo o sigo jugando las pruebas (sí, las juego. Por supuesto que las juego. Hay premios que ganar)
Editar
Esta pregunta aquí obviamente no es un duplicado, aunque contiene información útil sobre cómo encontrar buenos casos de prueba, no proporciona ninguna métrica útil para evaluar la competencia.