Literatur und Web. Komponenten WS 2014/15 Teil 6/JUnit

Größe: px
Ab Seite anzeigen:

Download "Literatur und Web. Komponenten WS 2014/15 Teil 6/JUnit"

Transkript

1 Literatur und Web [6-1] Vigenschow, Uwe: Objektorientiertes Testen und Testautomatisierung in der Praxis. dpunkt, 2005 [6-2] Westphal, Frank: Testgetriebene Entwicklung mit JUnit & FIT. dpunkt, 2006 [6-3] Link, Johannes: Softwaretests mit JUnit. 2. Auflage, dpunkt, 2005 [6-4] Tamm, Michael: JUnit-Profiwissen. dpunkt, 2013 [6-5] Ullenboom, C.: Java 7 - Mehr als eine Insel: Das Handbuch zu den Java SE-Bibliotheken, Gallileo Computing,

2 Übersicht Das Problem: Zeitpunkte zum Testen Arbeiten mit Assertions Arbeiten mit Junit Zusammenarbeit mit Maven Testfälle und Testsuites Integration in netbeans 3 Das Problem Klassische Vorgehensweise Tests werden zuerst von den Entwicklern durchgeführt. Dann folgen Tests im Rahmen der Integration. Dann Tests bei der Abnahme. Anschließend wird alles, was mit Tests zu tun hat, aus dem Code entfernt. Alle diese Tests sind später bei Weiterentwicklungen nicht mehr verfügbar, so dass sie manuell wiederholt werden müssen. Sie sind auch nicht mit dem Code verbunden. Tests können auch nicht zum Vertragsgegenstand gemacht werden. 4

