Das Test-Framework JUnit

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Lexikon der Qualität Begriffe in Verbindung mit Qualität und ISO9000 finden sie auch im Lexikon der Qualität erläutert (
Prüfung objektorientierter Programme -1
Phasen und ihre Workflows
Eine Testumgebung für Java
Kritische Betrachtung
Kapselung , toString , equals , Java API
der Universität Oldenburg
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Testgetriebene Entwicklung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Regeln für Tester - best practice 1 Prüfe das eigene Programm nie als Einziger Testen.
FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Das Test-Framework JUnit
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Eclipse - Entwicklungsumgebung und mehr ETIS SS05.
XDoclet ETIS SS05.
Reflection API ETIS SS05.
Automatisches Testen und Bewerten von Java-Klassen
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Wasserfallmodel Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 WS 2012 Software-Engineering II Objektorientiertes Testen.
Remote Methode Invocation (RMI)
Software Design Patterns Extreme Programming (XP).
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Whitebox Testen mit JUnit
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Stefan Lieser Web:
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
TDD mit MSTest Stefan Lieser Web:
Test-Driven Development
XML Seminar: XP und XML 1 XP and XML Gregor Zeitlinger.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
Software - Testung ETIS SS05.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Annette Bieniusa Sommersemester 2015
 Präsentation transkript:

Das Test-Framework JUnit ETIS SS05

Gliederung Motivation Extreme Programming Test-First Das Framework Grundlagen Assert TestCase TestSuite Zusammenfassung JUnit ETIS SS05 - Nadine Fröhlich

Motivation(I) JUnit: Open source Test-Framework Autoren: Schreiben und Ausführen automatischer Unit Tests unter Java Aktuell: 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 Programmier-sprachen erhältlich (PhpUnit, CppUnit,…) JUnit ETIS SS05 - Nadine Fröhlich

Extreme Programming (XP) Unit-Tests vor XP wenig in Praxis angewandt - in XP: zentrale Tätigkeit XP: agiler Softwareentwicklungsprozess Schlüsselaktivität: Programmieren für kleine bis mittelgroße Teams außergewöhnlich stark durch den Kunden gesteuert während Entwicklung Reaktion auf vage und rasch ändernde Anforderungen möglich ermöglicht Erstellung langlebiger Software JUnit ETIS SS05 - Nadine Fröhlich

Extreme Programming (XP) - Prinzipen Pair Programming + Gemeinsame Verantwortlichkeit Programmierstandards festlegen und einhalten möglichst einfaches Design + häufiges Refactoring Ständige isolierte, automatisierte Unit-Tests Unit-Test müssen zu 100% laufen i.d.R. verbunden mit Test-First-Ansatz Kunde gehört zum Team Ständige Integrationstests Kurze Iterationszyklen JUnit ETIS SS05 - Nadine Fröhlich

TestFirst-Ansatz (I) Ziel: Vorgehen: 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 JUnit ETIS SS05 - Nadine Fröhlich

TestFirst-Ansatz (II) Vorteile: 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... JUnit ETIS SS05 - Nadine Fröhlich

Screenshoot – JUnit in eclipse ETIS SS05 - Nadine Fröhlich

Grundlagen (I) Name der Testklasse: Zielklassenname + Endung Test, z.B. EuroTest Einbinden von Testklassen in JUnit durch Ableiten von Framework-Basisklasse junit.framework.TestCase JUnit erkennt Methode als Testfall, wenn sie Konvention public void test…() folgt assert-Methoden, z.B. assertTrue(...) zum Test von Bedingungen bei Fehlerfall bricht JUnit den laufenden Testfall mit AssertionFailedError ab JUnit ETIS SS05 - Nadine Fröhlich

Grundlagen (II) Assert JUnit-Framework assertTrue() assertEquals() assertNull() ... TestCase setUp() tearDown() EigenerTest testMethode() JUnit ETIS SS05 - Nadine Fröhlich

Die Framework-Klasse Assert definiert Tests von Werten und Bedingungen, die erfüllt sein müssen Testklassen erben die Testmethoden über TestCase, 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“) JUnit ETIS SS05 - Nadine Fröhlich

Test – Fixture Testbasis, für Testfälle Bestandteile: fester Satz zu testender Objekte alle Testfälle einer Testklasse sollen gemeinsame Fixture nutzen Test - Fixture vor jedem Testfall neu initialisieren, um Beeinflussungen der Testfälle untereinander zu vermeiden JUnit ETIS SS05 - Nadine Fröhlich

Die Framework-Klasse TestCase (I) TestCase vererbt setUp() und tearDown() an Testklassen setUp() vor Ausführung eines Testfalls aufgerufen zu überschreiben, um Instanzvariablen zu initialisieren, d.h., enthält Code für Aufbau der Test-Fixture tearDown() nach Ausführung eines Testfalls aufgerufen zu überschreiben, um Ressouren (DB-Verbindung u.ä.) freizugeben JUnit ETIS SS05 - Nadine Fröhlich

Die Framework-Klasse TestCase (II) 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(){} JUnit ETIS SS05 - Nadine Fröhlich

TestSuite (I) dient dem Zusammenfassen von Tests TestSuite: Objekt, dem beliebig viele Tests und Testsuiten hinzugefügt werden können statische suite - Methode definiert, welche Tests zusammen auszuführen sind public static Test suite() { TestSuite suite = new TestSuite(); suite.addTestSuite(CustomerTest.class); suite.addTestSuite(MovieTest.class); return suite; } JUnit ETIS SS05 - Nadine Fröhlich

TestSuite(II) – Komposite Pattern <<interface>> Test 1..n tests TestCase TestSuite JUnit ETIS SS05 - Nadine Fröhlich

Lebenszyklus TestCase Testframework sucht in Testklassen nach öffentlichen Methoden, ohne Parameter und Rückgabewert, die mit „test“ beginnen (Reflection) Sammeln der Methoden in Testsuite + unabhängige Ausführung Für jeden Testfall neue Instanz der Testklasse und damit Test-Fixture erzeugen, um Seiteneffekte zu vermeiden Vor Ausführung Testfall setUp() aufgerufen (falls neu definiert) test-Methoden ausgeführt Nach Test tearDown (falls neu definiert) Schritte ab 3 wiederholen, bis alle Testfälle einmal ausgeführt JUnit ETIS SS05 - Nadine Fröhlich

Zusammenfassung JUnit: Framework für Test von Java - Programmen Komponententest erleichtert es, dem Testcode gleiche Aufmerksamkeit wie Programmcode widmen Investition in die Zukunft Entsprechende Frameworks für gängige Programmier-sprachen erhältlich (PhpUnit, CppUnit,…) JUnit ETIS SS05 - Nadine Fröhlich

Literatur http://www.frankwestphal.de/UnitTestingmitJUnit.html Johannes Link, Unit Tests mit Java, dpunkt.Verlag, 2002 Johannes Link et al., Softwaretests mit JUnit, dpunkt.Verlag, 2005 Barbara Beenen, Einführung in JUnit - Rot - grünes Wechselspiel, javamagazin, 05/04 Martin Backschat, Stefan Edlich, J2EE - Entwicklung mit Open - Source - Tools, Spektrum Akademischer Verlag, München, 2004 Kent Beck, Extreme Programming. Das Manifest. Addison-Wesley, München, 2000 JUnit ETIS SS05 - Nadine Fröhlich