I miei datori di lavoro gestiscono una gara mensile di test di unità. Un intero giorno è dedicato alla scrittura dei test unitari, ovviamente facciamo più test durante tutto il mese, ma questo è un giorno intero - e il "vincitore" del concorso riceve un premio. Tuttavia, stiamo scoprendo che è difficile determinare chi sia il vincitore.
Stavamo assegnando dei punti per ogni caso di test. Quindi se hai scritto un test unitario 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 Java & Negozio 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 è sicuro di come faremmo con i nostri test sul selenio e ottenere una copertura del codice sui sorgenti Javascript (qualche idea?)
Qualcuno ha qualche suggerimento su come possiamo determinare meglio il vincitore di questa competizione?
Modifica
So come scrivere test di unità, so come scrivere test di unità efficaci, non ho bisogno di aiuto per determinare cosa testare. Non ho alcun controllo su questa competizione - la competizione proseguirà. Quindi o aggiungo qualche input per renderlo migliore o continuare a giocare i test (sì, li gioco.) Naturalmente li gioco. Ci sono premi da vincere)
Modifica
Questa domanda qui non è ovviamente un duplicato, sebbene contenga informazioni utili su come trovare buoni casi di test, non fornisce alcuna metrica utile per valutare la concorrenza.