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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Testen mit JUnit Softwareengineering Verfasser: Ronny Boost, BA Horb Studiengang: IT Jahrgang: 2003

2 Inhaltsverzeichnis 1 Einleitung oder Was ist JUnit Testarten Unit-Test Integrationstest Blackbox-Test Whitebox-Test Zusammenfassung Testen mit JUnit JUnit Installation Beispiel für einen Test Test Driven Development Vorteile des TDD Nachteile des TDD konventioneller Softwareerstellung vs. TDD Zusammenfassung JUnit Erweiterungen Abbildungsverzeichnis Quellen...22 Ronny Boost

3 1 Einleitung oder Was ist JUnit Wenn man bei Wikipedia unter Junit schaut erhält man folgende Definition: Junit, (Jwnyt), auch Init, eine altägyptische Göttin im Amduat (Totenbuch), die farbige. Abbildung 1.1: altägyptische Göttin Junit Wenn man hingegen nach JUnit sucht erfährt man, dass es sich hierbei um ein Framework zum Testen von Java-Programmen handelt. Hierbei liegt besonderes Augenmerk auf automatisierten Unit-Tests einzelner Klassen. Beim Testen im Allgemeinen handelt es sich nicht um die fälschliche Annahme, zu verifizieren, dass die Anwendung korrekt funktioniert, sondern um das Lokalisieren von Logikfehlern, welche ausschließlich zur Laufzeit auftreten. Bei Unit-Tests, auch Komponententests genannt, im Speziellen geht es um die Validierung einzelner Module einer Software, zum Beispiel einzelner Klassen. Dass das Testen besonders in der Softwareentwicklung einen sehr hohen Stellenwert haben sollte, sieht man bereits an folgenden Zahlen [6]: gefundene Fehler pro 1000 LOC während der Entwicklung Bis zu 3 Fehler pro 1000 LOC nach der Auslieferung Bei sicherheitskritischen Anwendungen ca. 0.5 Fehler pro 1000 LOC OB Wahl in Neu-Ulm 1995: 104% Wahlbeteiligung (tatsächlich 52%) Bluescreen Gepäckverteilungsanlage Flughafen von Denver: 16 Monate Verzögerung, Schaden 550Mio USD Golfkrieg 1991: 28 Tote, fast 100 Verletzte wg. fehlerhafter Uhrsynchronisation Ronny Boost

4 2 Testarten Ein Softwaretest bezeichnet in der Informatik ein mögliches Verfahren zur teilweisen Verifikation und Validierung eines Programms. Der Test dient der Qualitätssicherung einer neuen oder geänderten Software. Hierbei ist das Ziel das reelle Verhalten mit Hilfe von Testfällen zu untersuchen und mit den erwarteten Ergebnissen zu vergleichen und zu dokumentieren. Hierbei geht es um eine Aktivität der Softwareentwicklung. Natürlich gibt es nicht nur eine Art von Test mit der man alle Problemstellungen abdecken kann. Name Beschreibung Application-Level-Test Test der gesamten Anwendung aus Benutzersicht in einer Testumgebung. (Öffentlicher) Betatest Testen einer Anwendung in produktiver Umgebung. Performance-Test Testet das Verhalten der Anwendung unter verschiedener Last (etwa Antwortzeiten, Speicherverbrauch). Skalierbarkeits-Test Ähnlich dem Performance-Test, mit Schwerpunkt auf Veränderung der Leistung und Ressourcenbeanspruchung bei der Variation einzelner Parameter (zum Beispiel Zugriffe auf eine Datenbank). Unit-Test Test der Bausteine einer Software (je nach Programmiersprache zum Beispiel Klassen oder Unterprogramme). White-Box-Test Testen von Code durch möglichst umfassend abgedeckte Parameterbereiche mit dem Ziel, potenzielle Laufzeitfehler zu ermitteln (White-Box, da Kenntnisse der internen Struktur für die Parametererzeugung genutzt werden). Black-Box-Test Testen von Code-Einheiten über spezielle Testfälle. Die Grenze zum White-Box-Test ist fließend, aber es steht mehr die richtige Verarbeitung von Eingaben im Ronny Boost

