JUnit. Software-Tests

Ähnliche Dokumente
Testen mit JUnit. Motivation

Das Test-Framework JUnit ETIS SS04

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

Unit Tests mit Junit 4. Dario Borchers

Unit Tests in der Testgetriebenen Entwicklung

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

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Unit Testing mit JUnit. Dr. Andreas Schroeder

Enterprise JavaBeans Überblick

Programmiertechnik II

Das automatisierte Testen mit JUnit

Programmierung 2 Studiengang MI / WI

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

JUnit 4 Tutorial. Wolfgang Stöttinger

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

Thema: Testen von objektorientierter Software

JUnit. Unit testing unter Java

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Software-Engineering Software-Management

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

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

Testen von Android- Anwendungen. 6. Juni 2013

Unit Testing, SUnit & You

Markus Wichmann. Testen von Java Code mit. JUnit

Unit Tests und Fehlersuche

Programmierung 2 Studiengang MI / WI

5. Dokumentieren und Testen Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Beuth Hochschule Java-Testprogramme mit JUnit schreiben WS11/12

Der EMF-generierte Code. 7. November 2012

TESTEN OBJEKTORIENTIERTER PROGRAMME MIT JUNIT

am Beispiel von JUnit

Testen von grafischen Benutzeroberflächen

Objekte nutzen und testen. Dienstag, 8. Mai: keine Vorlesung! Konzepte (Wiederholung vom Freitag) Vgl. Kapitel 5-6 im BlueJ-Buch.

Testen mit JUnit. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03

Überblick. Einleitung. Unit-Tests. JUnit. HelloWorld Beispiel. Praktische Beispiele. Referenzen

Testphase. Das Testen

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Testen von Softwaresystemen. 13. Januar 2015

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Systematisches Testen

Programmieren in Java

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Softwaretest. Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung. Algorithmen und Programmierung II SS 2008

Testen mit JUnit. Seminar Arbeit von Wang Jian, Ia00. Fachhochschule Aargau Departement Technik Studiengang I Betreuender Dozent: Prof. Dr. D.

Kurzanleitung JUnit. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen

Programmieren 2 04 Testen und Testautomatisierung

Vom Testkonzept zu JUnit

Programmierpraktikum Java Entdecken. Merkblatt 3

Listing 1: Cowboy. Listing 2: Woody

Testen von webbasierten Benutzeroberflächen

Übung zur Vorlesung Einführung in Software Engineering

Einführung in JUnit 4

Testen im Software- Lebenszyklus

Wie entwerfe ich ein Programm?

leicht zu schreiben sein. Wenn ein Test nicht leicht zu schreiben ist, werden wir ihn nicht schreiben.

UE 2: Lexikalische Analyse (Scanner)

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Automatisierte Regressionstests per Knopfdruck sparen Zeit und Ressourcen sichern die Qualität schonen die Nerven

Testen von SOA-Anwendungen mit dem BPEL Testframework

Testen mit JUnit. Softwareengineering. Verfasser: Ronny Boost, Michael Künne

Probeklausur: Programmierung WS04/05

Handbuch für die Erweiterbarkeit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Einstieg in die Informatik mit Java

Code verifizieren mittels

Komponenten-basierte Entwicklung Teil 6: Einführung in JUnit

Der EMF-generierte Code. 10. Dezember 2014

Repetitorium Informatik (Java)

Praktische Übung 'JUnit-Test'

Software Engineering in der Praxis

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

4 Testgetriebene Entwicklung mit PHPUnit

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825

Einstieg in die Informatik mit Java

1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2

Javakurs für Anfänger

Einführung in die Programmierung 1

Ein erster Blick. Eclipse und Debugging. Anlegen von Projekten. Wissenswertes...

Framework zur Unterstützung von Unit-Tests

Humboldt-Universität zu Berlin

Testen und Debugging

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Software Engineering. 4. Unit Testing und Refactoring. Franz-Josef Elmer, Universität Basel, HS 2007

FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

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

