Ich arbeite an mehreren Anwendungen, hauptsächlich älteren. Gegenwärtig ist ihre Codeabdeckung recht gering: im Allgemeinen zwischen 10 und 50%.
Seit einigen Wochen führen wir immer wieder Gespräche mit den Bangalore-Teams (der größte Teil der Entwicklung findet in Indien im Ausland statt) über den Ausschluss von Paketen oder Klassen für Cobertura (unser Code-Coverage-Tool, auch wenn wir derzeit auf JaCoCo migrieren).
Ihre Sichtweise ist folgende: Da sie auf einigen Ebenen der Anwendung (1) keine Komponententests schreiben , sollten diese Ebenen einfach von der Kennzahl für die Codeabdeckung ausgeschlossen werden. Mit anderen Worten, sie möchten das Maß für die Codeabdeckung auf den Code beschränken, der getestet wird oder getestet werden soll .
Wenn sie am Komponententest für eine komplexe Klasse arbeiten, werden die Vorteile - rein in Bezug auf die Codeabdeckung - in einer großen Anwendung unbemerkt bleiben. Durch die Reduzierung des Umfangs der Codeabdeckung wird diese Art von Aufwand sichtbarer ...
Das Interesse dieses Ansatzes ist, dass wir eine Kennzahl für die Codeabdeckung haben, die den aktuellen Status des Teils der Anwendung angibt, den wir als testbar betrachten .
Mein Standpunkt ist jedoch, dass wir die Zahlen irgendwie vortäuschen. Diese Lösung ist eine einfache Möglichkeit, ohne großen Aufwand eine höhere Codeabdeckung zu erreichen. Ein weiterer Punkt, der mich stört, ist der folgende: Wenn wir von einer Woche zur nächsten eine Zunahme der Abdeckung feststellen, wie können wir dann feststellen, ob diese gute Nachricht auf die gute Arbeit der Entwickler oder einfach auf neue Ausschlüsse zurückzuführen ist?
Außerdem können wir nicht genau wissen, was in der Codeabdeckungsmaßnahme berücksichtigt wird. Wenn ich zum Beispiel eine 10.000-Zeilen-Code-Anwendung mit 40% Codeabdeckung habe, kann ich abziehen, dass 40% meiner Codebasis getestet wurden (2) . Aber was passiert, wenn wir Ausschlüsse festlegen? Wenn die Codeabdeckung jetzt 60% beträgt, was kann ich dann genau abziehen? Dass 60% meiner "wichtigen" Codebasis getestet werden? Wie kann ich
Was mich betrifft, ziehe ich es vor, den "echten" Codeabdeckungswert beizubehalten, auch wenn wir nicht fröhlich darüber sein können. Dank Sonar können wir außerdem problemlos in unserer Codebasis navigieren und für jedes Modul, jedes Paket und jede Klasse eine eigene Codeabdeckung ermitteln. Aber die globale Code-Abdeckung wird natürlich immer noch gering sein.
Was ist Ihre Meinung zu diesem Thema? Wie machst du deine Projekte?
Vielen Dank.
(1) Diese Ebenen beziehen sich im Allgemeinen auf die UI / Java-Beans usw.
(2) Ich weiß, dass das nicht stimmt. In der Tat bedeutet es nur, dass 40% meiner Codebasis