Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG



Ähnliche Dokumente
Testen mit JUnit. Motivation

Programmiertechnik II

Unit Testing mit NUnit

Java: Vererbung. Teil 3: super()

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Unit Testing mit JUnit. Dr. Andreas Schroeder

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Grundlagen von Python

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Testen im Software- Entwicklungsprozess

Menü auf zwei Module verteilt (Joomla 3.4.0)

Objektorientierte Programmierung

Mastermind. Testplan. Hochschule Luzern Technik & Architektur. Programmieren 2 FS12. Gruppe 10

Software - Testung ETIS SS05

Markus Wichmann. Testen von Java Code mit. JUnit

Testen mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls

Technische Dokumentation SilentStatistikTool

Das Test-Framework JUnit ETIS SS04

5.2 Neue Projekte erstellen

PowerPoint vertonen. by H.Schönbauer 1

Etikettendruck mit Works 7.0

teamsync Kurzanleitung

IINFO Storyboard

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Wasserzeichen mit Paint-Shop-Pro 9 (geht auch mit den anderen Versionen. Allerdings könnten die Bezeichnungen und Ansichten etwas anders sein)

Erfahrungen mit Hartz IV- Empfängern

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Komponentenbasierter Taschenrechner mit CORBA

Einführung in die Programmierung für Wirtschaftsinformatik

Educase. Release Notes 1.7: Neue Funktionen und Verbesserungen. Base-Net Informatik AG Wassergrabe 14 CH-6210 Sursee

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Was ich als Bürgermeister für Lübbecke tun möchte

1 Was ist das Mediencenter?

How to do? Projekte - Zeiterfassung

Unit Tests mit Junit 4. Dario Borchers

Algorithmen und Datenstrukturen

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Unit Tests und Fehlersuche

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

K. Hartmann-Consulting. Schulungsunterlage Outlook 2013 Kompakt Teil 1

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Einführung in die Java- Programmierung

Einführung in die Informatik Tools

SEP 114. Design by Contract

WhiteStarUML Tutorial

Updatehinweise für die Version forma 5.5.5

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Konzeption. und prototypische Implementierung. eines Werkzeuges. für den funktionalen Klassentest

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

zlib-lizenz (kompatibel zur GNU General Public License )

Print2CAD 2017, 8th Generation. Netzwerkversionen

U08 Entwurfsmuster (II)

Anleitung zum GUI Version 2.x

Übungen Programmieren 1 Felix Rohrer. Übungen

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Framework zur Unterstützung von Unit-Tests

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Task: Nmap Skripte ausführen

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Kulturelle Evolution 12

Test-Driven Design: Ein einfaches Beispiel

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

Statuten in leichter Sprache

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

Design by Contract with JML

Stapelverarbeitung Teil 1

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

SCHULUNG MIT SYSTEM: E-LEARNING VON RAUM21

Kommunikations-Parameter

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

BEDIENUNGSANLEITUNG. Keybox 9000 Basic Keybox 9000 System Keybox 9000 Expansion KeyWin PC Software Light

Vorkurs C++ Programmierung

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Meine Entscheidung zur Wiederaufnahme der Arbeit

Erstellen und Bearbeiten von Inhalten (Assets)

Idimager ein Bildverwaltungsprogramm-DAM Software

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Elexis-BlueEvidence-Connector

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Programmierkurs Java

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software

Leere Zeilen aus Excel-Dateien entfernen

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Professionelle Seminare im Bereich MS-Office

Transkript:

Unit-Test Theorie und Praxis Stephan Seefeld, INGTES AG

Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 2

Quellen Für diesen Vortrag verwendete Quellen: dotnet User Group Berlin Brandenburg http://www.dotnet-berlinbrandenburg.de/ Präsentationen von Michael Stumpf http://home.wtal.de/michael/mstumpf_nunit.ppt/ Development-Workshop mit Kent Beck NUnit-Dokumentation http://www.nunit.org/ Erfahrung aus der Praxis Seite 3

Unit-Test Deutsch: Modultest, Komponententest Vorgehen zur Verifikation der Korrektheit von Modulen (z. B. Klassen) einer Software. Seite 4

Unit-Test Möglichst jede Funktion mit Testfall abdecken. Testfälle werden als Code programmiert. Testfälle werden immer wieder ausgeführt (Regression). Vor einem Release müssen 100% der Tests erfolgreich sein. Seite 5

Positionierung Unit-Test White box Black box Unit-Test Regressionstest Performance-Test Integrationstest Seite 6

Jeder Programmierer schreibt Unit-Tests Ungetesteter Code läuft nicht. Konventionelle Entwicklertests Handeingabe im GUI Debuggen Testcode überall im Programm Unit-Tests Unterstützung durch Framework Tests sind reproduzierbar Seite 7

Entwickler als Tester Verbindet Code-Produktion mit Verantwortung für Code-Qualität. Schnelleres Feedback Weniger Angst vor dem Test Seite 8

und zudem... Weniger Mängel Gerechtfertigte Erhöhung der Selbstsicherheit Führt zu höherer Produktivität Bessere Programmarchitektur Besser änderbar Seite 9

