Präsentation von:
Softwarequalität mit Visual Studio 2010
David Tielke
Über mich: David Tielke
02.03.2011 2
M. Sc. Informatik / Universität Marburg Microsoft Student Partner seit 2008
Fokus: .NET, Verteilte Systeme, Architektur, Bildverarbeitung
Kontakt: • E-Mail: [email protected] • Web: www.David-Tielke.de • Twitter: davidtielke
Agenda
• Was/Wie/Wo Softwarequalität
• Unit Tests
• Code Coverage
• Code Analysis
• Code Metrics
• Profiling
• Visual Studio 2010 – Die Editionen
• Fragen & Antworten
02.03.2011 3
Softwarequalität Ohne (etwas) Theorie geht’s nicht…
Was? - Softwarequalität
„Unter Softwarequalität versteht man die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen“ (wikipedia)
02.03.2011 5
Was? - Softwarequalität
• An jedes Softwaresystem gibt es Anforderungen
– Funktionale Anforderungen „Der Benutzer muss xyz können“
– Nicht-funktionale Anforderungen „Das System muss leicht erweiterbar sein“
„SQ beschreibt, wie gut eine Software die an sich gestellten Anforderungen erfüllt“
02.03.2011 6
Wie? - Softwarequalität
• Maßnahmen zur Qualitätssicherung
– Konstruktiv z.B. Richtlinien, Werkzeuge, Standards,…
– Analytisch z.B. Profiling, Unit-Tests, Code Coverage,…
02.03.2011 7
Wo? - Softwarequalität
02.03.2011 8
Analyse
Definition
Entwurf
Implementierung
Inbetriebnahme
Studien
Anforderungstests
Modellverifikation
Unit-Tests, Profiling,…
Systemtests
VS 2010 und Softwarequalität
Visual Studio 2010 ermöglicht es uns mit analytischen Tools und Addins die Softwarequalität in der
Implementierungsphase zu messen und zu steigern.
02.03.2011 9
Unit-Tests Ist Software die Software korrekt?
Unit-Tests
• Was sind Unit-Tests?
„Beim Unit-Testing werden unabhängige Module (Klasse, Komponenten, etc.) in einem dedizierten Testkontext auf die korrekte Einhaltung von zuvor spezifizierten Anforderungen getestet.“
Unit-Tests
02.03.2011 12
Applikations-Kontext
Klasse ABC
Methode1() Methode2() Methode3() Methode4()
Test-Kontext
Ein
gaben
Klasse XYZ
Methode1() Methode2() Methode3() Methode4()
Unit-Tests
02.03.2011 13
ProjectABC
KlasseXYZ
Methode1() Methode2() Methode3() Methode4()
ProjectABCTest
KlasseXYZTest
Methode1Test() Methode2Test() Methode3Test() Methode4Test()
MSTest
Unit-Tests
02.03.2011 14
ProjectABC
Klasse1
Methode1() Methode2()
ProjectABCTest
Klasse2
Methode1() Methode2()
Klasse3
Methode1() Methode2()
Klasse4
Methode1() Methode2()
Klasse1Test
Methode1() Methode2()
Klasse2Test
Methode1() Methode2()
Klasse3Test
Methode1() Methode2()
Klasse4Test
Methode1() Methode2()
DEMO Unit-Tests Projektdatei: MSP_TDO2011_UnitTests
Unit-Tests
• Weiteres zu dem Thema
– Datengetriebene Tests
– Testinput generieren (Pex)
– Check-In Policy im Team Foundation Server
– Coded UI-Tests
– Test Impact Analysis
– Unit-Tests für Datenbanken
– Und…
02.03.2011 16
Code Coverage Wie „gut“ sind meine Unit-Tests?
Code Coverage
• Metrik wie viel Code von Tests ausgeführt wird
• Kann aussagekräftig sein (muss aber nicht)
Zu Beginn 0% Überdeckung Test 1: Typ(1,2,2) => 4 Zeilen (57%) Test 2: Typ(1,1,2) => 5 Zeilen (71%) Test 3: Typ(1,2,3) => 6 Zeilen (85%) Test 4: Typ(0,0,0) => 7 Zeilen (100%)
DEMO Code Coverage Projektdatei: MSP_TDO2011_CodeCoverage
Code Analysis Hält sich der Entwickler an die Abmachungen?
Code Analysis
• Coding Guidelines – Beschreiben wie Code geschrieben werden soll – Erleichtern Verständnis im Team – Können Fehler verhindern – Nicht einfach durchsetzbar
• Microsoft .NET Framework Design Guidelines for Class Library Developers http://msdn.microsoft.com/en-us/library/czefa0ke(v=vs.71).aspx
02.03.2011 21
Code Analysis
• Coding Guidlines werden oft nicht von allen Entwicklern eingehalten
• Microsoft verwendet intern seit langem FxCop
• Seit VS 2005 Team System integriert als Managed Code Analysis
• Durch eigene Regeln erweiterbar
• Seit VS 2010 umbenannt in Code Analysis
02.03.2011 22
DEMO Code Analysis Projektdatei: MSP_TDO2011_CodeAnalysis
Code Metrics Zahlen, Zahlen, Zahlen,…
Code Metrics
• Eigenschaften von Code durch Zahlen ausgedrückt
• VS 2010 unterstützt „nur“ fünf Metriken
– Maintainability Index
– Cyclomatic Complexity
– Depth of Inheritance
– Class Coupling
– Lines of Code
02.03.2011 25
Code Metrics
• Maintainability Index Gibt an, wie gut Code in Zukunft gewartet werden kann. MAX(0,(171-5,2*ln(Halstead Volume) – 0.23*(Cyclomatic Complexity)-16,2*ln(Lines of Code)*100/171)
• Wert nicht linear, daher farbliche Visualisierung – Grün: Hohe Wartbarkeit (Wert 20 – 100)
– Gelb: Mittlere Wartbarkeit (Wert 10-20)
– Rot: Niedrige Wartbarkeit (Wert 0-9)
02.03.2011 26
Code Metrics
• Cyclomatic Complexity misst strukturale Komplexität des Codes
– If
– For/While/Do-While
– Switch
– Try/Catch (Seit VS 2010)
Niedrige Werte sind besser
02.03.2011 27
Code Metrics
• Depth of Inheritance Gibt die Tiefe der Vererbungs- struktur an Niedrige Werte sind besser
02.03.2011 28
Code Metrics
• Class Coupling Anzahl der Abhängigkeiten zu anderen Klassen Niedrige Werte sind besser
02.03.2011 29
Code Metrics
• Lines of Code Anzahl Zeilen Code in einer Methode auf Basis des IL-Codes Keine Kommentare, Klammern, usw. Niedrige Werte sind besser
02.03.2011 30
DEMO Code Metrics Projektdatei: MSP_TDO2011_CodeMetrics
Profiling Wie schnell ist mein Code?
Profiling
• Profiler überwachen das Zeit- und Speicherverhalten von Anwendungen
• Zwei Varianten
– Sampling (periodisches Messen von Werten)
– Instrumentation (Injektion von Messcode)
• Unglaublich umfangreiches Tool!!!
02.03.2011 33
DEMO Profiling Projektdatei: MSP_TDO2011_Profiling
Visual Studio 2010 – Die Versionen
02.03.2011 35
Feature Ultimate Premium Professional Express
Code Metrics
Profiling
Unit Tests
Code Coverage
Code Analysis
Quelle: http://www.microsoft.com/germany/visualstudio/products/features.aspx
Weiter SQ-Tools in Visual Studio 2010
• Intelli Trace
• Load Tests
• Manual Testing
• Coded UI Testing
• Lab Management
• Visual Studio Test Professional 2010
• Team Foundation Server 2010
02.03.2011 36
Fragen & Antworten
02.03.2011 37