5 Mittelpunkt, weniger das Auffinden von Laufzeitfehlern. Regression-Test Vergleich von Testläufen vor und nach der Änderung von Code. Ergebnisse sollten sich nur geplant (etwa als Folge eines Bugfixes) ändern. Integration-Test Bezeichnet eine aufeinander abgestimmte Reihe von Einzeltests, die dazu dient, welche dazu dient das Zusammenspiel mehrerer von einander abhängiger Komponenten zu testen. Tabelle 2-1: Zusammenfassung verschiedener Testmethoden. 2.1 Unit-Test Unit-Tests sind Teil einer Softwareentwicklungsvorgehensweise, wie zum Beispiel Extreme Programming. Mit ihrer Hilfe überprüft man die Korrektheit von Modulen einer Software. Ein wichtiges Anwendungsgebiet ist an dieser Stelle das Refactoring. Bei Refactoring handelt es sich um das Ziel Quellcode lesbarer zu machen. Um dabei die Funktionalität im vollem Umfang weiterhin gewährleisten zu können verwendet man Unit-Tests. Des Weiteren ist es ein integraler Bestandteil bei der testgetriebenen Programmierung. Hier werden die Testfälle meist vor oder während der eigentlichen Entwicklung der Software geschrieben und gewartet. Dadurch wird ermöglicht, dass Tests automatisiert und reproduzierbar wiederholt werden können. Mit Hilfe von Unit-Tests ist eine unmittelbare Rückmeldung für den Programmierer möglich, ob das Programm den gewünschten Anforderungen entspricht und korrekte Ergebnisse produziert oder nicht. Komponententests sind ein essentieller Bestandteil der Qualitätssicherung und Softwareentwicklung. Unit-Tests sind eine sehr geeignete Vorstufe zu Integrationstests, welche wiederum dafür geeignet sind um eine Summe von mehreren Klassen in Abhängigkeit von einander zu testen. Jedoch werden diese Integrationstests meist manuell durchgeführt. Ronny Boost

6 2.2 Integrationstest Da Software nur in den seltensten Fällen aus nur einer Methode besteht, ist es nötig diese in Kombination miteinander zu testen um zu überprüfen, ob diese im Zusammenspiel miteinander auch korrekt arbeiten. Hierfür werden Testszenarios definiert, welche in der Lage sind nachzuweisen, dass die zwei oder mehr Methoden korrekt und gemäß den Spezifikationen miteinander agieren. Als Methoden werden hierfür meist Funktions- und Schnittstellentests verwendet. Da die Funktionstests meist schon in den Unit-Tests verwendet werden, dienen sie an dieser Stelle zum Überprüfen, ob die korrekten Komponenten verwendet werden. Die Schnittstellentests werden wiederum dazu verwendet zum Überprüfen, ob zwischen Komponenten verwendete Daten richtig sind. Integrationstests sind jedoch nicht auf das Gesamtsystem festgelegt. Da mit der Größe der Software auch der Testaufwand überproportional steigt, wird die Software meist in einzelne Untersysteme eingeteilt, die einzeln getestet werden, welche im Gesamtsystem auch wiederum nur als Komponente gesehen werden. 2.3 Blackbox-Test Dabei betrachtet der Tester das Programm als Blackbox, d.h. der Tester ist nicht an dem internen Verhalten und an der Struktur des Programms interessiert, sondern daran, Umstände zu entdecken, bei denen sich das Programm nicht gemäß den Anforderungen verhält. Die Testdaten werden nur aus der Spezifikation (Aus-/Eingabeparameter sowie die Funktion des Programms) abgeleitet, d.h. ohne spezielle Kenntnis der internen Struktur. Äquivalenzklassen Wie oben hergeleitet soll hier die Untermenge von Testfällen bestimmt werden, die mit höchster Wahrscheinlichkeit Fehler enthält. Zur Bestimmung dieser Untermenge sollte man wissen, dass ein gut ausgewählter Testfall zwei weitere Eigenschaften haben sollte: Ronny Boost

