Unit Tests mit Junit 4. Dario Borchers



Ähnliche Dokumente
Fortgeschrittenes Programmieren mit Java. Test Driven Development

Programmiertechnik II

Das Test-Framework JUnit ETIS SS04

Markus Wichmann. Testen von Java Code mit. JUnit

Testen mit JUnit. Motivation

Test-Driven Design: Ein einfaches Beispiel

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

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

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

Unit Testing mit JUnit. Dr. Andreas Schroeder

Unit Testing, SUnit & You

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

JUnit. Software-Tests

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

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

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

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

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

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

Test-driven development JUnit-Test. Lars Varain

am Beispiel von JUnit

SEP 114. Design by Contract

Java Entwicklung für Embedded Devices Best & Worst Practices!

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

TDD für iphone OS. xpdays Tammo Freese

Einführung in die Informatik Tools

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

MailUtilities: Remote Deployment - Einführung

Unit Tests in der Testgetriebenen Entwicklung

Unit Tests und Fehlersuche

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

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Kleines Handbuch zur Fotogalerie der Pixel AG

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

1. Bearbeite Host Netzgruppen

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

BIF/SWE - Übungsbeispiel


Agile Softwareprozess-Modelle

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

Professionelle Seminare im Bereich MS-Office

Studieren- Erklärungen und Tipps

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Kalenderfunktion in Open-Xchange richtig nutzen (PC-Support)

SEMINAR Modifikation für die Nutzung des Community Builders

Lokale Installation von DotNetNuke 4 ohne IIS

Erfahrungen mit Hartz IV- Empfängern

Kurzeinführung Excel2App. Version 1.0.0

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Qualitätsmanagement im Projekt

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Praktische Übung 'JUnit-Test'

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

GeoPilot (Android) die App

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering in der Praxis

Carolo Knowledge Base

Testgetriebene Entwicklung mit JUnit4

Javakurs 2013 Objektorientierung

IT-SICHERHEIT IM UNTERNEHMEN Mehr Sicherheit für Ihre Entscheidung

Software-Entwicklung

Übung: Verwendung von Java-Threads

Objektorientierte Programmierung. Kapitel 12: Interfaces

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Online bezahlen mit e-rechnung

Software Engineering Klassendiagramme Assoziationen

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

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

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

Internet Explorer Version 6

10 Jahre agile Softwareentwicklung Wie erwachsen sind wir geworden?

Testphase. Das Testen

Java Kurs für Anfänger Einheit 5 Methoden

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

PowerPoint vertonen. by H.Schönbauer 1

Strategie & Kommunikation. Trainingsunterlagen TYPO3 Version 4.3: News Stand

Task: Nmap Skripte ausführen

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Testen Prinzipien und Methoden

Grundlagen zur Erstellung und dem Relaunch einer Homepage. Julius Hoyer Osnabrück März 2015

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

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

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Ich möchte eine Bildergalerie ins Internet stellen

EINFACHES HAUSHALT- KASSABUCH

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Anleitung zur Webservice Entwicklung unter Eclipse

Was versteht man unter Softwaredokumentation?

Die Windows 7 Sicherung im Detail

Transkript:

Unit Tests mit Junit 4 Dario Borchers

Agenda Warum testgetriebene Entwicklung von Software? - Motivation Was ist testgetriebene Entwicklung? - Prozess der testgetriebenen Entwicklung - Arten von Tests Junit 4 - Vorstellung - Integration in Eclipse - Testsuits, Testcases, Klassendiagramm - Phasen des Testens: Setup, Teardown etc. - Assertions, Arten von Fehlern Folie 2

Motivation Testen ist die Suche und das bewusste Provozieren von Fehlern Testen ist eine unliebsame Aufgabe - Fleißaufgabe - Suche nach der Nadel im Heuhaufen, stößt auf wenig Gegenliebe - Kanon von Ausreden - Ich habe dafür keine Zeit, Warum ich und nicht die Qualitätsabteilung? oder Ich bin Projektleiter, ich habe wichtigeres zu tun Der Prozess des Testens ist der letzte Schritt in der Entwicklung - Oft wird hier zuerst gespart - Software reift beim Kunden - Der Kunde ist Beta-Tester Folie 3

Motivation Folie 4

Motivation Ziel: Herrunterbrechen und Verlagern des Prozesses des Testens - Testen näher in den Fokus der Entwickler bringen - Verantwortung der Entwickler herausstellen - Permanentes Testen auf Komponentenebene - Testen einzelner Funktionen, Methoden, Klassen etc. in Isolation - Automatisieren des Testens - Testen auf Knopfdruck Folie 5

Test-Driven Development Auch Test-First Development genannt Iterativer Prozess Wird in andere Entwicklungsprozesse eingebettet - Extreme Programming, Scrumm, etc. Software wird auf atomarer Ebene getestet - Jede Funktion, Methode, Klasse, etc. wird getestet. - Daher sofortige Sichtbarkeit von funktionszerstörenden Änderungen. - Der Test Dokumentiert die Funktionalität der getesteten Komponenten. Folie 6

Test-Driven Development 1.ter Schritt: Test hinzufügen - Überlegen, was implementiert werden soll - Überlegen, wie es getestet werden soll - Den Test implementieren - Den Test ausführen - Fehlschlag beobachten Folie 7