Kosten Schulungsaufwand Werkzeuge Energie für Kulturwechsel Anstoss Chaos und Angst vor Änderungen Verhindern, dass das Rad zurück gedreht wird Zeit um Tests zu schreiben Seite 10

Grenzen von Unit-Tests Findet nicht jeden Programmfehler. Testet Module, aber findet keine Fehler bei der Integration, Performance-Probleme oder andere systemweiten Probleme. Nicht jeder denkbare Input kann geprüft werden. Unit-Tests mit anderen Tests kombinieren! Seite 11

Was kann ich mit Unit-Tests testen? Seite 12

Erwartetes Resultat testen Überprüfen, ob eine Methode das erwartete Resultat zurückgibt. Seite 13

Sonderfälle testen Jedes Objekt: Null Pointer Strings: Leerer String Collections: Leere Collection Genau ein Element Maximale Größe Duplikate Zahlen 0 Kleinste Zahl Etwas kleiner als die kleinste Zahl Größte Zahl Gerade grösser als grösste Zahl Summe Zahlen > MAX Suchen Nicht gefunden Ein Treffer Mehrere Treffer Seite 14

Einfluss auf die Architektur Abkopplung der zu testenden Objekte Entkoppeln von Units Parameter übergeben Interfaces Keine globalen Objekte mit Status (Singletons) Testbare Architekturen sind wartbarer! Entkopplung vereinfacht Änderungen Unit-Tests verringern das Risiko bei Änderungen Seite 15

Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 16

NUnit Kompaktes Framework zum Unit-Testing Portiert von JUnit An.NET-Philosophie angepasst Unterstützt beliebige.net-sprachen OpenSource (C#) Aktuell: Version 2.2.8 Seite 17

Benutzeroberfläche von NUnit Seite 18

Wohin mit den Tests? In die zu testende Klasse? In die selbe Datei? In einer separaten Test-Assembly? In die selbe Assembly in eigene Klasse und Datei? Seite 19

Testaufbau Seite 20

Kennzeichnen von Tests [TestFixture] Kennzeichnet eine Test-Klasse. Klasse muss public sein und muss einen Standard- Konstruktor haben. [Test] Kennzeichnet eine Test-Methode. Methode muss parameterlos und ohne Rückgabewert sein. Seite 21

Weitere NUnit-Attribute [SetUp] Initialisierung, die vor jedem Testfall ausgeführt wird Darf nur einmal pro Testklasse existieren [TearDown] Aufräumen von Ressourcen nach jedem Test Darf nur einmal pro Testklasse existieren Seite 22

Noch mehr NUnit-Attribute... [ExpectedException] Verwendbar mit [Test] Erfordert Exception in der Test-Methode, sonst gilt der Testfall als fehlgeschlagen C# Syntax: [ExpectedException(typeof(myException))] [Ignore] Verwendbar mit [Test] Kennzeichnet eine Test-Methode als inaktiv C# Syntax: [Ignore( Grund für Ignorieren )] Seite 23

Die Klasse Assertion Aus Namespace NUnit.Framework Bietet statische Methoden zum Testen innerhalb einer mit [Test] gekennzeichneten Methode Seite 24

Methoden von Assertion AssertEquals(erwarteter_Wert, Resultat) Test schlägt fehl, wenn Parameter ungleich sind Resultatvergleich In vielen Varianten vorhanden Assert(Bedingung) Test schlägt fehl, wenn Parameter false ist Fail(Fehlermeldung) Test schlägt mit der angegebenen Begründung fehl Seite 25

Methoden von Assertion II AssertNotNull(object) Test schlägt Fehl, wenn Parameter null ist AssertNull(object) Test schlägt Fehl, wenn Parameter nicht null ist AssertSame(object, object) Test schlägt Fehl, wenn Parameter nicht das selbe Objekt referenzieren (Referenzvergleich) Seite 26

Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 27

Implementieren von Tests Vorgehen Einbinden der Assembly nunit.framework.dll Verwenden des Namespace NUnit.Framework (using NUnit.Framework; in C#) Markieren der Testklassen und Methoden mit Attributen NUnit erkennt per.net-reflection die zu testenden Elemente innerhalb einer Assembly Seite 28

NUnit Nunit.framework Bietet Attribute und Hilfsfunktionen an. nunit-console.exe Produziert XML-Daten (Transformation mit XSLT) nunit-gui.exe Grafische Benutzeroberfläche für NUnit Praktisch: Ausgabe von Console.WriteLine(string) wird protokolliert Seite 29

Vorgehen Demo 1. Plattform: Visual-Studio 2003, NUnit 2.2.8 2. Form-Applikation erstellen 3. Klasse StringAnalyzer mit Methode static int ZaehleSterne erstellen 4. Klasse StringAnalyzerTest erstellen ZaehleSterne( *** ) 5. StringAnalyzerTest zur Testklasse machen 6. Testmethode ZaehleSterneTest erstellen Tests Normal, Split( * -1) 7. Test leerer String 8. Test Null -> ArgumentNullException() 9. Erweiterung: Andere Arten von Sternen z. B. * oder #. Sternenart als Property > Memory effekt > als Parameter 10. Klasse statt Static Setup / Teardown 11. String kommt von seriellem Stream - Interface Seite 30