Höhere Programmierkonzepte Testklausur

Effizientes Programmieren

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Re-Engineering: Test-First-Ansatz. Dr. Thorsten Arendt Marburg, 17. Dezember 2015

Simulation und Bildanalyse mit Java Tests in Informatik und Statistik Modul-Tests mit JUnit

Kapitel 10b Test-Automatisierung

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

Transkript:

JUnit Software-Tests

Übersicht Einleitung JUnit Jia Li Grundlegendes Diana Howey Hendrik Kohrs Praktische Einbindung Benjamin Koch Zili Ye

Einleitung in allgemeines Testen

Automatische Tests Testen ist nicht nur eine Aufgabe unserer Gruppe Automatische Tests sind für uns nicht nur kurzfristig, sondern auch auf lange Sicht ein Gewinn.

Vorteile des häufigen Testens Im Laufe der Programmierung immer weniger Mängel Je früher man testet, desto leichter findet man, wo ein Fehler entstanden ist Geringere Kosten

Häufiges Testen führt letztendlich zu weniger Mängeln

Tests automatisieren Ein einfaches Beispiel : Testen wir die zum Java-Standard gehörende Klasse ArrayList. List fixture = new ArrayList(); // fixture muss jetzt leer sein Object element=new Object(); fixture.add(element); // fixture muss jetzt ein Element haben

Einfaches Testen mit println() List fixture = new ArrayList(); System.out.println(fixture.size()); // das erwartete Ergebnis ist 0 Object element=new Object(); fixture.add(element); System.out.println(fixture.size()); // das erwartete Ergebnis ist 1

Übersichtliche true&false- Anweisungen List fixture = new ArrayList(); System.out.println(fixture.size() == 0); // das erwartete Ergebnis ist true Object element=new Object(); fixture.add(element); System.out.println(fixture.size() == 1); // das erwartete Ergebnis ist true

Verbesserte Version durch eine Assert-Funktion void asserttrue(boolean condition) throws Exception { } if(!condition) throws new Exception ( Prüfung fehlgeschlagen );

Neue Test-Anweisung mit asserttrue() List fixture = new ArrayList(); asserttrue(fixture.size() == 0); Object element=new Object(); fixture.add(element); asserttrue(fixture.size() == 1); Diese Version ist schon ein automatisierter Test

Grundlegendes zu JUnit

Was ist JUnit? Wurde von Erich Gamma und Kent Beck entwickelt Framework zum Testen von Java- Programmen Geeignet für automatisierte Unit-Tests einzelner Klassen Basiert auf ursprünglich für Smalltalk entwickeltem Konzept (SUnit)

Testen mit JUnit Ein JUnit Test kennt nur zwei Ergebnisse: 1. Es gelingt ( grün )

Testen mit JUnit Ein JUnit Test kennt nur zwei Ergebnisse: 1. Es gelingt ( grün ) 2. Es misslingt ( rot )

Warum verwenden wir JUnit? Tests werden automatisch ausgeführt Zeitersparnis (Infrastruktur schon vorhanden) Wiederholbare Tests Fehler werden protokolliert Viele Tests werden gemeinsam ausgeführt und die Ergebnisse zusammengefasst Ort zum Sammeln der geschriebenen Tests Tatsächliche Ergebnisse und Erwartete werden verglichen und Abweichungen gemeldet

Ziele von JUnit Leicht zu schreiben Zielgruppe: Programmierer Schnell ausführbar Leicht auszuführen Isoliert Kombinierbar

Grenzen von JUnit Test müssen selber getestet werden Graphische Oberflächen Mehrschichtige Architekturen können nicht komplett getestet werden Test von größeren Projekten nicht möglich Teilbereiche testbar

Aufbau von JUnit Java-Werkzeug besteht aus mehreren Klassen Alle Klassen von JUnit sind im Paket junit.framework enthalten Prinzip: Zu jeder Klasse eine eigene Testklasse Vorteil: Kein Test-Code in eigentlicher Klasse