Test-Driven Development 2.ter Schritt: Test erfüllen - Genug Code schreiben, um den Test laufen und fehlschlagen lassen zu können - Test ausführen, Fehlschlag beobachten - Code schreiben und den Test erfüllen - Test ausführen, den Erfolg beobachten Folie 8

Test-Driven Development 3.ter Schritt: Code vereinfachen, Refactoring - Redundanten Code entfernen - Ggf. Code Kommentieren - Code vereinfachen - Allgemeinheit des Codes erhöhen - Test laufen lassen, Erfolg beobachten Folie 9

Arten von Softwaretests Unit Test - Testet den einzelnen Baustein (Methode, Klasse) Integrationstest - Testet das Zusammenspiel der Bausteine Funktionaler Test - Testet die Anwendungsfälle (use cases) Folie 10

Arten von Softwaretests Stress Test - Testet das Systemverhalten unter hoher Last: Antwortzeiten, etc. Akzeptanztest - Testet die Software gegen die Anforderungen des Kunden Folie 11

Kritik Auch mit Test-Driven Development kann die Fehlerfreiheit der Software nicht garantiert werden. - Man weis, was getestet wurde, aber nicht, was übersehen wurde - Ein grüner Balken garantiert also nicht die Fehlerfreiheit der getesteten Komponente Wann ist die Codeabdeckung der Tests ausreichend? Der Wunsch grün zu testen, führt dazu, dass (unbewusst) nur soviel programmiert und getestet wird, dass der Test läuft. - Häufig in der Praxis beobachtetes Anti-Pattern Wenn Code- und Testautor die gleiche Person sind, können sich Denkfehler in der Implementation und im Test niederschlagen - Ergebniss: grüner Balken, obwohl Code und Test fehlerhaft sind Folie 12

Junit ist ein Framework zur Durchführung automatischer Blackbox- Tests in Java - Fokus auf Einfachheit, Automatismen, schnelle Feedback-Zyklen - Aktuelle Version: 4.10 (stand: 4.12.2011) - Open Source - Lizenz: Common Public License 1.0 - Homepage: http://www.junit.org - Entwickelt von Kent Beck, Erich Gamma, u.a. Folie 13

Integration in Eclipse - Seit Eclipse 3.0 als Plugin in der Default-Installation - Erstellen von Coderümpfen auf Knopfdruck - Testcases ohne Probleme - Testsuites über Umwege - File -> New -> Other -> Java -> Junit Test Case - Die Testmethoden müssen öffentlich und parameterlos sein, außerdem muss der Name mit test beginnen Folie 14

Folie 15

Folie 16

Klassendiagramm - TestCase-Objekt beinhaltet Tests Und definiert die Umgebung (Fixture) - TestSuite-Objekt beinhaltet und führt die verschiedenen TestCases aus - TestResult Objekte Sammeln die aufgetretenen Fehler - Assert beinhaltet statische Methoden für die Tests - TestRunner Führen die Tests aus, BaseTestRunner ust die Oberklasse Folie 17

Lebenszyklus der Tests - Before wird als erstes genau ein mal ausgeführt Schlüsselwort: @BeforeClass - Setup und Teardown werden jedes mal vor bzw. nach jedem Test ausgeführt Schlüsselwörter @Before, @After - After wird nach Beendigung aller Tests genau ein mal ausgeführt - Before, Setup, Teardown und After bilden zusammen die sog. Testfixture - Die Methoden für Before und After müssen als static deklariert werden Folie 18

Bsp.: Verkettete Liste - @BeforeClass: Erzeugung einer Neuen leeren Liste - @Before: Befüllen der Liste mit definierten Testdaten Folie 19

Bsp.: Verkettete Liste - @Test: der Test - @After: Löschen der Elemente In der Liste - @AfterClass: leere Methode Folie 20

Assertions - to assert (sth.): Etwas Behaupten, etwas feststellen - Assertion: eine Behauptung Folie 21

Assertions - asserttrue(boolean condition) behauptet, dass condition wahr ist. Folie 22

Assertions - assertfalse(boolean condition) behauptet, dass condition falsch ist. Folie 23

Assertions - assertequals(object a,object b) behauptet, a und b sein gleich - Für die Prüfung wird die Equals-Methode an a und b verwendet - Wenn a und b null sind, ist die Behauptung wahr Folie 24

Assertions - assertarrayequals(object[] a, Object[] b) behauptet, a und b sein gleich - Die Prüfung erfolgt Element für Element - Wenn a und b null sind, ist die Behauptung wahr Folie 25

Assertions - assertnotnull(java.lang.object a) behauptet, a ist kein Null-Pointer Folie 26

Assertions - assertnull(java.lang.object a) behauptet, a ist ein Null-Pointer Folie 27

Assertions - assertnotsame(object a, Object b) behauptet, die Referenzen auf a und b sind nicht identisch - Sinvoll, wenn assertequals() wahr ist Folie 28

Assertions - fail() und fail(string message) brechen einen Test ab. - Abbruch der Testmethode, Test schlägt fehl Folie 29

Arten von Fehlern - Junit unterscheidet zwei arten von Fehlern bei den Tests: - Failure: der Test schlug fehl. Eine AssertionErrorException wurde gefangen. Die getestete Methode/Klasse lieferte also einen unerwarteten Rückgabewert. - Error: Der Test konnte nicht ausgeführt werden. Der Fehler liegt i.d.r. in der Testklase Folie 30

Vielen Dank Fragen? Folie 31