7 er reduziert die Anzahl anderer Testfälle, die man entwickeln müsste um ein vorgegebenes Ziel beim Testen zu erreichen er überdeckt eine große Menge anderer möglicher Testfälle, d.h. er sagt etwas über die An- oder Abwesenheit von Fehlern für diesen speziellen Satz von Eingabedaten aus Letzteres bedeutet, wenn ein Testfall in einer Äquivalenzklasse einen Fehler entdeckt, so erwartet man, dass alle anderen Testfälle in einer Äquivalenzklasse den gleichen Fehler finden. Anders herum ausgedrückt, wenn ein Testfall den Fehler nicht entdeckte, so erwarten wir, dass kein anderer Testfall in der Äquivalenzklasse diesen Fehler findet. Diese beiden Überlegungen führen zu einer Blackbox-Strategie, die als Äquivalenzklassenbildung bekannt ist. Die zweite Bedingung dient zur Entwicklung einer Menge von Bedingungen, die getestet werden sollen. Mit der ersten Überlegung wird dann ein Minimalsatz von Testfällen definiert, der diese Bedingungen vollständig erfasst. 2.4 Whitebox-Test Die interne Struktur des Programms ist beim Whitebox-Test zentraler Dreh und Angelpunkt der Untersuchung. Bei dieser Strategie definiert der Tester die Testdaten mit Kenntnis der Programmlogik. Beim Whitebox-Testen betrachtet man den Anteil des Programms (source code), der durch die Testfälle ausgeführt oder angesprochen wird. Hierzu dienen folgende Strategien [7]: Line coverage (Ausführung aller Anweisungen) Hier soll jede Anweisung im Programm wenigstens einmal ausgeführt werden. Das Verhältnis von ausgeführten zu vorhandenen Anweisungen wird als C0- Überdeckung bezeichnet. Bei 100% C0-Überdeckung führen die Testfälle jede Anweisung mindestens einmal aus. Decision oder branch coverage Dies ist eine strengere Strategie für die Erfassung der Logik, bei der alle Entscheidungen oder Sprünge ausgeführt werden. Bei diesem Verfahren Ronny Boost

8 müssen hinreichend viele Testfälle entworfen werden, so dass bei jeder Entscheidung sowohl der THEN-Zweig als auch der ELSE-Zweig mindestens einmal durchlaufen wird. Das Verhältnis von ausgeführten zu vorhandenen Entscheidungspfaden (z.b. IF/ELSE-Zweige) wird als C1-Überdeckung bezeichnet. Bei 100% C1-Überdeckung liefert jede Entscheidung mindestens einmal TRUE und einmal FALSE. Man kann zeigen, dass diese Strategie auch die Forderung nach der Ausführung eines jeden Befehls erfüllt. 2.5 Zusammenfassung All diese Testverfahren sind in der Theorie sehr schön, jedoch werden sie nur zu einem geringen Teil in der Praxis so eingesetzt. Am praktikabelsten bei diesen Methoden sind die Komponenten- und Integrationstests. Sie sind am einfachsten zu realisieren, sie sind kombinierbar, reproduzierbar und es gibt viele Hilfsprogramme, die einem die Arbeit erleichtern können. In Java heißt hier das Zauberwort JUnit. Ronny Boost

9 3 Testen mit JUnit Nun ist blindes Drauflostesten vielleicht nicht besonders klug. Darum stellt sich die Frage nach sinnvollen Kriterien für Softwaretests. Gute Deklarationen liefert die Literaturrecherche [8]: Strikte Trennung des Testcodes vom Programmcode gewährleistet schlanke Klassen und kleinere Softwarepakete zur Auslieferung. Testfälle sind vollkommen unabhängig voneinander ausführbar. Es gibt keine festgelegte Reihenfolge oder Abhängigkeiten der Testfälle untereinander. Das Ergebnis der Tests ist auf einen Blick eindeutig erkennbar, dadurch ist keine Auswertung von Logfiles oder kryptischer Konsolenausgaben notwendig. 3.1 JUnit JUnit ist ein frei verfügbares, unter der IBM Public License stehendes Framework für die Durchführung von Black-Box-Tests. Testfälle werden in eigenen Testklassen kodiert und zu Testsuiten zusammengefasst. Somit ist die strikte Trennung des Codes von Anwendung und Test sichergestellt. Diese Tatsache beinhaltet folgende Vorteile: Bei Auslieferung der Software werden die Tests nicht mit ausgeliefert und somit ist das Programm schlanker. Weitere, nicht mit der Anwendung vertraute Entwickler, können sich schneller einarbeiten. Der Code der Anwendung bleibt selbst bei steigender Komplexität übersichtlich. Die grundlegende Einheit beim Testen mit JUnit ist der Testfall - in der Klasse TestCase gekapselt. Ergebnisse werden in TestResult gespeichert. Die zentrale Methode der Klasse TestCase ist TestCase.runTest(TestResult), die im Interface Test definiert wird. Zum Aufbau dieser Methode später mehr. Mehrere Testfälle Ronny Boost

