4Max/shutterstock.com

11. März 2016 / von David Gran

Code
Coverage 
für 
c#

Dieser Beitrag gibt einen groben Überblick über einige Werkzeuge zum Ermitteln von Code Coverage Kennzahlen in .Net Projekten für C#, sofern die Tests mit NUnit geschrieben wurden. Code Coverage im Software Entwicklungsprozess angemessen eingesetzt hilft einen ersten Überblick über die Testqualität und Abdeckung des eigenen Codes zu erhalten. Dieser Überblick ist unter Umständen dann erforderlich, wenn man ein bestehendes System zur Weiterentwicklung übernimmt oder an einem System im Team gearbeitet wird und man selbst keinen Überblick mehr über die Testabdeckung hat. Code Coverage angemessen einsetzen bedeutet aber auch die Aussagekraft der Kennzahlen nicht zu überstrapazieren. So sei hier ausdrücklich davor gewarnt Code Coverage Kennzahlen als „die alleinigen“ Kennzahlen für die Codequalität zu verwenden. Denn eine hohe Testabdeckung sagt noch lange nichts über die Qualität des Codes bzw. der Tests aus und eine fehlende Testabdeckung sagt nur etwas darüber aus, dass eine bestimmte Testart bspw. automatisierte Komponenten-/Unittests nicht angewendet werden.

Doch dazu muss man erst mal die Code Coverage Kennzahlen ermitteln. Je nachdem zu welcher Kategorie von .Net Entwickler man sich zählen darf, ist die Umsetzung nicht ganz trivial.

Der Lucky Developer

