Testing mit Visual Studio Rolf Wenger, CTO weroSoft AG · Digicomp Microsoft Evolution Day 2015 3...

Preview:

Citation preview

Digicomp Microsoft Evolution Day 2015 1

Testing mit Visual Studio

Rolf Wenger, CTO weroSoft AG

Partner:

2 Digicomp Microsoft Evolution Day 2015

Vorstellung Referent

weroSoft ist in den Bereichen Beratung, Entwicklung und Ausbildung auf der Basis der .NET-Technologien tätig

Basierend auf unserem eigenen Application Framework entwickeln wir kundenspezifische Client-Server-Anwendungen

Langjährige Ausbildungstätigkeiten für Softwareentwickler mittels Firmenkursen und .NET CAS an der Berner Fachhochschule

Durchführung von kundenorientierten E-Learning-Projekten in den Bereichen Dienstleistung und Industrie

3 Digicomp Microsoft Evolution Day 2015

Agenda

Warum testen

Wann testen

Was testen

Gehört Testen zur Architektur

Unterstützung in Visual Studio 2015

Zusammenfassung

4 Digicomp Microsoft Evolution Day 2015

Warum testen

5 Digicomp Microsoft Evolution Day 2015

Qualitätssicherung ohne Ende

Maschinenteile werden gemessen

Lebensmittel werden gewogen

Brücken werden belastet

Wissen wird geprüft

Beratung wird beurteilt

6 Digicomp Microsoft Evolution Day 2015

Beispiel Fertigung

Herstellen Messen Einbauen Messen Integrieren

Erproben Bericht Zufriedener Kunde Lieferung Qualitätsgarantie

7 Digicomp Microsoft Evolution Day 2015

Szenenwechsel

int variable = 1;

int result = variable++ + variable++ + variable++;

Welchen Wert hat die Variable «result»?

8 Digicomp Microsoft Evolution Day 2015

Warum testen wir?

Weil wir zufriedene Kunden wollen!

9 Digicomp Microsoft Evolution Day 2015

Wann testen

10 Digicomp Microsoft Evolution Day 2015

Der Regelkreis

11 Digicomp Microsoft Evolution Day 2015

Der Regelkreis

12 Digicomp Microsoft Evolution Day 2015

Wann testen wir?

Auf mehreren Ebenen während der gesamten Entwicklung – und das unaufgefordert und zielorientiert!

13 Digicomp Microsoft Evolution Day 2015

Was testen

14 Digicomp Microsoft Evolution Day 2015

Happy Path Test

Testen der Anforderung unter Idealbedingungen

Alles soll so funktionieren wie angedacht

Keine Ausnahmen

Keine Varianten

Einmalige Ausführung

Optimale Unterstützung durch Visual Studio 2015

15 Digicomp Microsoft Evolution Day 2015

Alternative Path Tests

Testen der Anforderung durch Nutzung von alternativen Code Pfaden

Permutationen von Varianten

Keine Ausnahmen

Einmalige Ausführung pro Variante

Optimale Unterstützung durch Visual Studio 2015

16 Digicomp Microsoft Evolution Day 2015

Exceptional Path Tests

Testen der Anforderung durch gezielte Provokation von Fehlern

Permutationen von Fehlervarianten

Ausnahmen/Ausnahmetypen und Meldungen

Einmalige Ausführung pro Variante

Unterstützung durch Visual Studio 2015

17 Digicomp Microsoft Evolution Day 2015

Regression Tests

Testen der wiederholten, korrekten Ausführung des Codes

Sicherstellen, dass nach Änderungen und Ergänzungen keine Seiteneffekte auftreten

Unterstützung durch Visual Studio 2015

18 Digicomp Microsoft Evolution Day 2015

Was testen wir?

Die gesamte mögliche Codeausführung in allen Varianten und Lebenslagen!

19 Digicomp Microsoft Evolution Day 2015

Wie testen

20 Digicomp Microsoft Evolution Day 2015

Testpyramide

Unit Test

Integration Test

Acceptance Test

21 Digicomp Microsoft Evolution Day 2015

Unit Test

Fundament der Qualitätssicherung

In der Verantwortung der Entwickler

Messung der Codeabdeckung

Kostengünstig

Kann sehr grosse Menge erreichen

Eine 100%-Automation ist anzustreben

22 Digicomp Microsoft Evolution Day 2015

Integration Test

Testen der Zusammenarbeit der Komponenten

In der Verantwortung der Tester

Mittleres Automatisierungspotenzial

Erfordert oft Produktinstallation

