Das Test-Framework JUnit ETIS SS04



Ähnliche Dokumente
Testen mit JUnit. Motivation

Test-Driven Design: Ein einfaches Beispiel

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

Software-Engineering Software-Management

Software - Testung ETIS SS05

Programmiertechnik II

Unit Tests mit Junit 4. Dario Borchers

Unit Tests in der Testgetriebenen Entwicklung

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

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

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

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

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

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Unit Testing mit JUnit. Dr. Andreas Schroeder

Markus Wichmann. Testen von Java Code mit. JUnit

JUnit. Software-Tests

Java: Vererbung. Teil 3: super()

Software Engineering in der Praxis

SEP 114. Design by Contract

Programmieren in Java

am Beispiel von JUnit

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

Test-driven development JUnit-Test. Lars Varain

Einführung in die Informatik Tools

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

Java Schulung. Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit. Prof. Dr. Nikolaus Wulff

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Objektorientierte Programmierung für Anfänger am Beispiel PHP

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

Unit Tests und Fehlersuche

Programmierung 2 Studiengang MI / WI

Thema: Testen von objektorientierter Software

Testen mit JUnit. Martin Wirsing. Ziele. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Testgetriebene Entwicklung mit JUnit4

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmierung 2 Studiengang MI / WI

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Algorithmen und Datenstrukturen

3 Objektorientierte Konzepte in Java

Einführung in die Programmierung

Unit Testing, SUnit & You

Javakurs 2013 Objektorientierung

Programmierpraktikum Java Entdecken. Merkblatt 3

Objektorientierte Programmierung

Testphase. Das Testen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Software Engineering Interaktionsdiagramme

Objektorientierte Programmierung

Das automatisierte Testen mit JUnit

Typumwandlungen bei Referenztypen

Kapitel 6. Vererbung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Vgl. Oestereich Kap 2.7 Seiten

Vererbung & Schnittstellen in C#

Kapitel 6. Vererbung

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

Grundlagen von Python

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

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

Folge 18 - Vererbung

Qualitätserlebnis statt Qualitätssicherung. Eine Mehrfachfallstudie agiler Teams

Innere Klassen in Java

Code verifizieren mittels

Einführung in die Java- Programmierung

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Verwendung des IDS Backup Systems unter Windows 2000

5. Abstrakte Klassen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Kapitel 6. Vererbung

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

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

.NET Code schützen. Projekt.NET. Version 1.0

Whitebox-Tests: Allgemeines

Internet Explorer Version 6

Java Kurs für Anfänger Einheit 5 Methoden

Theoretische Informatik SS 04 Übung 1

Java Einführung Abstrakte Klassen und Interfaces

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Praktische Übung 'JUnit-Test'

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Prinzipien Objektorientierter Programmierung

Reporting Services und SharePoint 2010 Teil 1

Anwenden eines Service Packs auf eine Workstation

4D Server v12 64-bit Version BETA VERSION

Software Engineering Klassendiagramme Einführung

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

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

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

Einführung in die Programmierung für NF

Arbeiten mit UMLed und Delphi

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Applet Firewall und Freigabe der Objekte

Kurzanleitung JUnit. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Transkript:

Das Test-Framework JUnit ETIS SS04

Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2

Motivation (I) Kostspielige Folgen von Fehlern in Software SOMIT: Testen wichtig!!! ABER: fast keiner tut es Vorurteile: Keine Zeit, ABER: Tests stabilisieren Code Keine Lust, ABER: Testen ist kreativ + schafft Vertrauen zum Programm Mein Code ist fehlerfrei, ABER: Auswirkungen von Verbesserungen auf alten Code? Testabteilung testet, ABER: Je früher Fehler erkannt, desto besser 3

Unit - Tests Motivation (II) Test einzelner Komponenten White-Box-Tests Anforderungen an Test - Frameworks: Test- und Anwendungscode getrennt (Größe/Übersicht) Testfälle unabhängig ausführbar (Fehler finden) Testergebnis schnell erkennbar JUnit erfüllt diese Anforderungen 4