Alle diejenigen die zu den Lucky Developer gehören, können sich glücklich schätzen. Sie genießen das Privileg Visual Studio Enterprise 2015 zu nutzen. Der Weg zur Code Abdeckung ist für sie ein kurzer und schmerzloser. Visual Studio öffnen > Test > Analyze Code Coverage (Ein genauer Wegweiser lässt sich zum Glück hier finden: https://msdn.microsoft.com/en-us/library/dd537628.aspx). Wenn es nun ein Lucky Developer richtig auf die Spitze treiben will so hat er die Möglichkeit seine Test Abdeckung auch im Rahmen des TFS Build zu messen, mehr dazu findet er hier: https://msdn.microsoft.com/de-de/library/jj159530.aspx#Anchor_1. Eine Unterstützung auf der Konsole findet der versierte Lucky Developer natürlich auch, Beispiel gefällig? Bitteschön: https://msdn.microsoft.com/en-us/library/jj155800(v=vs.140).aspx  und hier noch ein kleiner Konfigurationshinweis: https://msdn.microsoft.com/en-us/library/jj635153.aspx

Der „Could be Worse“ Developer

Ist man nicht ganz so privilegiert wie die Lucky Developer, darf man sich vielleicht aber noch zu den „Could be Worse“ Developer zählen. Diese können sich auf die Unterstützung durch freundliche Anbieter von Code Coverage Werkzeugen verlassen. Mitunter können sich diese Lösungen auch gerne mit der Visual Studio Coverage Lösung messen, doch eines haben Sie alle gemeinsam, sie haben den Auftrag für ihre Schöpfer Knete zu beschaffen. Eine gute Figur im Feld der kostenpflichten Code Coverage Lösungen machen die folgenden Freunde:

Der Poor Dog Developer

Doch was machen nun alle die ohne das nötige Kleingeld für ein Visual Studio Enterprise 2015 oder eine der freundlichen Lösungen von Drittanbietern mit dem Kapitalbeschaffungsauftrag? Zunächst finden diese sich in der Gruppe der „Poor Dog Developer“ wieder doch auch für diese Gruppe hat das Universum der .Net Code Coverage Lösungen ein Angebot parat: OpenCover. Auch hier gibt es eine Visual Studio Integration (OpenCover UI), doch deren Reifegrad ist nicht zu vergleichen mit dem der kostenpflichtigen Lösungen. Daneben kann man mit den OpenCover Ergebnisse einen ganz netten Report über das Tool „Report Generator“ erzeugen. Packt man den Aufruf nun noch in ein nettes Skript so ergibt sich hier eine brauchbare Lösung die selbst dem weniger privilegierten Poor Dog Developer noch aus der Patsche hilft.

Die Werkzeuge im direkten Überblick

Ist der Geldbeutel nicht das einzige ausschließende Kriterium bei der Auswahl des Code Coverage Werkzeuges, so kann vielleicht der folgende Überblick bei einer engeren Auswahl des Werkzeuges Unterstützen:

WerkzeugVS Premium / UltimateNCoverNCrunchDot CoverOpenCover
HerstellerMicrosoftGnosoRemco Software Ltd.Jetbrains s.r.o.Open Source
Lizenz-
kosten
3.273 € (Upgrade Lizenz) – 7.643 € (Neue Lizenz) Visual Studio 2015 Enterprise mit 1 J. MSDN Abo658 $ pro Jahr159 $ – 289 $ neue Lizenzen / 79 $ – 144 $ Upgrade Lizenz399 € pro Jahr (neue Lizenzen) / 299 € pro Jahr Upgrade LizenzKostenlos (Open-Source)
Code Highlighting in Visual StudioJaJaJaJaÜber ein extra VS Plugin „OpenCover UI“
Coverage
Report
Formate
Visual Studio Integration, ExcelVisual Studio Integration, Über nCover Command Line Tool folgende Formate: HTML | XML ReportsVisual Studio Integration, über NCrunch Console Tool folgende Formate: HTML | XML ReportsVisual Studio Integration,
Über dotCover Console
Runner für folgende Formate: HTML | JSON | XML | NDependXML
Über „Report Generator“ HTML Reports
TFS Build /
MS Build Integration
JaJa, über eigene Build Tasks bzw. TFS XAML Build ProzessJa, über das NCrunch Console ToolJa, über TFS XAML Build Prozess bzw. über den dotCover Console RunnerJa, über ein eigenes Batch-Script möglich.
Besonder-heiten?Mit „Code Central“ und „Collector“ können die Metriken von mehreren Entwicklern gesammelt werden.Performance Kennzahlen, Parallele Testausführung / Multi Prozessor Support des Test RunnerNur in Verbindung mit Resharper Ultimate erhältlich

Fazit

Fast für jeden ist etwas zu finden in der Welt der C# – Code Coverage. Je nach Größe des eigenen bzw. des projektbezogenen Geldbeutels gestaltet sich der Weg zu einer hilfreichen und ansprechend visualisierten Code Coverage ganz unterschiedlich. Bei allen kostenpflichtigen ist die Einstiegshürde niedrig und ein angemessener Funktionsumfang wird geboten für das Erheben und Arbeiten mit Kennzahlen zur Testabdeckung.

Im Bereich der frei verfügbaren Lösung OpenCover ist der Einstieg schon etwas kniffeliger da hier gleich drei einzelne Tools installiert werden müssen (OpenCover, OpenCover UI und Report Generator) damit in etwa ein vergleichbarer Funktionsumfang erreicht wird wie bei den kostenpflichtigen Lösungen. Ist die Einstiegshürde aber erstmal einmal genommen, ist der Funktionsumfang ausreichend zum gelegentlichen Ermitteln von Kennzahlen zur Testabdeckung.

 

Autor

David Gran David arbeitet seit April 2013 bei der Accso GmbH. Seine technischen Interessensschwerpunkte sind der Entwurf und die Entwicklung von klassischen OLTP-Systeme und OLAP-Systemen. Darüber hinaus interessiert er sich für verschiedene Ideen, Methoden und Ansätze die das menschliche Miteinander im beruflichen Alltag effizienter und effektiver werden lassen ohne dabei den Mensch und die Menschlichkeit aus den Augen zu verlieren.
Weitere Artikel

Das könnte Sie auch interessieren