Vorgehensweise Testfälle bzw. Testserien überlegen und erstellen Behauptungen aufstellen Test durchführen Ergebnisse auswerten Fehler aufgetreten : Protokollierung, Korrektur / Programmierer benachrichtigen danach erneuter Test

Sonstiges JUnit wurde selber mit JUnit getestet

Praktische Einbindung von JUnit Aufbau & API JUnit und Eclipse sehr kurzes Beispiel

Wichtige Klassen Test schreiben TestCase (einfacher Testfall) TestSuite (Test-Serien) Assert (Behauptungen) Test ausführen TestRunner Test auswerten TestResult (Ergebnis / Protokoll)

Klasse TestCase Klasse wird abgeleitet und erweitert die speziellen, abgeleiteten Testfälle werden ausgeführt

TestCase Einige Methoden setup() Initialisierung, z.b. Datenbankverbindung aufbauen runtest() Durchführung des Tests teardown() Aufräumen, z.b. Datenbankverbindung trennen

TestCase - Fixtures ähnliche Tests können in einem TestCase zusammengefasst werden durch Überschreiben von setup(), teardown() Bsp. von doppelten Code : konto1 = new Konto(3902394, B.Seeger ); konto2 = new Konto(9834399, V. Weber );

Klasse Assert...enthält verschiedene Methoden Behauptungen aufstellen. z.b. : asserttrue( [String message,] boolean bedingung ); 1. Parameter optional: Nachricht bei Exception wirft Exception, falls bedingung nicht true (also false) Test ist dann fehlgeschlagen

Assert Übersicht assertequals() assertfalse() asserttrue() assertnull() assertnotnull() fail() <Test schlägt fehl> assertsame(o1,o2) o1 & o2 zeigen auf gleiches Objekt assertnotsame() assertequal(obj1,obj2) Aufruf der equals()-methode

Weitere Klassen TestSuite Kontainer für Testfälle verschiedene Tests in einer bestimmten Reihenfolge aufrufen Mehrere Klassen eines Projekts testen suite.addtest() : Tests zur Suite hinzufügen TestResult Zählen und Speichern der Fehler

Klasse TestRunner Ausführen und Ausgabe des Testes: grafisch (Swing oder AWT) z.b. junit.swingui.testrunner.run() oder textbasiert (Konsole) junit.textui.testrunner.run() Suchen nach Methoden der Form public void testxxx() Gefundene Methoden ausführen

JUnit & Eclipse JUnit bereits integriert TestCase anlegen:

JUnit & Eclipse (2) Java-Test-Code erstellen Als JUnit Test laufen lassen:

JUnit & Eclipse (3) Test wird protokolliert:

Sehr simples Beispiel sehr einfache Klasse Geldbeutel Eigenschaften: Geldbestand Methoden: Geldbeutel() und: entnehmegeld(betrag) { geldbestand -= betrag; }

Beispiel (2) Erstelle im gleichen Package Testklasse: public class GeldbeutelTest extends TestCase { //... public void testentnehmegeld() { //... nächste Folie }

Beispiel (3) public void testentnehmegeld () { meingeld = new Geldbeutel(100); erwartet = new Geldbeutel(47); meingeld.entnehmegeld(53); // Ergebnis überprüfen: assertequals(meingeld, erwartet); }

Beispiel - Testdurchlauf bei richtiger Implementierung haben die Objekte meingeld und erwartet die gleichen Werte assertequals gibt keinen Fehler aus Test erfolgreich :-) Tests erweitern und weitere Module testen

Quellen http://www.frankwestphal.de/unittestingmitjunit.html http://www.junit.org http://www.javaworld.com/javaworld/jw-12-2000/jw- 1221-junit_p.html http://open.ncsu.edu/se/tutorials/ http://www.informatik.tucottbus.de/~rrichter/teaching/test2004/vortraege/junit/v ortrag_junit.pdf http://de.wikipedia.org Beck, Kent: Junit.O Reilly-Verlag.2005.

ENDE