Mittlere Menge

Automatisierbar, aber auch oft manuell ausgeführt

23 Digicomp Microsoft Evolution Day 2015

Acceptance Test

Testen des gesamten Systems

In der Verantwortung der Tester

Teurere Automatisierung

Erfordert zwingend Produktinstallation

Kleinste Menge, Testen der Anforderungen / UC

Automatisierbar, aber auch oft manuell ausgeführt

24 Digicomp Microsoft Evolution Day 2015

Wie testen wir?

Indem wir für unser Projekt die Testpyramide umsetzen und idealtypisch vollautomatisiert alle Tests jede Nacht ausführen!

25 Digicomp Microsoft Evolution Day 2015

Gehört Testen zur Architektur

26 Digicomp Microsoft Evolution Day 2015

Frage 1

Wie viele Tests brauche ich, um das Zahlenschloss zu öffnen?

27 Digicomp Microsoft Evolution Day 2015

Frage 2

Wie viele Tests brauche ich, um das Zahlenschloss zu öffnen?

28 Digicomp Microsoft Evolution Day 2015

Frage 3

Wie wollen Sie das Netzteil von diesem Gerät testen?

29 Digicomp Microsoft Evolution Day 2015

Frage 4

Wie will weroSoft testen, dass die Webseite in allen Browsern korrekt angezeigt wird?

30 Digicomp Microsoft Evolution Day 2015

Antworten auf alle Fragen

Zerlegung des Systems in Baugruppen

Zerlegen der Baugruppen in Komponenten

Erstellen der Komponenten

Testen der Komponenten

Zusammenbau der Komponenten zu Baugruppen

Testen der Baugruppe

Zusammenbau zum Produkt

Testen des Produkts

31 Digicomp Microsoft Evolution Day 2015

Wir erinnern uns

Herstellen Messen Einbauen Messen Integrieren

Erproben Bericht Zufriedener Kunde Lieferung Qualitätsgarantie

32 Digicomp Microsoft Evolution Day 2015

Übersetzung für Software-Engineers

Baugruppe

33 Digicomp Microsoft Evolution Day 2015

… bis zur kleinsten Einheit …

Prüfling

MyClass.Method() Project Assembly

Unit Test

Unit Test Assembly

Mock

Simulation eines vom Prüfling

angesprochenen Objekts.

Project oder sonstige

Assembly

34 Digicomp Microsoft Evolution Day 2015

Die Testautomation

Visual Studio 2015

oder

mstest.exe

Unit Test Framework

Unit Test Prüfling

35 Digicomp Microsoft Evolution Day 2015

Gehört Testen zur Architektur?

Definitiv ja!

Testen soll bereits im Lösungsansatz Platz finden!

Schichtenmodell

Komponentenmodell

Ersetzbarkeit (Mocking/Simulation)

36 Digicomp Microsoft Evolution Day 2015

Unterstützung in Visual Studio 2015

37 Digicomp Microsoft Evolution Day 2015

Generelle Unterstützung

Classic Unit Tests

Happy Path Unit Tests

Alternative Path Unit Tests

Exception Path Unit Tests

Data-Driven Unit Tests

Coded UI Tests (nur Visual Studio Enterprise)

IntelliTesting (nur Visual Studio Enterprise)

Unterstützt auch 3rd Party Unit Test Frameworks

38 Digicomp Microsoft Evolution Day 2015

Demo

Classic Unit Tests

Happy Path Unit Tests

Alternative Path Unit Tests

Exception Path Unit Tests

Data-Driven Unit Tests

39 Digicomp Microsoft Evolution Day 2015

Scenario

public string SimpleMethod(string argument)

{

if (string.IsNullOrEmpty(argument))

throw new ArgumentNullException("argument");

int indexSpace = argument.IndexOf(" ");

switch(indexSpace)

{

case -1:

return argument;

case 0:

return string.Empty;

default:

return argument.Substring(0, indexSpace);

}

}

40 Digicomp Microsoft Evolution Day 2015

Happy Path Unit Test

[TestClass()]

public class SimpleDemoTypeTests

