Meine Arbeitgeber veranstalten monatlich einen Unit-Testing-Wettbewerb. Ein ganzer Tag ist dem Verfassen von Unit-Tests gewidmet - natürlich machen wir im Laufe des Monats mehr Tests, aber dies ist ein ganzer Tag - und der "Gewinner" des Wettbewerbs erhält einen Preis. Wir stellen jedoch fest, dass es schwierig ist festzustellen, wer der Gewinner ist.
Wir haben für jeden Testfall Punkte vergeben. Also, wenn Sie einen Unit-Test wie diesen geschrieben haben ...
for (int i = 0; i < 100; i++) {
assertTrue(i*i, square(i));
}
Sie würden 100 Punkte gegeben. Dies ist natürlich ein vereinfachtes Beispiel, aber es zeigt die Probleme bei der Zuweisung von "Punkten" für jeden Testfall.
Wir sind hauptsächlich ein Java- und Javascript-Shop. Also schlug ich vor, die Anzahl der getesteten Code-Zweige als Metrik zu zählen. Wir können die mit einem Code-Coverage-Tool (wie EclEmma) getesteten Zweige leicht zählen. Wir sind uns jedoch nicht sicher, wie wir dies mit unseren Selenium-Tests und einer Codeabdeckung der Javascript-Quellen tun würden (irgendwelche Ideen?)
Hat jemand Vorschläge, wie wir den Gewinner dieses Wettbewerbs besser bestimmen können?
Bearbeiten
Ich weiß, wie man Komponententests schreibt, ich weiß, wie man effektive Komponententests schreibt, ich brauche keine Hilfe, um zu bestimmen, was zu testen ist. Ich habe keine Kontrolle über diesen Wettbewerb - der Wettbewerb wird fortgesetzt. Also füge ich entweder etwas Input hinzu, um es besser zu machen, oder spiele die Tests weiter (ja, ich spiele sie. Natürlich spiele ich sie. Es gibt Preise zu gewinnen)
Bearbeiten
Diese Frage hier ist offensichtlich kein Duplikat, obwohl sie nützliche Informationen zum Auffinden guter Testfälle enthält, enthält sie keine nützlichen Metriken zum Bewerten der Konkurrenz.