I miei datori di lavoro organizzano una competizione mensile di test unitari. Un'intera giornata è dedicata alla scrittura di unit test - ovviamente facciamo più test durante il mese, ma questo è un giorno intero - e al "vincitore" della competizione viene assegnato un premio. Tuttavia, stiamo trovando difficile determinare chi è il vincitore.
Stavamo assegnando punti per ogni caso di test. Quindi se hai scritto un unit test come questo ...
for (int i = 0; i < 100; i++) {
assertTrue(i*i, square(i));
}
ti verranno dati 100 punti. Ovviamente questo è un esempio semplicistico ma dimostra i problemi con l'assegnazione di "punti" a ciascun caso di test.
Siamo principalmente un negozio Java e Javascript. Quindi ho suggerito di contare il numero di rami di codice testati come metrica. Possiamo facilmente contare i rami testati tramite uno strumento di copertura del codice (come EclEmma). Tuttavia, non sono sicuro di come lo faremmo con i nostri test del selenio e ottenendo una copertura del codice sulle fonti Javascript (qualche idea?)
Qualcuno ha qualche suggerimento su come possiamo determinare meglio il vincitore di questa competizione?
modificare
So scrivere test unitari, so scrivere test unit efficaci, non ho bisogno di aiuto per determinare cosa testare. Non ho alcun controllo su questa competizione - la competizione continuerà. Quindi o aggiungo qualche input per renderlo migliore o continuo a giocare i test (sì, li gioco. Naturalmente li gioco. Ci sono premi da vincere)
modificare
Questa domanda qui non è ovviamente un duplicato, sebbene contenga informazioni utili su come trovare buoni casi di test, non fornisce metriche utili per valutare la concorrenza.