3 Eine Lösung Der Code zur Prüfung ist und bleibt Bestandteil des Codes. Es wird ein Mechanismus zum automatisierten Test benutzt, der jederzeit, auch nach Auslieferung, benutzt werden kann. Verfahren bzw. Lösungen: Assertion JUnit 5 Assertions I Assertion = Zusicherung = Bedingung an Variablenwerte, die im Falle der Korrektheit, immer wahr sein muss Beispiele: if (a < 0) { Assertion: a < 0... else { Assertion: a >= Assertion a==??, b==?? a= 10; Assertion a==10, b==?? a= a+b; Assertion a==??, b==??... (beide Beispiele in Freistilnotation) 6

4 Assertions II Die Semantik jedes Statements sowie jedes Kontrollkonstrukts lässt sich als Transformation von Zusicherungen beschreiben. Durch die Verkettung von Statements - meistens sequentiell, aber auch parallel - lässt sich ein Programm als ein komplexer prädikatenlogischer Ausdruck beschreiben. Diese Beschreibung kann aufgrund einer Analyse ohne Ablauf des Programms erstellt werden. Sie kann auch sich nur auf ausgeführte Bereiche beziehen; dies wird dann symbolische Ausführung genannt. 7 Benutzung zum Testen An strategisch wichtigen Punkten werden Assertions eingefügt, die zu einer Fehlermeldung führen, wenn sie nicht zutreffen. Typische Punkte sind: Direkt zum Beginn einer Methode, um Parameter auf Korrektheit zu prüfen Direkt vor dem Ende einer Methode, um die Korrektheit des Resultates zu prüfen Innerhalb der Methode, wo problematische Abschnitte durchlaufen wurden Problematisch sind alle Abschnitte, wo die Bedeutung nicht ganz klar ist, z.b. nach Aufruf schlecht getesteter oder unverstandener Methoden. Über eine Compiler-Option kann bzw. in Java muss gesteuert werden, ob die Assertions ausgeführt werden oder nicht. 8

5 Beispiel I public class Assert1 { Assert1() { System.out.println(invers(1.0)); System.out.println(invers(2.0)); System.out.println(invers(10.0)); System.out.println(invers(0.0)); double invers(double arg) { return 1/arg; public static void main(string[] args) { new Assert1(); Infinity 9 Beispiel II public class Assert2 { Assert2() { System.out.println(invers(1.0)); System.out.println(invers(2.0)); System.out.println(invers(10.0)); System.out.println(invers(0.0)); double invers(double arg) { assert arg!= 0.0: "Datt jeht nich!"; return 1/arg; public static void main(string[] args) { new Assert2(); 10

6 Beispiel IV Es wird dann eine Fehlermeldung zusammen mit dem Traceback, d.h. der Angabe der Aufrufstellen der Methoden ausgegeben. 12

7 JUnit 4.11 JUnit ist eine Umgebung zum Testen von kleineren Codeteilen, insbesondere einzelnen Klassen oder kleineren Klassenverbänden. Eine Klasse wird in diesem Sinne Unit genannt. Es wird hier die Version 4.11 behandelt. Die Tests sind bei der Version 3.8 und ab 4.0 syntaktisch anders aufgebaut. JUnit war so erfolgreich, dass diese Idee auf andere Programmiersprachen implementiert wurde, z.b. PHPUnit. 13 Bedingungen an Unit-Tests I Es sollten keine Datenbankzugriffe notwendig sein. Es sollte keine Kommunikation über das Netzwerk notwendig sein. Es sollten keine Veränderungen während der Tests an Dateien vorgenommen werden. Zum Test sollten keine besonderen Konfigurationsdateien editiert werden müssen. Alle Tests müssen in beliebiger Reihenfolge (und auch beliebig häufig) ablauffähig sein. Alle Tests sollten in wenigen Sekunden ablaufen können. Diese Bedingungen sollen dazu führen, dass alle erstellten Tests jederzeit "so nebenbei" ablaufen können. Aber: das ist in der Praxis nicht immer praktikabel. 14

8 Bedingungen an Unit-Tests II Sind diese Bedingungen nicht erfüllt, so handelt es sich nicht um Unit-Tests (und dafür ist JUnit nicht gebaut worden). Aber das sollte niemanden abhalten trotzdem damit Unit-Tests durchzuführen Die Idee Zuerst werden die Testfälle entworfen und implementiert. Diese bestehen aus: einer Umgebung, die vorbereitet werden muss: das Fixture den erwarteten Ergebnissen Die Testfälle müssen sehr einfach sein, damit sie nicht selbst auch getestet werden müssen unabhängig sein, da die Reihenfolge der Tests nur sehr bedingt bestimmt werden kann eine kurze Laufzeit haben Die Testfälle selbst bilden eine Beschreibung der Bedeutung, in gewisser Weise eine "Dokumentation". 16

9 Konsequenzen Klassen bzw. deren Methoden können nicht mehr einfach so konzipiert werden; sie müssen eventuell so umstrukturiert werden, dass sie mit JUnit getestet werden können. Die Tests werden wie die Software mit ausgeliefert. Die Tests können (oder sollten?) auch mit dem Kunden vereinbart werden. Das stößt auf die Schwierigkeit, dass Kunden sich selten mit Unit- Tests befassen, sondern nur mit Abnahmetests, die aber in jedem Fall die oben erwähnten Bedingungen verletzen. Aber: Alles steht und fällt mit der vollständigen, oder wenigstens vernünftigen Auswahl der Testfälle. 17 Beispiel: Zinsklasse Es wird eine Methode, der als 1. Parameter der volle Wert und als 2. Parameter ein Anteil übergeben wird und die als Rückgabewert den entsprechenden Prozentwert zurückliefert, entwickelt. public class Interest { public double computepercent(double whole, double part) { return Double.MAX_VALUE; 18

10 Mit maven zu Fuß I mvn archetype:generate -DgroupId=de.htw_berlin.f4.kbe.junit -DartifactId=percent -Dpackage=de.htw_berlin.f4.kbe -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jar-plugin</artifactid> <version>2.4</version> <configuration> <archive> <manifest> <mainclass>de.htw_berlin.f4.kbe.percent</mainclass> <addclasspath>true</addclasspath> </manifest> </archive> </configuration> </plugin> Baustein jar-generierung Einsetzen 19 Mit maven zu Fuß II <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>exec-maven-plugin</artifactid> <version>1.2.1</version> <configuration> <mainclass>de.htw_berlin.f4.kbe.percent</mainclass> </configuration> </plugin> </plugins> </build> Einsetzen Baustein Execute <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties 20

11 Mit maven zu Fuß III <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.11</version> <scope>test</scope> </dependency> Baustein JUnit Version 4.11 benutzen package de.htw_berlin.f4.kbe; public class Percent { Pseudo-Programm public static void main(string[] args) { Interest inter= new Interest(); double per= inter.computepercent(1.0, 2.0); System.out.println("Percent "+per); 21 Mit maven zu Fuß IV package de.htw_berlin.f4.kbe; Zu testende Klasse: Nur der Rahmen public class Interest { public double computepercent(double whole, double part) { return Double.MAX_VALUE; package de.htw_berlin.f4.kbe; import org.junit.test; import static org.junit.assert.*; Testfall, der immer gelingt public class InterestTest { public InterestTest() public void testcomputerpercent() { assertequals(0.0, 0.0, 0.0); 22

12 Auch unter netbeans direkt geht es Hinweis: In diesem Fall benutzen wir netbeans nur als Editor. Maven wird außerhalb innerhalb anderer Ordner benutzt. 24

13 JUnit-Methoden für die Testklassen (Auszug) asserttrue(boolean) assertfalse(boolean) assertequals(expected,actual) assertequals(expected,actual,delta) assertnull(object) assertnotnull(object) assertsame(expected,actual) assertnotsame(expected,actual) fail(string) Prüfung, ob wahr bzw. false ist Vergleich zweier Werte auf Gleichheit mit möglichen Delta Hat die Referenzvariable den Wert Null oder nicht Sind die beiden Objekte identisch oder nicht (Referenzen) Test ist nicht bestanden Mit dem delta-wert kann für float/double-werte ein Intervall angegeben werden. Dies ist aufgrund möglicher Rundungsfehler notwendig. Zur besseren Erläuterung kann ein String als erster Parameter eingeschoben werden. 25 Ein richtiger Testfall I public class InterestTest { Interest value; public InterestTest() public void setup() throws Exception { value= new public void teardown() throws Exception { value= public void testzero() { assertequals(0, value.computepercent(10,100), 0.001); Aufbau der Testumgebung Abbau der Testumgebung Testfall Kleiner Hinweis: der Testfall ist fehlerhaft aber das wissen wir nicht... 26

14 Begriffe Fixture = Umgebung bestehend aus Objekten, die den Kontext des Testens definieren Ein Fixture wird zum Beginn des Tests aufgebaut und am Ende abgebaut. Fixtures verschiedener Tests dürfen sich nicht beeinflussen. Runner = Software, die die Tests durchführt und über das Ergebnis berichtet: Visuell mit einem grünen oder rotem Balken Textuell durch eine Zusammenfassung Es gibt für verschiedene Anwendungsfälle unterschiedliche Runner; sie können sogar selbst geschrieben werden. 27 Ein richtiger Testfall II Das geht natürlich schief. 28

15 Ein richtiger Testfall III package de.htw_berlin.f4.kbe; public class Interest { public double computepercent(double whole, double part) { return whole*100/part; Aus netbeans heraus muss installiert werden, hier per bat-datei: set SRC=D:\bmesser\NetBeansProjects\junit-Percent\src\de\htw_berlin\f4\kbe set DST=D:\temp\percent\src\main\java\de\htw_berlin\f4\kbe xcopy /Y %SRC%\*.java %DST% set SRC=D:\bmesser\NetBeansProjects\junit-Percent\test\de\htw_berlin\f4\kbe set DST=D:\temp\percent\src\test\java\de\htw_berlin\f4\kbe xcopy /Y %SRC%\*.java %DST% pause 29

16 Nun der nächste Testfall public void testzero() { assertequals(0,value.computepercent(0,100), public void testten() { assertequals(0.1,value.computepercent(100,10), 0.001); Ein Test auf 10% - und scheitert, denn: public class Interest { public double computepercent(double whole, double part) { return whole*100/part; Oops ach ja schon wieder war der Test falsch, nun ist er public void testten() { assertequals(10, value.computepercent(100,10), 0.001); 31 Nun der nächste Testfall II Der zweite Test ist nun in Ordnung, aber der erste, der ja vorher lief, nicht. Denn nun gibt es eine Division durch 0. public class Interest { public double computepercent(double whole, double part) { if(whole==0) { return 0; return part*100/whole; Und wieder alles im Lot: 32

17 Nun der nächste Testfall II Aber schlechter Stil! public class Interest { public double computepercent(double whole, double part) { if(whole==0.0) { return 0.0; else { return part*100.0/whole; Warum ist das nun besser?? In jedem Fall ist bei Qualitätsverbesserungen am Code und seien es nur kosmetische Dinge das Testen mit Junit sehr, sehr hilfreich. 33 Nun weitere public void testzero() { assertequals(0, value.computepercent(0,100), public void testten() { assertequals(10,value.computepercent(100,10), public void testvalues() { assertequals(50, value.computepercent(100, 50), 0.001); assertequals(100,value.computepercent(100,100), 0.001); assertequals(50, value.computepercent(200,100), 0.001); Es gibt die Empfehlung, immer nur einen Testfall pro Testroutine zu testen, um Fehler besser einkreisen zu können. Bei Klassen mit inneren Zuständen muss dies auch sein, da sich dann die Tests gegenseitig beeinflussen können. 34

18 Jetzt die negativen public void testnegative() { assertequals(10, value.computepercent(-100,10), 0.001); assertequals(10, value.computepercent(100,-10), 0.001); Und: Fehler! Und wir verbessern sofort: public double computepercent(double whole, double part) { double abswhole= Math.abs(whole); double abspart = Math.abs(part); if(abswhole==0.0) { return 0.0; else { return abspart*100.0/abswhole; 35 public void testextrem() { assertequals(0, value.computepercent(0,0), 0.001); assertequals(0, value.computepercent(double.max_value,1), 0.001); assertequals(0, value.computepercent(double.max_value,1), 0.0); assertequals(0, value.computepercent(double.max_value,double.min_value),0.001); assertequals(100,value.computepercent(double.max_value,double.max_value),0.001); Die beiden roten Tests scheitern. Dies zu reparieren, ist (vielleicht) eine Hausaufgabe. 36

19 Wahl der Testfälle Alle Sonderfälle Alle gerade noch erlaubten Extremfälle Leichte Abweichungen der Extremfälle ins Falsche (falls die Klasse dies prüfen soll) Ein oder zwei Durchschnittsfälle 37 Schema für das Testen einer Klasse I import org.junit.after; import org.junit.afterclass; import org.junit.before; import org.junit.beforeclass; import org.junit.test; import static org.junit.assert.*; public class Name { public Name() public static void setupclass() public static void teardownclass() public void setup() public void teardown() public void testcase() { fail("test uncompleted"); 38

20 Schema für das Testen einer Klasse @Test Bedeutung Routine wird einmal zum Beginn des Tests der Klasse ausgeführt. Routine wird einmal nach dem Test der Klasse ausgeführt. Routine wird jedes Mal vor einem Test einmal ausgeführt. Routine wird jedes Mal nach einem Test einmal ausgeführt. Routine realisiert einen Test. 39 Ein zweites Beispiel Reziproke Werte I public class Invertation { double invers(double arg) { //assert arg!= 0.0: "Datt jeht nich!"; return 1.0/arg; public class InvertationTest { Invertation value; public InvertationTest() public void setup() { value= new public void teardown() { value= public void testvalues() { assertequals(0.01, value.invers(100), 0.001); So sieht die Klasse (von oben) aus. Dieser Test läuft! 40

21 Ein zweites Beispiel Reziproke Werte public void testvalues() { assertequals(0.01, value.invers(100), 0.001); assertequals(0.1, value.invers(10), 0.001); assertequals(1, value.invers(1), public void testnegative() { assertequals(-0.01, value.invers(-100), 0.001); assertequals(-0.1, value.invers(-10), 0.001); assertequals(-1, value.invers(-1), public void testzero() { assertequals(0, value.invers(0), 0.001); Dieser Test läuft! Dieser Test läuft! Dieser Test läuft nicht! 41 Ein zweites Beispiel Reziproke Werte II public class Invertation { double invers(double arg) { if(arg!= 0.0) { return 1.0/arg; else { throw new IllegalArgumentException(); Nun wird eine Exception geworfen, die durch den Aufrufer nicht behandelt werden muss. 42

22 Ein zweites Beispiel Reziproke Werte public void testzero() { try { double val= value.invers(0); fail("illegalargumentexception expected"); catch (IllegalArgumentException args) { Erwartete Exception Erläuternde Meldung So sieht der dazu gehörende Testfall aus. 43 Suites Zusammenfassen mehrerer Testklassen I public class Invertation1Test public void testvalues() { System.out.println("Invertation1Test"); assertequals(0.01, value.invers(100), 0.001); assertequals(0.1, value.invers(10), 0.001); assertequals(1, value.invers(1), 0.001); public class Invertation2Test public void testnegative() { System.out.println("Invertation2Test"); assertequals(-0.01, value.invers(-100), 0.001); assertequals(-0.1, value.invers(-10), 0.001); assertequals(-1, value.invers(-1), 0.001); 44

23 Suites Zusammenfassen mehrerer Testklassen III public class Invertation3Test public void testzero() { System.out.println("Invertation3Test"); try { double val= value.invers(0); fail("illegalargumentexception expected"); catch (IllegalArgumentException args) { In diesem Beispiel wurde die einzelne Klasse auf drei Klassen aufgeteilt. In der Praxis testet eine Testklasse eine Klasse, so dass bei einer solchen Konstruktion mehrere Klassen einzeln getestet werden. 45 Suites Zusammenfassen mehrerer Testklassen IV package de.htw_berlin.f4.kbe; import org.junit.runners.suite; Invertation1Test.class, Invertation2Test.class, Invertation3Test.class ) public class InvertationSuite { Es ist ein anderer Runner erforderlich es gibt viele(!). Eine Suite wird über eine Annotation definiert. Eine Liste von Klassendeskriptoren bildet die Suite Die eigentliche Klasse dient nur der Form, die Tests laufen über die Annotations 46

24 Suites Zusammenfassen mehrerer Testklassen V Beispiellauf innerhalb von netbeans (ohne Maven) 47 Messung der Testabdeckung mit cobertura I <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>cobertura-maven-plugin</artifactid> <version>2.6</version> <configuration> <formats> <format>html</format> <format>xml</format> </formats> </configuration> </plugin> Aufruf mvn cobertura:cobertura Ein neues Plugin muss dazu im build-bereich deklariert werden. Siehe: 48

25 Messung der Testabdeckung mit cobertura II 49 Messung der Testabdeckung mit cobertura III Im target-ordner unter site sind die HTML-Dateien und die XML-Datei zur automatischen Auswertung. 50

26 Maven in netbeans I Maven-Projekt auswählen (nach Installation des Plugins) Dann die Koordinaten eingeben 51 Maven in netbeans II Bei den Dependency Junit mit Version 4.11 angeben sowie die Klassen definieren, einschließlich der Testklassen (letztere über den Generator) Die POM-Datei kann auch direkt editiert werden. 52

27 Maven in netbeans III Mit der Maus (rechte Taste) über das Projekt als Ziel z.b. test angeben dann läuft mvn test ab. Im Console-Fenster erscheinen die (vielen) Maven-Meldungen. 53 Nach dieser Anstrengung etwas Entspannung... 54

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

Komponenten-basierte Entwicklung Teil 6: Einführung in JUnit Komponenten-basierte Entwicklung Teil 6: Einführung in JUnit 31.10.14 1 Literatur und Web [6-1] Vigenschow, Uwe: Objektorientiertes Testen und Testautomatisierung in der Praxis. dpunkt, 2005 [6-2] Westphal,

Mehr

Unit Tests mit Junit 4. Dario Borchers

Unit Tests mit Junit 4. Dario Borchers 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

Mehr

Kurzanleitung JUnit. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen

Kurzanleitung JUnit. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen JUnit ist ein Testframework zum Testen von Java-Code. Es eignet sich besonders gut zum automatisierten Testen und ist ein wichtiges Hilfsmittel des Extreme Programmings, bei dem der Test-First-Ansatz angewendet

Mehr

Programmierung 2 Studiengang MI / WI

Programmierung 2 Studiengang MI / WI Programmierung 2 Studiengang MI / WI Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung

Mehr

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

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 JUnit - Test Driven Development Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1 Gliederung 1.Einleitung 1.1 Geschichte 1.2 Was sind Unit-Tests? 1.3 Failures/Errors 1.4 Ziele und Nutzen

Mehr

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept Testkonzept 1.Einführung Um die Zuverläsigkeit und die Qualität der Software und des gesamten Systems zu verbessern, sind Tests durchzuführen. Die Testreihe läst sich in drei Stufen einteilen, nülich Komponententest,

Mehr

Das Test-Framework JUnit ETIS SS04

Das Test-Framework JUnit ETIS SS04 Das Test-Framework JUnit ETIS SS04 Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2 Motivation (I) Kostspielige Folgen

Mehr

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck Unit Tests Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

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

Testen mit JUnit. Martin Wirsing. Ziele. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang Testen mit JUnit Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 2 Ziele Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen 3 Testen Da

Mehr

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

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 2 Übersicht Testen ist eine der wichtigsten, aber auch eine der Zeitaufwändigsten Arbeitsschritte der Softwareentwicklung.

Mehr

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014 Programmierprojekt Anne0e Bieniusa Sommersemester 2014 Phasen der So;ware- Entwicklung Planungsphase DefiniConsphase Entwurfsphase ImplemenCerungsphase Testphase Wasserfall- Modell Einführungs- und Wartungsphase

Mehr

Literatur und Web. Komponenten WS 2014/15 Teil 8/Mocks

Literatur und Web. Komponenten WS 2014/15 Teil 8/Mocks Literatur und Web [8-1] Vigenschow, Uwe: Objektorientiertes Testen und Testautomatisierung in der Praxis. dpunkt, 2005 [8-2] Westphal, Frank: Testgetriebene Entwicklung mit JUnit & FIT. dpunkt, 2006 [8-3]

Mehr

Programmiertechnik II

Programmiertechnik II Modultests Ziele Überprüfung der Korrektheit eines Moduls Korrektheit: Übereinstimmung mit (informaler) Spezifikation Modul: kleine testbare Einheit (Funktion, Klasse) Engl.: unit test White box testing

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

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

Testen mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls Testen von Java-Code mit JUnit ÿmotivation ÿjunit-testklassen ÿjunit-testfälle ÿstruktur eines Testfalls Henning Wolf APCON Workplace Solutions GmbH wolf@jwam.de Motivation: Werkzeugunterstützung für Tests

Mehr

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

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen Info: Standard DO-178B Zertifizierung Federal AviationAdministration (FAA), Software für Luftverkehrssysteme durch Standard DO-178B für requirement-based Tests and Code Coverage Analyse DO-178B-Levels

Mehr

Das automatisierte Testen mit JUnit

Das automatisierte Testen mit JUnit Das automatisierte Testen mit JUnit SWT Seminar (SS03) Ausgearbeitet von Sundui Baatarjav Am Fachbereich Informatik der TU-Berlin EINLEITUNG 3 JUNIT - FRAMEWORK 4 Aufbau und Struktur 4 TestCase 4 Assert

Mehr

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

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen 5. Mocking Allgemein: Klassen testbar machen Wie werden Klassen testbar Entwicklung von Mocks mit der Hand Einführung in JMock Spezifikation von Mocks mit JMock Wann ist Mocking-Werkzeug sinnvoll Literatur:

Mehr

Der EMF-generierte Code. 7. November 2012

Der EMF-generierte Code. 7. November 2012 Der EMF-generierte Code 7. November 2012 Überblick Wie sieht der aus einem EMF-Modell generierte Code aus? Wie ist die Beziehung zwischen Modell und Code? Wie kann generierter Code durch handgeschriebenen

Mehr

Software Engineering Test Automatiserung und Junit, Test Driven ( test first) Development

Software Engineering Test Automatiserung und Junit, Test Driven ( test first) Development Software Engineering Test Automatiserung und Junit, Test Driven ( test first) Development Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik Prof. A. Müller, HS KL Software

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 12: Metawissen Java Bibliotheken, Maven Robert Jakob Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Robert Jakob (Univ. Freiburg) Programmieren in Java JAVA 1 / 33

Mehr

Software-Engineering Software-Management

Software-Engineering Software-Management Software-Engineering Software-Management 12.3 Unit-Tests mit JUnit - Wissen, was der Sourcecode macht! Lösung Prof. Dr. Rolf Dornberger Software-Engineering: 12.3 Unit-Tests mit JUnit 30.04.2006 1 12.3

Mehr

Semesterprojekt Semantic Text Browsing. Ulf Leser, Philippe Thomas (, Lars Döhling)

Semesterprojekt Semantic Text Browsing. Ulf Leser, Philippe Thomas (, Lars Döhling) Semesterprojekt Semantic Text Browsing Ulf Leser, Philippe Thomas (, Lars Döhling) Testing Was ist ein Test? Warum testen wir? Arten von Tests JUnit: Testing in Java Best Practises Test driven development

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

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

Testen mit JUnit. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 Testen mit JUnit Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen 3 Testen Da die meisten Programme

Mehr

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

Java Schulung. Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit Prof. Dr. Nikolaus Wulff JUnit JUnit ist das Opensource Testframework. Es existieren Portierungen für fast alle objektorientierten

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Thema: Testen von objektorientierter Software

Thema: Testen von objektorientierter Software Seminar Simulation und Bildanalyse mit Java Thema: Testen von objektorientierter Software Uta Dienst 1. Teil: Einführung in den Software-Test 2. Teil: JUnit-Einführung Uta Dienst 17.11.2003 2 1. Teil:

Mehr

Unit Tests und Fehlersuche

Unit Tests und Fehlersuche Unit Tests und Fehlersuche SE 1 - Softwareentwicklungspraktikum Test Deadline! Sinnvolle Tests kompilierbar im CVS d.h. Schnittstellen zu Strategiemethoden etc. schon erstellen Kommentieren! Besser ein

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Unit Tests in der Testgetriebenen Entwicklung

Unit Tests in der Testgetriebenen Entwicklung Unit Tests in der Testgetriebenen Entwicklung Reduzierung des Testanteils am Gesamtsoftwareentwicklungsaufwand -- neue Strategien und Tools -- Hauptseminar Systemorientierte Informatik Christian Krauß

Mehr

Unit Testing mit JUnit. Dr. Andreas Schroeder

Unit Testing mit JUnit. Dr. Andreas Schroeder Unit Testing mit JUnit Dr. Andreas Schroeder Überblick Was dieses Video behandelt Warum Testen? Was sind Unit Tests? Der Teufelskreis des Nicht-Testens JUnit Unit Test Vorteile Test-Inspiration Wann aufhören?

Mehr

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

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG 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/

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Markus Wichmann. Testen von Java Code mit. JUnit

Markus Wichmann. Testen von Java Code mit. JUnit Markus Wichmann Testen von Java Code mit JUnit Demotivation... Am Anfang war der Zeitdruck... Hilfe, ich habe doch keine Zeit zum Testen! Ich schreibe einfach keine Tests, dadurch werde ich schneller fertig

Mehr

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

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

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

1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Organisation Unit Testing

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

Software Engineering II

Software Engineering II Software Engineering II Wintersemester 12/13 Fachgebiet Software Engineering Installation der MWE Plugins Von der Juno Update Site installieren (falls noch nicht vorhanden): MWE SDK Xpand SDK 2 TFD Projekt

Mehr

Gestatten: Hudson. Augmented Development. Thomas Kruse. Sun Campus Ambassador thomas.kruse@sun.com

Gestatten: Hudson. Augmented Development. Thomas Kruse. Sun Campus Ambassador thomas.kruse@sun.com Gestatten: Hudson Augmented Development Thomas Kruse Sun Campus Ambassador thomas.kruse@sun.com 1 Zum Referenten Thomas Kruse Java Entwickler seit 1998 Mitgründer der Java Usergroup Münsterland: jug-muenster.de

Mehr

Praktische Übung 'JUnit-Test'

Praktische Übung 'JUnit-Test' Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse

Mehr

4 Testgetriebene Entwicklung mit PHPUnit

4 Testgetriebene Entwicklung mit PHPUnit 57 4 Testgetriebene Entwicklung mit PHPUnit»The fewer tests you write, the less productive you are and the less stable your code becomes.«erich Gamma 4. 1 Einleitung Das Testen von Software ist wichtig.

Mehr

Übung zur Vorlesung Einführung in Software Engineering

Übung zur Vorlesung Einführung in Software Engineering Übung zur Vorlesung Einführung in Software Engineering Wintersemester 2012/13, Richard Bubel und Martin Hentschel Übungsblatt 5: Testen Abgabeformat: Reichen Sie Ihre Lösung per SVN als eine PDF-Datei

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST Gliederung 2 0. 1. 2. 3. Vorstellung Testvorbereitungen Planungsphase Definitionsphase Implementierungs-, Abnahme-und Einführungsphase Testphasen

Mehr

Testen im Software- Lebenszyklus

Testen im Software- Lebenszyklus TestNG TestNG Testen im Software- Lebenszyklus White-Box vs Black-Box Testing White-Box-Testing Black-Box-Testing Test-Driven Development (TDD) testgetriebene Entwicklung zuerst werden die Unit-Tests erstellt.

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Testen von grafischen Benutzeroberflächen

Testen von grafischen Benutzeroberflächen Seminarvortrag 10: Testen von grafischen Benutzeroberflächen 2004 / 06 / 28 Clemens Sommer, Gerald Peter Übersicht Motivation GUI Allgemein Fehlerquellen und deren Auswirkungen GUI Testwerkzeuge JUnit

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Kapitel 5.2 Testwerkzeuge

Kapitel 5.2 Testwerkzeuge Kapitel 5.2 Testwerkzeuge SWT I Sommersemester 2010 Walter F. Tichy, Andreas Höfer, Korbinian Molitorisz IPD Tichy, Fakultät für Informatik KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

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

Ein erster Blick. Eclipse und Debugging. Anlegen von Projekten. Wissenswertes... Eclipse und Debugging Ein erster Blick Starten mittels /usr/bin/eclipse oder auch Applications > Programming Legt workspace in eurem Homedir an! CoMa SS 09 Wissenswertes... CoMa II SS 09 1/24 CoMa II SS

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

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

leicht zu schreiben sein. Wenn ein Test nicht leicht zu schreiben ist, werden wir ihn nicht schreiben. PHPUnit Eine kurze Einführung vom Frank Staude vorgetragen beim Treffen der PHP Usergroup Hannover am 02.11.2006 Warum Testen? Jeder von uns, der programmiert, macht auch Fehler. Es

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Software-Engineering Grundlagen des Software-Engineering

Software-Engineering Grundlagen des Software-Engineering Software-Engineering Grundlagen des Software-Engineering 7.2 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger SWE: 7.2 Programmentwicklung und Debuggen mit IDE

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Testen von Softwaresystemen. 13. Januar 2015

Testen von Softwaresystemen. 13. Januar 2015 Testen von Softwaresystemen 13. Januar 2015 Überblick Was umfasst das Testen von Software? Warum sollte man Software testen? Motivation für Software-Tests Wie sollte man Software testen? Grundlegende Teststrategien

Mehr

WebService in Java SE und EE

WebService in Java SE und EE Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.

Mehr

Software Engineering. 3. JUnit und ANT. Franz-Josef Elmer, Universität Basel, HS 2012

Software Engineering. 3. JUnit und ANT. Franz-Josef Elmer, Universität Basel, HS 2012 Software Engineering 3. JUnit und ANT Franz-Josef Elmer, Universität Basel, HS 2012 Software Engineering: 3. JUnit und ANT 2 Unit Testing Unit Test: Automatischer Test welcher eine Einheit (z.b. Modul,

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy Über Ant und Maven zu SBT und Gradle Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy 07.04.2011 Speaker Andreas Hartmann [hartmann@adesso.de] Principal Software Engineer

Mehr

1. Zeilenendkommentare: //... 2. geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */

1. Zeilenendkommentare: //... 2. geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */ 1 Kommentare im Source-Code Kommentare werden im Source-Code überlesen und wirken wie "white Space" (Leerzeichen, Tabulator, Zeilenvorschub). Mit Ausnahme des @deprecated-tag in Dokumentationskommentaren

Mehr

von Anja Austermann Drag and Drop

von Anja Austermann Drag and Drop von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java

Mehr

-Testen verteilter Anwendungen

-Testen verteilter Anwendungen -Testen verteilter Anwendungen Seminar Simulation und Bildanalyse mit Java im SS04 Konstantin Tjo, Urs Pricking Testen verteilter Anwendungen 1 Übersicht Einführung in verteilte Anwendungen RMI (Remote

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Der Weisheit letzter Schluss:

Der Weisheit letzter Schluss: Der Weisheit letzter Schluss: Maven 2 in der Java Entwicklung Web Site: www.soebes.de Blog: blog.soebes.de Email: info@soebes.de Dipl.Ing.(FH) Karl Heinz Marbaise Agenda 1. Was ist Maven? 2. Features von

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Build Management. Präsentation von Daniel Mies daniel.mies@1und1.de

Build Management. Präsentation von Daniel Mies daniel.mies@1und1.de Build Management Präsentation von Daniel Mies daniel.mies@1und1.de Agenda 1&1 Member of United Internet Build Management mit Maven Motivation Kompilieren & Paketieren Dependency Management Software Analyse

Mehr

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

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit 1 DYNAMISCHER TEST Whitebox Testen mit JUnit Übersicht 2 1. Grundlagen des Unittests 1. Units 2. Unit Testing 2. Testverfahren 1. Blackbox 2. Whitebox 3. Unit Testing mit Eclipse 4. Besprechung der Übungsaufgabe

Mehr

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen

Mehr

Code verifizieren mittels

Code verifizieren mittels Code verifizieren mittels Unit- und Regressionstests Institut für Numerische Simulation, Universität Bonn Seminarreihe Technische Numerik Wozu sollen gut sein? Was für Testarten gibt es? Wie funktionieren

Mehr

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String

Mehr

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

TCP/IP Programmierung. C# TimeServer Java6 TimeClient TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16 Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7

Mehr

Kapitel 10b Test-Automatisierung

Kapitel 10b Test-Automatisierung Vorlesung Softwaretechnologie Wintersemester 2010 R O O T S Kapitel 10b Test-Automatisierung Stand: 24.1.2011 Warum automatisierte Tests? Automatisierte Modultests mit JUnit Test First Development und

Mehr

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl. Vorbereitungen Download AVO-Übung ICE Andreas I. Schmied (andreas.schmied@uni-ulm.de) AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS005 Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Webtests mit Selenium, Groovy, TestNG und Maven

Webtests mit Selenium, Groovy, TestNG und Maven mit Selenium, Groovy, TestNG und Maven Im ersten Teil dieser Artikelserie [1] wurden Testkonzepte und Selenium [2] näher vorgestellt. Dieser zweite Teil stellt die Integration in ein Projekt vor und rundet

Mehr

LeJOS: Mindstorms in Java programmieren

LeJOS: Mindstorms in Java programmieren LeJOS: Mindstorms in Java programmieren Alexander Koller Softwareprojekt "Sprechende Roboter" 30. April 2004 Überblick Warum Java? Was ist LeJOS? Motoren steuern Auf Sensoreingaben reagieren Wie geht's

Mehr

Einführung in JUnit 4

Einführung in JUnit 4 Einführung in JUnit 4 für LOMF-Programmierer Version: 1.2 Fragen, Anregungen und Korrekturen zu diesem Dokument bitte per E-Mail an: Christoph.Schulz@fhdw.de Inhaltsverzeichnis 1 Einleitung...2 2 Ein kleiner

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem

Mehr

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

Konzeption. und prototypische Implementierung. eines Werkzeuges. für den funktionalen Klassentest Konzeption und prototypische Implementierung eines Werkzeuges für den funktionalen Klassentest Übersicht Motivation Zielsetzung Lösungsansatz und dessen Realisierung Anwendungs-Szenarien Präsentation von

Mehr

Klassen von Testfällen. 3. Äquivalenzklassentests. Äquivalenzklassenbildung. Beispiele für Äquivalenzklassen von Eingaben

Klassen von Testfällen. 3. Äquivalenzklassentests. Äquivalenzklassenbildung. Beispiele für Äquivalenzklassen von Eingaben 3. tests Motivation der Äquivalenzidee typische Findung von integrierte Grenzwertanalyse abgeleitete Testfälle Klassen von Testfällen In der Literatur gibt es recht unterschiedlich detaillierte Klassifizierungen

Mehr