Motivation(III) JUnit: Open source Framework Schreiben und Ausführen automatischer Unit Tests unter Java Version 3.8.1 (http://www.junit.org/) In jeder gängigen Java-IDE verwendbar Autoren: Kent Beck (Extreme Programming) Erich Gamma (Mitglied Gang of Four - Design Pattern) Entsprechende Frameworks für gängige Programmiersprachen erhältlich 5

Motivation(IV) JUnit in eclipse 6

Ziel: TestFirst (I) Qualitätssicherung: Testbarkeit, Einfachheit Vorgehen: Vor eigentlicher Codierung Test schreiben Erst wenn Test fehlerfrei, dann ist Code fertig Nur soviel Produktionscode wie Test verlangt Kleine Schritte (abwechselnd Test- und Produktionscode) Vor Integration in Gesamtsystem muss Unit Test erfolgreich sein 7

Vorteile: TestFirst (II) gesamter Code ist getestet (Zerstörung funktionierenden Codes sofort entdeckt) Tests dokumentieren Code Schnelles Feedback durch kurze Wechsel Erzeugung von Test- und Produktionscode Einfaches Design, da durch Test bestimmtes Design Vorsicht: Wenn nur triviale Testfälle betrachtet, nutzen Tests wenig... 8

Grundlagen Einbinden der Testklasse in JUnit durch ableiten von Framework- Basisklasse junit.framework.testcase jede Testklasse erhält Konstruktor für Namen des auszuführenden Testfalls JUnit erkennt Methode als Testfall, da sie Konvention public void test..() folgt mit assert- Methoden, z.b. asserttrue(...) kann man Bedingungen testen bei Fehlerfall bricht JUnit laufenden Testfall mit AssertionFailedError ab 9

Assert (I) Klasse Assert definiert Tests von Werten und Bedingungen, die erfüllt sein müssen, Beispiele: Test, ob Bedingung wahr asserttrue(boolean condition) asserttrue(fritz.isradiostation) Test, ob zwei Objekte gleich (über equals- Methode) assertequals(object expected, Object actual) assertequals( JUnit, J + Unit ) 10

Assert (II) Test, ob zwei Fliesskommazahlen gleich sind (bei festzulegender Toleranz) assertequals(double expected, double actual, double delta); assertequals(3.00, 2.995, 0.005); Test, ob Objektreferenz null assertnull(hashmap.get(key)); Test, ob zwei Referenzen auf selbes Objekt verweisen assertsame(bar, hashmap.put( foo, bar).get( foo )); 11

TestCase (I) Ausführung Testfälle auf fixem Satz zu testender Objekte (Test - Fixture) Pro Testfallmethode meist nur bestimmte Operation der Fixture getestet Alle Testfälle einer Testklasse sollen von gemeinsamer Fixture Gebrauch machen 12

TestCase (II) Damit fehlerhafte Testfälle andere Testfälle nicht beeinflussen: Test - Fixture neu initialisieren Testklasse erbt von TestCase Test-Fixture Instanzvariablen in Testklasse Methode setup() überschreiben, um Instanzvariable zu initialisieren Methode teardown() überschreiben, um Ressouren (DB- Verbindung u.ä.) freizugeben setup() wird vor Ausführung eines Testfalls aufgerufen, teardown() danach 13

TestCase (III) public class EuroTest extends TestCase{ private Euro two; public EuroTest(String name){ } super (name); } protected void setup(){ two = new Euro(2.00); } protected void teardown(){ } 14

Lebenszyklus TestCase 1. Testframework sucht in Testklassen nach öffentlichen Methoden, ohne Parameter und Rückgabewert, die mit test beginnen (Reflection) 2. Sammeln der Methoden in Testsuite + unabhängige Ausführung 3. Für jeden Testfall neue Instanz der Testklasse und damit Test-Fixture erzeugen, um Seiteneffekte zu vermeiden 4. Vor Ausführung Testfall setup() aufgerufen (falls neu definiert) 5. test-methoden ausgeführt 6. Nach Test teardown (falls neu definiert) 7. Schritte ab 3 wiederholen, bis alle Testfälle einmal ausgeführt 15

UML Diagramm TestCase JUnit-Framework Assert asserttrue() assertequals() assertnull()... TestCase setup() teardown() EigenerTest testmethode() 16

TestSuite (I) Dient dem Zusammenfassen von Tests Suite: TestSuite- Objekt, dem beliebig viele Tests und Testsuiten hinzugefügt werden können In statische suite - Methode definiert, welche Tests zusammen auszuführen sind public static Test suite(){ } TestSuite suite = new TestSuite(); suite.addtestsuite(costumertest.class); suite.addtestsuite(movietest.class); return suite; 17

TestSuite(II) Komposite Pattern <<interface>> Test 1..n TestCase TestSuite tests 18

Zusammenfassung JUnit: Framework für Test von Java - Programmen Dient Test von Komponenten Unit Tests sind Investition in die Zukunft erleichtert es, dem Testcode gleiche Aufmerksamkeit wie Programmcode widmen 19

Literatur http://www.frankwestphal.de/unittestingmitjunit.html Johannes Link, Unit Tests mit Java, dpunkt.verlag, 2002 Barbara Beenen, Einführung in JUnit- Rot - grünes Wechselspiel, javamagazin, 05/04 Backschat, M., Edlich, J2EE - Entwicklung mit Open - Source- Tools, Spektrum Akademischer Verlag, München, 2004 20