{

[TestMethod()]

public void HappyPathSimpleMethodTest()

{

string expectedString = "Testing";

string resultingString = null;

SimpleDemoType sample = new SimpleDemoType();

resultingString = sample.SimpleMethod(expectedString);

Assert.AreEqual<string>(expectedString, resultingString);

}

41 Digicomp Microsoft Evolution Day 2015

Alternative Path Test

[TestMethod()]

public void AlternativePathSimpleMethodTest()

{

string parameter = "Testing an alternative path";

string expectedString = "Testing";

string resultingString = null;

SimpleDemoType sample = new SimpleDemoType();

resultingString = sample.SimpleMethod(parameter);

Assert.AreEqual<string>(expectedString, resultingString);

}

42 Digicomp Microsoft Evolution Day 2015

Exception Test

[ExpectedException(typeof(ArgumentNullException))]

[TestMethod()]

public void ExceptionPathSimpleMethodTest()

{

string parameter = null;

string resultingString = null;

SimpleDemoType sample = new SimpleDemoType();

resultingString = sample.SimpleMethod(parameter);

// On using the attribute ExpectedExceptionAttribute you must

// not assert the test. It is automatically asserted to the

// expected exception type.

}

43 Digicomp Microsoft Evolution Day 2015

Data driven Test

[DeploymentItem("DataDrivenTestDemo.xml")]

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", // Type of data source

"DataDrivenTestDemo.xml", // Name of XML file

"SimpleTestData", // Name of table element

DataAccessMethod.Sequential)] // Kind of data access

[TestMethod()]

public void DataDrivenSimpleMethodTest()

{

string parameter = TestContext.DataRow["parameter"] as string;

string expectedString = TestContext.DataRow["expected"] as string;

string exceptionType = TestContext.DataRow["exceptionType"] as string;

string resultingString = null;

if (parameter == "null") parameter = null;

SimpleDemoType sample = new SimpleDemoType();

44 Digicomp Microsoft Evolution Day 2015

Data driven Test

try

{

resultingString = sample.SimpleMethod(parameter);

Assert.AreEqual<string>(expectedString, resultingString);

}

catch (ArgumentNullException exception)

{

if (string.IsNullOrWhiteSpace(exceptionType))

Assert.Fail("An unexpected exception has been caught.");

else

if (string.Compare(exception.GetType().Name, exceptionType, true) != 0)

Assert.Fail("Type is not as expected.");

}

}

45 Digicomp Microsoft Evolution Day 2015

Coded UI Test (nur Visual Studio Enterprise)

Testen von Benutzeroberflächen

Unterstützt Forms, WPF und Web

Tests können generiert werden

In der Praxis ist eine händische Codierung erfolgreicher

Integration für die Testausführung

46 Digicomp Microsoft Evolution Day 2015

IntelliTest (nur Visual Studio Enterprise)

Neustes Kind der Testumgebung

Integriert in Visual Studio 2015

Generiert den Unit Test aufgrund des Nutzcodes

Instant-Ausführung möglich

Generierung des Unit Tests und Integration in Automation ist möglich

Ziel 100% Codeabdeckung

47 Digicomp Microsoft Evolution Day 2015

IntelliTest – Create Unit Test

Generieren anstelle von ausführen

Erzeugt eine PEX1-Assembly

Generierten Test ausführen

Erzeugt die Test-Methoden

Prüfen der Codeabdeckung

Bereit für die Testautomation

1) PEX = Possible Execution

48 Digicomp Microsoft Evolution Day 2015

IntelliTest – direkte Ausführung

49 Digicomp Microsoft Evolution Day 2015

IntelliTest – Resultat der Ausführung

50 Digicomp Microsoft Evolution Day 2015

Testüberwachung Visual Studio 2015

Test Explorer zeigt alle Unit Tests

Ausführung einzeln / mehrere / alle

Ausführung mit oder ohne Debugging

Verschiedene Sortierungen

Messen der Codeabdeckung (Enterprise)

51 Digicomp Microsoft Evolution Day 2015

Test Explorer

52 Digicomp Microsoft Evolution Day 2015

Testüberwachung TFS 2015

53 Digicomp Microsoft Evolution Day 2015

Testdetails im TFS

54 Digicomp Microsoft Evolution Day 2015

Zusammenfassung

55 Digicomp Microsoft Evolution Day 2015

Recap

1. Testen gehört zur Entwicklung wie das Lesen der News zum Tag

2. Testen ist anspruchsvoll und muss bereits in der Architektur berücksichtigt werden

3. Visual Studio und der TFS unterstützt dieses Vorhaben in allen Belangen

4. Wer testet eigentlich den Testcode?

56 Digicomp Microsoft Evolution Day 2015

Besten Dank für Ihre Aufmerksamkeit

Für allfällige Fragen stehen wir Ihnen jederzeit gerne zur Verfügung:

weroSoft AG

Obere Zollgasse 75

3072 Ostermundigen

rolf.wenger@weroSoft.net

Recommended