10 werden zu Gruppen in der Klasse TestSuite zusammengefasst. Das Besondere an TestSuite ist, dass sie ebenfalls das Interface Test implementiert. Wird dann TestSuite.runTest(TestResult) aufgerufen, gibt die Klasse den Aufruf an alle enthaltenen Testfälle weiter. Das funktioniert auch, falls eine Testsuite nicht nur echte Testcases enthält, sondern wieder Testsuiten. So ist das hierarchische Schachteln von Testfällen möglich. In Abbildung 3.1 ist das Klassenschema zu sehen. Das Design-Pattern, welches das Test -Interface und die beiden Klassen TestCase und TestSuite verbindet, heißt Composite. Wie in der Abbildung zu sehen, ist das Framework mit drei zentralen Klassen und einem Interface sehr übersichtlich, was die Einarbeitung verkürzt und den Einsatz vereinfacht. Die gesamte Distribution hat zwar momentan elf Klassen und drei Interfaces, aber von den zusätzlichen Klassen ist nur die Assert -Klasse von ähnlich zentraler Bedeutung (und auch sie nur indirekt). Abbildung 3.1: Aufbau der wichtigsten Klassen des JUnit-Frameworks [2] Die Klasse Assert mit den wichtigsten Asserts: class Assert (parent class of TestCase) - static asserttrue() basic assert function (used to be assert()) Ronny Boost

11 - static assertequals() for all primitive types and Object - static assertnull() for Object - static assertnotnull() for Object - static assertsame() for Object - static assertnotsame() for Object - static assertfalse() for boolean condition - static fail() make a test fail Zurück zum Aufbau der Runtest-Methode. Sie ruft intern die folgenden drei Methoden auf: setup() runtest() teardown() Alle drei Methoden sind leer implementiert und können vom Entwickler überschrieben werden. setup() und teardown() erzeugen eine geeignete Testumgebung beziehungsweise geben sie frei. Die Methode runtest() dagegen enthält die eigentlichen Tests. Durch Reflection - eine Java-Technik, die es ermöglicht, zur Laufzeit die Methoden einer Klasse abzufragen - ist es möglich in der Testklasse nur eine Reihe von Methoden nach dem Schema void testxxx() anzulegen statt runtest() zu überschreiben. Durch den Konstruktor TestSuite(MyTestClass.class) werden dann automatisch alle Testmethoden innerhalb der Testsuite durchgeführt. Die Reihenfolge der Ausführung der test Methoden ist dabei nicht festgelegt und spielt insofern keine Rolle, da die Methoden der Anwendung unabhängig voneinander das gleiche Ergebnis liefern sollen. Ronny Boost

