Softwarequalität mit Visual Studio 2010

Post on 26-Jun-2015

1,468 views 0 download

transcript

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: david.tielke@studentpartners.de • 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