12 3.2 Installation Die Installation ist einfach: das heruntergeladene Zip-File entpacken (Download von und das dann verfügbare Jar-Archiv zum CLASSPATH des jeweiligen Systems hinzufügen bzw. in die IDE einbinden. 3.3 Beispiel für einen Test Im folgenden Listing ist ein Beispiel zum Anlegen von Person Objekten zu sehen: Listing 1: Person.java 01: class Person { 02: private String ivname, inname; 03: 04: public Person(String v, String n) { 05: ivname = v; 06: inname = n; 07: } 08: 09: public boolean equals(object o) { 10: Person p = (Person) o; 11: return p.getvname() == ivname && p.getnname() == inname; 12: } 13: 14: public String getvname() { 15: return ivname; 16: } 17: 18: 19: public String getnname() { 20: return inname; 21: } 22: 23: public void setvname(string v) { 24: inname = v; 25: } 26: 27: 28: public void setnname(string n) { 29: inname = n; 30: } 31: 32: public String tostring() { 33: return ivname + " " + inname; 34: } 35: } Die Objekte der Klasse Person.java enthalten die - Attribute: Ronny Boost

13 o ivname = Vorname. o inname = Nachname. - Methoden: o Getter und Setter für die Attribute. o tostring(), um aus Vor- und Nachname den vollständigen Namen zusammenzusetzen. und den Konstruktor, welchem alle o.g. Attribute übergeben werden. Zum Testen der Methoden des Anwendungscodes dient die Klasse PersonTest.java. Listing 2: PersonTest.java 01: import junit.framework.*; 02: 03: public class PersonTest extends TestCase { 04: 05: private Person iauthor,iauthor2, iauthor3, itux, itux2; 06: private String iname; 07: 08: public PersonTest(String name) { 09: super(name); 10: } 11: 12: public static void main(string[] args) { 13: junit.swingui.testrunner.run(persontest.class); 14: } 15: 16: protected void setup() { 17: iauthor = new Person("Bernhard", "Bablok"); 18: iauthor2 = new Person("Bernhard", "Bablok"); 19: iauthor3 = new Person(null,null); 20: iauthor3.setvname("bernhard"); 21: iauthor3.setnname("bablok"); 22: itux = new Person("Tux",null); 23: itux2 = new Person("Tux",null); 24: iname = "Penguin"; 25: } 26: 27: public void testequals() { 28: asserttrue(iauthor.equals(iauthor2)); 29: asserttrue(!iauthor.equals(iname)); 30: asserttrue(itux.equals(itux2)); 31: } 32: 33: public void testsetname() { 34: assertequals(iauthor,iauthor3); 35: } 36: 37: public void testgetnname() { 38: assertequals(iauthor.getnname(),"bablok"); 39: } 40: 41: public void testtostring() { 42: assertequals(iauthor.tostring(), "Bernhard Bablok"); 43: } Ronny Boost

14 44: }. Das Test im Namen ist nicht zwingend erforderlich, aber um die eindeutige Zugehörigkeit zur zu testenden Klasse sicher zu stellen ist es sinnvoll hinter den ursprünglichen Klassennamen der Anwendung das Suffix Test anzuhängen. Im Gegensatz hierzu ist die Benennung der Prüfmethoden fest vorgegeben: Diese müssen immer der Form testxxx () entsprechen, wobei für XXX ein beliebiger Name stehen kann, wiederum vorzugsweise der Name der zu testenden Methode. Der Ablauf des Test beginnt durch den Aufruf der main( )-Methode und des darin enthaltenen Methodenaufrufs von run( ) wie oben beschrieben. In der Methode setup() wird eine Testumgebung mit diversen Testobjekten angelegt. Auf diesen Testobjekten werden nun die Testmethoden ausgeführt. Sobald ein assert( ) fehlschlägt unterbricht JUnit die Ausführung und signalisiert dies mit einem roten Balken und der Angabe bei welchem Test dies passierte. Hier beispielsweise schlägt der Test fehl. Der hier verwendete TestRunner zeigt die in Abbildung 3.2 dargestellte Ausgabe: Abbildung 3.2 JUnit in Aktion: Zwei Fehler wurden gefunden, in der unteren Hälfte der Stack Trace dazu. [2] Ronny Boost

15 Nach Bereinigung aller Fehler sieht das Ergebnis wie in Abbildung 3.3 aus: Abbildung 3.3: Ein erfolgreicher JUnit-Lauf. [2] Es dient also ein einfacher grüner oder roter Balken als Bestätigung für den Erfolg bzw. Misserfolg des Testvorgangs. Um nun diese Tests in einer TestSuite zu integrieren ist nicht mehr viel Aufwand vonnöten: Listing 3: AllTests.java 01: import junit.framework.*; 02: 03: public class AllTests { 04: 05: public static Test suite() { 06: TestSuite suite = new TestSuite("Test for default package"); 07: suite.addtestsuite(persontest.class); 08: return suite; 09: } 10: } 3.4 Test Driven Development In obigem Beispiel wurde der Test erst nach Erstellen der Klasse Person.java für die darin enthaltenen Programmteile implementiert. Eine andere Vorgehensweise wäre die Überlegung der Test-First-Strategie. Dabei gilt es einen Test für eine Ronny Boost

16 Softwarekomponente - bei der objektorientierten Programmierung in der Regel Klassen - vor der eigentlichen Komponente zu implementieren. Der Entwickler einer Klasse ist sich in der Regel klar darüber, was er mit seiner Klasse erreichen möchte. So entsteht eine Art Protokoll für die Anwendung der Klasse. Und genau dieses Protokoll wird von einem Unit Test geprüft. Die zu entwickelnde und zu testende Klasse wird dabei immer nur so weit ausprogrammiert, wie es notwendig ist, um einen Test zu erfüllen. Nach jedem erfolgreichen Test wird dann der entwickelte Code in kurzen Zyklen weiter verfeinert und erneut getestet, bis dieser die Geschäftslogik erfüllt und in einem optimalen Zustand ist. Neudeutsch spricht man hier von Refactoring. Der Vorteil dieses Verfahrens ist es, stets über einen funktionierenden Code zu verfügen, der leicht automatisiert getestet werden kann. In der testgetriebenen Softwareentwicklung geht der Entwickler folgendermaßen vor: - Der erste Schritt ist das Schreiben eines Tests für die zu erfüllende Teilfunktion - Der Code der Anwendung wird nun so geschrieben, um dem Test zu genügen oder anders ausgedrückt: damit der Test fehlerfrei durchläuft. - Während der Implementierung wird nun abwechselnd am Programm- bzw. Testcode geschrieben, wodurch kleine Iterationen entstehen, welche in sehr kurzen Zeitabständen (5 20 Minuten) erfolgen. - Bevor der neu entstandene Code in das Gesamtsystem integriert werden darf, müssen alle Tests fehlerfrei laufen. Die hierbei immer wieder auftretende Reihenfolge beim Testen ist grün rot grün rot, d.h. nach Schreiben des Tests kann dieser selbstverständlich noch nicht erfüllt werden, da noch kein Code zum Erfüllen der Testbedingung vorhanden ist. Nun schreibt der Entwickler so wenig Code wie möglich, um den Test zu erfüllen bis der JUnit-Test als Ergebnis den oben erläuterten grünen Balken ausgibt. Dann beginnt der Ablauf von vorne mit dem Schreiben eines Tests. Der bis dahin geschriebene Programmcode wird durch diese kleinen Iterationen mit verfeinert und bei jedem Ausführen der Tests wieder geprüft. Dadurch wird sichergestellt, bereits positiv getesteten Code nicht wieder zu verschlechtern. Ronny Boost

17 3.4.1 Vorteile des TDD Das TDD zwingt den Entwickler dazu, sich während der Entwicklung einer Klasse und speziell noch vor der Implementierung Gedanken über die Nutzung der Klasse zu machen. Fehler in der Implementierung werden frühzeitig vermieden oder erkannt, was bei der abschließenden Fehlersuche enorm Zeit und damit Geld einspart. Ist die Software allerdings im fortgeschrittenen Zustand, ist der Fehler nur unter großem Aufwand (also teuer) zu beheben. Code soll funktional bleiben, also nicht regressiven Einflüssen während der weiteren Entwicklung unterliegen. Kein unnötiger Code im Programm Nachteile des TDD Es sind gute bis sehr gute Kenntnisse im Entwerfen und Implementieren von Software zwingend erforderlich. Ohne Disziplin kein Erfolg. Weicht der Entwickler von der Vorgehensweise der kleinen Iterationen ab schreibt beispielsweise der Entwickler in einer kreativen Phase drei Klassen ohne vorher Tests zu schreiben ist die Methodik sehr schwer wieder aufzunehmen. Ronny Boost

18 3.5 Konventionelle Softwareerstellung vs. TDD Eine Gegenüberstellung von konventioneller Entwicklung in Abbildung 3.4 zu testgetriebener Entwicklung in Abbildung 3.5 soll die Vorteile des Testcase Driven Development (TDD) bezüglich Aufwand, Kosten und umgesetzter Anforderungen verdeutlichen: Abbildung 3.4: Konventioneller Projektablauf [3] Abbildung 3.5: Testgetriebener Projektablauf [3] Ronny Boost

19 4 Zusammenfassung JUnit eignet sich gut für nachvollziehbare, reproduzierbare Tests von abgeschlossenen Einheiten (Units). Dadurch ist Refactoring des bereits implementierten Codes begünstigt. Die prinzipielle Einfachheit mit der Tests umgesetzt werden können, kombiniert mit beliebiger Erweiterbarkeit entsprechend dem Wachstum des Programms ist die große Stärke von JUnit. Es ist allerdings nicht das ultimative Werkzeug zur Behebung aller Fehler in Software und deren Entwicklung, sondern stellt ein wichtiges zusätzliches Mittel, insbesondere für die testgetriebene Softwareentwicklung und teilweisen Validierung bereits vorhandener Projekte dar. Im Hinblick auf das TDD sollte sich jeder Programmierer ernsthafte Gedanken über seine Vorgehensweise beim Programmieren anstellen. Der Weg vom Drauflosprogrammieren zum strukturierten Vorgehen mittels Entwurf der wirklich benötigten Funktionen vor dem ersten Zeichen Code ist ein Steiniger, aber Lohnenswerter. Ronny Boost

20 5 JUnit Erweiterungen Projekt Beschreibung StrutsTestCase Testen des JSP-Frameworks Struts. JUnitX und XPTest Erweiterung auf Privat- und Protected-Klassen, Integration in Together. JUnit und TIBCO Integration in TIBCO Active Enterprise Application. JUnit Test Generator Generierung von Testfällen. Daedalus JUnit Extensions Ressourcen-Management für JUnit-Tests. JFCUnit Unit-Tests für Swing-Applikationen. JUnitPP Unter anderem Testdaten Repository, Kommandozeilen-Argumente. JSP TEST Testen von Java Server Pages. JXUnit Trennt Testdaten und Testcode. Verwendet XML. JUnitHelp Hilfe zu JUnit. Joshua Regression-Testing mit JUnit. JDepend Testen von Design-Metriken (misst die Komplexität der Klassen). JesTer Sucht Code, der nicht durch Tests abgedeckt wird. HttpUnit Funktionstest von interaktiven, dynamischen Webseiten. JUnitEE Tests für J2EE-Anwendungen. Cactus Testet Server-seitigen Java-Code. UnitPerf Erweitert JUnit-Testklassen für Performance- und Skalierungstests. Tabelle 5-1: JUnit Erweiterungen. Ronny Boost

21 6 Abbildungsverzeichnis Tabelle 2-1: Zusammenfassung verschiedener Testmethoden. 5 Abbildung 3.1: Aufbau der wichtigsten Klassen des JUnit-Frameworks [2] 10 Abbildung 3.2 JUnit in Aktion: Zwei Fehler wurden gefunden, in der unteren Hälfte der Stack Trace dazu. [2] 14 Abbildung 3.3: Ein erfolgreicher JUnit-Lauf. [2] 15 Abbildung 3.4: Konventioneller Projektablauf [3] 18 Abbildung 3.5: Testgetriebener Projektablauf [3] 18 Tabelle 5-1: JUnit Erweiterungen. 20 Ronny Boost

22 7 Quellen [1] Frank Westphal Testgetriebene Entwicklung 2005 [2] Bernhard Bablok Reihenuntersuchung ; Linux-Magazin Ausgabe 03/2002 [3] [4] de.wikipedia.org [5] Das heilige Orakel [6] Robert Pintarelli Modul-Tests mit JUnit 2004 [7] Christian Aich, Robert Reeb Einführung in den Softwaretest 2004 [8] Barbara Beenen Rot-Grünes Wechselspiel 2004 Ronny Boost

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

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

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

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009 Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger

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

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

Whitebox-Tests: Allgemeines

Whitebox-Tests: Allgemeines -Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv

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

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

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

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

Software - Testung ETIS SS05

Software - Testung ETIS SS05 Software - Testung ETIS SS05 Gliederung Motivation Was ist gute Software? Vorurteile gegenüber Testen Testen (Guidelines + Prinzipien) Testarten Unit Tests Automatisierte Tests Anforderungen an Testframeworks

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

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

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

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

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

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

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

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 9. Vorlesung 1 Pläne Kein Plan überlebt die erste Feindberührung - Feldmarschall Helmuth von Moltke Prognosen sind schwierig, besonders wenn sie die Zukunft

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Software Engineering in der Praxis Praktische Übungen Dirk Wischermann Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 18. Dezember 2006 Inhalt Nachlese

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

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

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

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

am Beispiel von JUnit

am Beispiel von JUnit Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Qualitätsmanagement im Projekt

Qualitätsmanagement im Projekt Software-Engineering Qualitätsmanagement im Projekt Vorlesung im Wintersemester 2008/2009 Fakultät Wirtschaftsinformatik Klaus Mairon, M.Sc. Inhalte Messen und Bewerten: Metriken in der Qualitätssicherung

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

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

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

JUnit. Software-Tests

JUnit. Software-Tests 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

Mehr

Agiles Testen. Gedankensammlung. 17. November 2013 - Patrick Koglin

Agiles Testen. Gedankensammlung. 17. November 2013 - Patrick Koglin Agiles Testen Gedankensammlung 17. November 2013 - Patrick Koglin Inhalt Reflektion: Agilität notwendig? Wo? Eigenschaften agiler Entwicklung Quality is everyone s responsibility Qualität möglich machen

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

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

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

Testphase. Das Testen

Testphase. Das Testen Testphase VIS Projekt Freie Universität Berlin N.Ardet - 17.4.2001 Das Testen Testen ist das Ausführen eines Software- (Teil)systems in einer definierten Umgebung und das Vergleichen der erzielten mit

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Testen von graphischen Benutzeroberflächen. 24. Juni 2015 Testen von graphischen Benutzeroberflächen 24. Juni 2015 Überblick Motivation für das automatische Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien für GUIs Capture / Replay Testmethode

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Testen von graphischen Benutzeroberflächen. 26. Juni 2013 Testen von graphischen Benutzeroberflächen 26. Juni 2013 Überblick Testarten Methoden-, Klassen-, Komponenten-, Systemtests Motivation für automatisches Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien

Mehr

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

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

Reporting Services und SharePoint 2010 Teil 1

Reporting Services und SharePoint 2010 Teil 1 Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?

Mehr

Zimmertypen. Zimmertypen anlegen

Zimmertypen. Zimmertypen anlegen Zimmertypen anlegen Hier legen Sie Ihre Zimmer an, damit sie auf der Homepage dargestellt werden und online buchbar gemacht werden können. Wobei wir ausdrücklich darauf hinweisen möchten, dass es ganz

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist Feintypisierung - Überblick Ergebnisse Ergebnisse aus aus anderen anderen Arbeitsergebnissen Arbeitsergebnissen Replikationsplan Replikationsplan

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

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Probeklausur Softwareengineering SS 15

Probeklausur Softwareengineering SS 15 Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

Testen Prinzipien und Methoden

Testen Prinzipien und Methoden Testen Prinzipien und Methoden ALP 2 SS2002 4.7.2002 Natalie Ardet Definition Im folgenden gilt: Software = Programm + Daten + Dokumentation Motivation Software wird immer mehr in Bereichen eingesetzt,

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

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

GEVITAS Farben-Reaktionstest

GEVITAS Farben-Reaktionstest GEVITAS Farben-Reaktionstest GEVITAS Farben-Reaktionstest Inhalt 1. Allgemeines... 1 2. Funktionsweise der Tests... 2 3. Die Ruhetaste und die Auslösetaste... 2 4. Starten der App Hauptmenü... 3 5. Auswahl

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

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

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08 Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Internet Explorer Version 6

Internet Explorer Version 6 Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster

Mehr

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

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw, 16.04.2013 Software Komponenten FS13 Gruppe 03 Horw, 16.04.2013 Bontekoe Christian Estermann Michael Moor Simon Rohrer Felix Autoren Bontekoe Christian Studiengang Informatiker (Berufsbegleitend) Estermann Michael

Mehr

Einführung in PHP. (mit Aufgaben)

Einführung in PHP. (mit Aufgaben) Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

SDD System Design Document

SDD System Design Document SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen

Mehr

Content Management System mit INTREXX 2002.

Content Management System mit INTREXX 2002. Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,

Mehr

Some Software Engineering Principles

Some Software Engineering Principles David L. Parnas: Some Software Engineering Principles Marco Oppel 30.06.2004 Seminar Software-Architektur Institut für Informatik Humboldt Universität zu Berlin 1 Problemstellung Software Engineering Multi-Personen

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

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

Kurzanleitung zu. von Daniel Jettka 18.11.2008

Kurzanleitung zu. von Daniel Jettka 18.11.2008 Kurzanleitung zu Tigris.org Open Source Software Engineering Tools von Daniel Jettka 18.11.2008 Inhaltsverzeichnis 1.Einführung...1 2.Das Projektarchivs...3 2.1.Anlegen des Projektarchivs...3 2.2.Organisation

Mehr

Anforderungen an die HIS

Anforderungen an die HIS Anforderungen an die HIS Zusammengefasst aus den auf IBM Software basierenden Identity Management Projekten in NRW Michael Uebel uebel@de.ibm.com Anforderung 1 IBM Software Group / Tivoli Ein Feld zum

Mehr

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

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt. Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

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

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Partitionieren in Vista und Windows 7/8

Partitionieren in Vista und Windows 7/8 Partitionieren in Vista und Windows 7/8 Windows Vista und Windows 7 können von Haus aus Festplatten partitionieren. Doch die Funktion ist etwas schwer zu entdecken, denn sie heißt "Volume verkleinern".

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

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

Lizenzierung von System Center 2012

Lizenzierung von System Center 2012 Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im

Mehr

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Name: Bruno Handler Funktion: Marketing/Vertrieb Organisation: AXAVIA Software GmbH Liebe Leserinnen und liebe Leser,

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was meinen die Leute eigentlich mit: Grexit? Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

AUF LETZTER SEITE DIESER ANLEITUNG!!!

AUF LETZTER SEITE DIESER ANLEITUNG!!! BELEG DATENABGLEICH: Der Beleg-Datenabgleich wird innerhalb des geöffneten Steuerfalls über ELSTER-Belegdaten abgleichen gestartet. Es werden Ihnen alle verfügbaren Belege zum Steuerfall im ersten Bildschirm

Mehr

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18. Installationsanleitung Maschinenkonfiguration und PP s Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.Februar 2015 Inhaltsverzeichnis 1 Einbinden der Postprozessoren... 3 1.1

Mehr