Testgetriebene Entwicklung
|
|
- Otto Maus
- vor 6 Jahren
- Abrufe
Transkript
1 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Testgetriebene Entwicklung
2 Testgetriebene Entwicklung Test/Code/Refactor-Zyklus: Motiviere jede Verhaltensänderung am Code durch einen automatisierten Test. Refaktorisierung und einfaches Design: Bringe den Code immer in die Einfache Form. Häufige Integration: Integriere den Code so häufig wie nötig. Paarprogrammierung: Besiege den inneren Schweinehund. 2
3 Zustandsdiagramm der testgetriebenen Entwicklung umstrukturieren Keine Ideen für mehr Testcode Grün (Alle Tests laufen) Zustandsdiagramm idealisiert Testcode vor Anwendungscode Kleine Schritte Inkrementelles Design Testcode schreiben Anwendungscode schreiben Rot (Mindestens ein Test scheitert) 3
4 Test/Code/Refactor-Zyklus grün rot: Schreibe einen Test der fehlschlägt. Schreibe gegebenenfalls gerade soviel Code, dass der Test übersetzt werden kann. rot grün: Schreibe gerade soviel Code, dass alle Tests erfolgreich laufen. grün grün: Eliminiere Duplikationen und andere üble Gerüche im Code. 4
5 Unit Tests werden vom Entwickler selbst geschrieben geben konkretes Feedback und Sicherheit ermöglichen sichere Änderungen sichern Erhalt der vorhandenen Funktionalität müssen bei jeder Code-Integration zu 100 % laufen 5
6 Effizientes Testen möglichst zeitnah zur Programmierung automatisiert und damit wiederholbar muss Spaß machen Testen so oft und so einfach wie Kompilieren Fehler finden, nicht Fehlerfreiheit beweisen 6
7 Testrahmenwerke gibt es für fast jede denkbare Programmiersprache vereinfachen das Schreiben der Testfälle automatische Ausführung der Testfälle und Anzeige der Ergebnisse Zusammenfassen von Testfällen zu Testmengen bekannteste Vertreter für Java: JUnit & TestNG 7
8 JUnit 4: Ein Testrahmenwerk für Java erlaubt schnellen und hierarchischen Aufbau von Testmengen liefert die fehlgeschlagenen Testfälle standardmäßig nur textuelle Anzeige, grafische Anzeige wird von der Programmierumgebung realisiert in Eclipse integriert Autoren: Erich Gamma, Kent Beck 8
9 Ausführung in Eclipse Im Kontextmenü einer Testklasse Run As JUnit Test zu wählen; dann werden die Testmethoden ausgeführt. Testklassen können auch in Paketen zusammengefasst werden, und diese wiederum in größere Pakete; bei Auswahl mit Run As JUnit Test erfolgt das Ausführen aller enthaltenen Testmethoden. Die Anzeige erfolgt in einem eigenen Fenster. Fehlgeschlagener Testfall 9
10 JUnit 4: Testklasse enthält zusammengehörige Testfälle in Form von Methoden hält i.d.r. Referenzen auf die zu prüfenden Testobjekte Vergleiche von Soll- und Ist-Werten mittels Zusicherungen aus der Klasse org.junit.assert Kennzeichnung der Test-Methoden durch Annotationen 10
11 JUnit 4: Annotationen zur Makierung von Markiert einen Testfall Erwartete Ausnahmen können wie folgt angegeben = SQLException.class) Es kann auch die maximale Laufzeit in Millisekunden festgelegt = Markiert einen Testfall, der nicht ausgeführt werden soll Die Bergründung wird als Zeichenkette fehlt public void buchausleihen() { 11
12 JUnit: Annotationen zum Aufund Abbau von Markiert eine Methode, die vor jedem Testfall ausgeführt Markiert eine Methode, die nach jedem Testfall ausgeführt Markiert eine Klassenmethode, die vor Instanzierung der Testklasse ausgeführt Markiert eine Klassenmethode, die nach allen anderen bisher genannten Methoden ausgeführt wird. 12
13 JUnit 4: Einige Zusicherungen assertequals(object expected, Object actual) Schlägt fehl, wenn der Aufruf der equals-methode von expected mit dem Parameter actual den Wert falsch zurück gibt. assertequals(object[] expecteds, Object[] actuals) Schlägt fehl, wenn der Aufruf der equals-methode auf einem der Feldelemente von expecteds mit dem entsprechenden Feldelement aus actuals den Wert falsch zurück gibt oder wenn die Felder unterschiedlich lang sind. assertequals(double expected, double actual, double delta) Schlägt fehl, wenn sich der erwartete und der tatsächliche Wert um mehr als die angegebene Differenz unterscheiden. 13
14 JUnit 4: Noch mehr Zusicherungen asserttrue(boolean condition) assertfalse(boolean condition) Schlägt fehl, wenn der Ausdruck falsch/wahr ist. assertnull(object object) assertnotnull(object object) Schlägt fehl, wenn die Referenz nicht null/null ist. assertsame(object expected, Object actual) Schlägt fehl, wenn die Referenzen auf unterschiedliche Objekte zeigen. fail() Schlägt immer fehl. Zu all diesen Methoden gibt es eine Variante mit einer Zeichenkette als ersten Parameter für ein Nachricht im Fehlerfall. 14
15 JUnit 4: Beispiel package demo; import static org.junit.assert.asserttrue; import org.junit.after; import org.junit.before; import org.junit.test; public class BibliothekTest { private Bibliothek public void baueauf() { bib = new public void buchistinbibliothek() { boolean b = bib.pruefeverfuegbarkeit("faust"); asserttrue("faust muss in der Bibliothek sein.", public void raeumeauf() { bib = null; Zusicherungen werden per import static eingeblendet. Methoden dienen zum Aufbau gemeinsamer markiert einen Testfall. Methoden dienen zum Abbau gemeinsamer Testressourcen. 15
16 JUnit 4: Ausführungsreihenfolge [ ] public class BibliothekTest { [ ] public void verbindemitdb() public void baueauf() public void buchistinbibliothek() public void buchausleihen() public void raeumeauf() public void trennevondb() { Die Reihenfolge der Testfälle ist nicht garantiert. Die Punkte 3 und 6 könnten auch vertauscht sein 16
17 Auf erwartete Ausnahmen testen [ = NUllPointerException.class) public void keinnull() throws Exception { bib.pruefeverfügbarkeit(null); [ ] Möglichst robustes Verhalten im Fehlerfall testen. Unerwartete Ausnahmen werden von JUnit als Fehler registriert. 17
18 Übung 1: Eine Testklasse für die Klasse bank.account public Account(String customer) public String getcustomer() public int getbalance() public void deposit(int amount) public void withdraw(int amount) public void transfer(int amount, Account recipient) Für deposit, withdraw, transfer sind nur positive Beträge erlaubt, ansonsten wird eine IllegalArgumentException geworfen. 18
19 Wir überlegen uns erste Testfälle Erzeuge neues Konto (Account) für Kunden. Mache eine Einzahlung (deposit). Mache eine Abhebung (withdraw). Überweisung zwischen zwei Konten. Verbiete negative Beträge. 19
20 Wir entwerfen einen Test, der zunächst fehlschlagen sollte public class AccountTest public void createaccount() { Account a = new Account("Customer"); assertequals("customer", a.getcustomer()); assertequals(0, a.getbalance()); 20
21 Wir schreiben gerade soviel Code, dass sich der Test übersetzen lässt public class Account { public Account(String customer) { public String getcustomer() { return null; public int getbalance() { return 0; 21
22 Wir prüfen, ob der Test fehlschlägt 22
23 Wir schreiben gerade soviel Code, dass der Test erfüllt sein sollte public class Account { public Account(String customer) { public String getcustomer() { return "Customer"; public int getbalance() { return 0; 23
24 Wir prüfen, ob der Test durchläuft 24
25 Wir entfernen Duplikation Aber wo ist sie? public class Account { public Account(String customer) { public String getcustomer() { return "Customer"; public int getbalance() { return 0; public class AccountTest extends TestCase { public void testcreateaccount() { Account a = new Account("Customer"); assertequals("customer", a.getcustomer()); assertequals(0, a.getbalance()); 25
26 Wir entfernen Duplikation public class Account { private String customer; public Account(String customer) { this.customer = customer; public String getcustomer() { return customer; public int getbalance() { return 0; 26
27 Wir prüfen, ob der Test weiterhin läuft 27
28 Tests und Code im Wechselspiel Der fehlschlagende Test entscheidet, welchen Code wir als nächstes schreiben, um die Entwicklung der Programmlogik voranzutreiben. Wir entscheiden anhand des bisher geschriebenen Code, welchen Test wir als nächstes angehen, um die Entwicklung des Designs weiter voranzutreiben. 28
29 Auswahl des nächsten Testfalls Erzeuge neues Konto (Account) für Kunden. Mache eine Einzahlung (deposit). Mache eine Abhebung (withdraw). Überweisung zwischen zwei Konten. Verbiete negative Beträge. 29
30 Nächster Test: Einzahlen public class AccountTest extends TestCase { [ ] public void testdeposit() { Account a = new Account("Customer"); a.deposit(100); assertequals(100, a.getbalance()); account.deposit(50); assertequals(150, a.getbalance()); public class Account { [ ] private int balance = 0; public int getbalance() { return balance; public void deposit(int amount) { balance += amount; 30
31 Rolle der Unit Tests Tests zur Qualitätssicherung: Die Tests sichern die vorhandene Funktionalität Test-First führt zu evolutionärem Design : Das Systemdesign entsteht Stück für Stück. Tests zur Schnittstellendefinition: Test verwendet schon Klassen und Methoden, bevor sie überhaupt definiert sind. Tests zur Modularisierung: Testbarkeit erfordert Entkopplung der Programmteile. Tests als ausführbare Spezifikation und Dokumentation 31
32 Übung 2: Schritt für Schritt Der Quellcode der Euro-Klasse ging verloren, nur die Test wurden gerettet. Zur Erinnerung: Kleine Schritte! Von rot nach grün! Die einfachste Lösung! Mach es lauffähig! Mach es richtig! 32
33 Nachbereitung zu Übung 2 Euro-Klasse ist durch die vorhandenen Tests unterspezifiziert. Viele Tests laufen ohne Codeänderung! Sind diese Tests sinnlos? Welche Tests sollten ergänzt werden? Welche Implementierungsunterschiede sind möglich? 33
34 Testheuristik: Eigenschaften testen, nicht Methoden Testfälle orientieren sich an Anforderungen und Eigenschaften, nicht an den zu testenden Methoden. Es gibt keine 1:1 Entsprechung von Testfallmethode zu getesteter Methode. Testfälle sollen am Beispiel dokumentieren, wie die Klassen korrekt zu verwenden sind. 34
35 Testheuristik: Implementierungsunabhängigkeit Tests sind gegen die öffentliche Klassenschnittstelle gerichtet. Tests, die auf den Innereien einer Klasse basieren, sind äußerst fragil. Sich Zugriff auf Variablen oder private Methoden zu wünschen zeigt, dass dem Code noch eine entscheidende Designidee fehlt. 35
36 Testheuristik: An den Rändern testen Die meisten algorithmischen Fehler treten an den Rändern der erlaubten Wertebereiche auf: Auswahl der Testexemplare dort, anstatt irgendwo! Lässt sich der Wertebereich in mehrere für den Test äquivalente Proben unterteilen? Pro Äquivalenzklasse mindestens eine Probe! 36
37 Testheuristik: Ergebnisse im Test festschreiben Erwartete Werte werden als Konstanten kodiert, nicht noch mal im Test berechnet. Reproduzieren wir Anwendungslogik im Test, reproduzieren wir auch ihre Fehler. 37
38 Testheuristik: Orthogonale Testfälle Unabhängig voneinander sind Testfälle dann, wenn sie sich auf orthogonale Aspekte beziehen. Häufig lässt sich ein Test extrem vereinfachen, indem er Annahmen macht, die ein anderer Test bereits verifiziert hat. Kommt man in die Not, zu viele Tests anpassen zu müssen, nur um eine Codeänderung machen zu können, sind die Tests nicht orthogonal. 38
39 Testheuristik: Testklassen 1:1 Entsprechung zwischen Testklasse und Anwendungsklasse ist nicht zwingend. Testklassen sind ein Mechanismus für die Wiederverwendung von Testcode. Testklassen, die einen ähnlichen Testrahmen benötigen, sind in einem Paket. 39
40 Weitere Testheuristiken Vergiss Ausnahmen und Fehlerfälle nicht! Wähle aussagekräftige Testklassen- und Testmehtodennamen! Entferne Redundanz im Testcode! Halte Testfälle kurz und verständlich! 40
41 Testtechnik: Mock-Objekte Testen von innen zahlreiche Bibliotheken: EasyMock, jmock ersetzen eine echte Implementierung und verifizieren korrektes Verhalten des Klienten Unterscheide Mock-Objekte von Stummel- Objekten und Attrappen Stummel-Objekte und Attrappen ersetzen auch echte Implementierung für Testzwecke Stummel-Objekte und Attrappen verifizieren selbst nichts 41
42 Vorteile von Mock-Objekten gut zum Testen von Protokollen, der richtigen Reihenfolge von Methodenaufrufen und den dabei übergebenen Parametern reduzieren Abhängigkeiten reduzieren Wartezeiten kapseln/beschreiben erwartetes Verhalten können Verhalten zeigen, dass ansonten schwer zu reproduzieren ist fördern Programmierung gegen Schnittstellen 42
43 Indikatoren gegen das Testen mit Mock-Objekten Mock-Objekt enthält viel Logik statt fest verdrahteter Werte Mock-Objekt dupliziert Anwendungslogik echte Objekte leicht(er) verwendbar Mock-Objekt ruft andere Mock-Objekte auf 43
44 Testmuster für Mock-Objekte Instanzen der Mock-Objekte erstellen initiale Zustände der Mock-Objekte setzen erwartete Werte der Mock-Objekte setzen Anwendungscode mit Mock-Objekten als Parameter aufrufen Verifizieren der erwarteten Werte in den Mock- Objekten 44
45 Referenzen Kent Beck: Extreme Programming Explained - Embrace Change. Addison-Wesley, Kent Beck: Test-Driven Development: By Example. Addison-Wesley, Martin Lippert et al.: Software entwickeln mit extreme Programming. Erfahrungen aus der Praxis. dpunkt.verlag, Johannes Link: Softwaretests mit JUnit, 2. Auflage. dpunkt.verlag, Frank Westphal. Testgetreibene Entwicklung mit JUnit & FIT. dpunkt.verlag,
Testgetriebene Entwicklung mit JUnit
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Testgetriebene Entwicklung mit JUnit Testgetriebene Entwicklung Test/Code/Refactor-Zyklus: Motiviere jede Verhaltensänderung am Code durch
MehrKapitel 6.2 Testwerkzeuge
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Kapitel 6.2 Testwerkzeuge SWT I Sommersemester 2009 Walter F. Tichy Andreas Höfer David J. Meder Testwerkzeuge der Software-Amateure Testen
MehrMock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Mock-Objekte Verschiedene Testhelfer Ein Stummel (engl. stub) ist ein nur rudimentär implementierter Teil der Software und dient als Platzhalter
MehrTestgetriebene Entwicklung
Testgetriebene Entwicklung Arbeitskreis Objekttechnologie Norddeutschland Hamburg, 18.03.2002 Frank Westphal freier Berater, Hamburg Tammo Freese OFFIS, Oldenburg westphal@acm.org tammo.freese@offis.de
MehrJUnit 4 Tutorial. Wolfgang Stöttinger
JUnit 4 Tutorial Wolfgang Stöttinger JUnit 4 Tutorial... 1 1 Einführung in JUnit 4... 3 1.1 Wie funktioniert JUnit?... 3 1.2 Annotations... 3 1.2.1 Test Annotation... 3 1.2.2 Before Annotation... 3 1.2.3
MehrTest-driven development JUnit-Test. Lars Varain
Test-driven development JUnit-Test Lars Varain Inhalt Test-driven Development (TDD) Junit4 Beispiel Inhalt Test-driven Development (TTD) Warum TDD? Zyklus Ausnahmebehandlung Junit4 Beispiel Inhalt Test-driven
MehrSoftwaretechnik 1 Vorlesung. Werkzeuge. Prof. Dr. Bernhard Rumpe Software Systems Engineering Technische Universität Braunschweig
Softwaretechnik 1 Vorlesung Werkzeuge Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Überblick über Spracherweiterungen
MehrProgrammieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik
Programmieren JUnit-Tests Heusch -- Ratz -- KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development
MehrTestgetriebene Softwareentwicklung
Testgetriebene Softwareentwicklung Fachhochschule Heilbronn 13. November 2006 Johannes Link E-Mail: business@johanneslink.net Internet: johanneslink.net Weblog: jlink.blogger.de Qualität Gerald M. Weinberg:
MehrTestgetriebene Entwicklung mit JUnit4
Testgetriebene Entwicklung mit JUnit4 Seminarvortrag im Fach Fortgeschrittenes Programmieren in Java, Dozent: Prof. Klinker Datum: 30.04.2010 Referent: Marius Schmeding Ausgangsfragen... Wie testet man
MehrJUnit. 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
MehrKurzanleitung JUnit I S A. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen
nstitut für SoftwareArchitektur Fachbereich MN Fachhochschule Gießen-Friedberg nstitut für SoftwareArchitektur Kurzanleitung JUnit JUnit ist ein Testframework zum Testen von Java-Code. Es eignet sich besonders
MehrEinführung in die Softwaretechnik
oftware ngineering Einführung in die technik Vorlesung Werkzeuge Prof. Dr. Bernhard Rumpe Lehrstuhl Informatik 3 ( ) Rheinisch-Westfälische Technische Hochschule Aachen http://www.se-rwth.de/ Welche Werkzeuge?
Mehr3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen zu Schnittstellen Was bedeutet Orthogonalität / Separation of Concerns?
MehrProgrammieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik
Programmieren JUnit-Tests Heusch -- Ratz -- KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test-driven development
MehrDas 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
MehrSystematisches Testen
Systematisches Testen SEP 136 Unit Testing Objektorientierte Entwicklung Entwicklung von vielen unabhängigen Einheiten (Klassen, Methoden), aus denen das Gesamtprogramm zusammengesetzt wird. Ziel: Wenn
MehrEinführung in die testgetriebene Entwicklung (TDD)
Fachbereich Mathematik und Informatik Institut für Informatik Einführung in die testgetriebene Entwicklung (TDD) Michael Prüm Seminar Beiträge zum Software Engineering 28.03.2013 1 / 55 Gliederung 1. Motivation
MehrKapitel 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
MehrTesten mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Whitebox-Test. Unit-Test
2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 3 4 Testen
MehrTesten mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen
2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 3 4 Testen
MehrTesten mit JUnit. Martin Wirsing. Ziele. Testen. Arten von Tests. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen
2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/
MehrFortgeschrittenes 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
MehrEnterprise JavaBeans Überblick
Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.
MehrTesten 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
MehrJUnit - 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
MehrTesting & Logging DBS. Tobias Lingelmann SEP
Testing & Logging SEP 2018 Tobias Lingelmann 2018-04-24 DBS Wissenschaftliche Betreuer: Daniel Kaltenthaler, Johannes Lohrer Verantwortlicher Professor: Prof. Dr. Peer Kröger Inhalt Testing Übersicht JUnit
MehrProgrammiermethodik. Übung 3
Programmiermethodik Übung 3 Wintersemester 2011 / 12 Fachgebiet Software Engineering george@uni-kassel.de Agenda Besprechung HA2 JUnit4 Implementierung Klassendiagramm Klassen Attribute Methoden Assoziationen
MehrTesten 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
MehrProgrammierung 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
MehrKurzanleitung 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
MehrEnterprise JavaBeans Überblick: 8. Test-Driven Development. 8.1 Einleitung 8.2 Beispiel 8.3 Anwendung mit Eclipse und dem JBoss Application Server
Enterprise JavaBeans Überblick 1. Überblick Komponententechnologien 2. Einführung 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 05/03 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel
MehrUnit 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
MehrSystematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015
Systematisches Testen der Funktionalität von Softwaresystemen 17. Juni 2015 Überblick Semantische Qualität von Software Teststrategien und prinzipien Testgetriebene Softwareentwicklung Welche Arten von
MehrUnit 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
MehrProgrammierung 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
MehrTesten 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
MehrJUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer.
JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Stefan Bechtold. Principal Software Engineer. 16. Oktober 2014 Aus dem Alltag eines Entwicklers Ein typischer (Unit-)
MehrSoftware-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
MehrPT2. Unit06: Modultests & JUnit. Sven Köhler Hasso-Plattner-Institut
PT2 Unit06: Modultests & JUnit Sven Köhler Hasso-Plattner-Institut 2018-06-05 [https://xkcd.com/1700/] Wie erreichen wir Vertrauen in die funktionale Korrektheit von Software? (schon vor der Auslieferung)
MehrTesten 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
MehrSoftwaretests. verschiedene Testformen Testen im V-Modell: Anwendungsszenarien. Tests. Tests. Tests. Anforderungs- definition. Abnahmetest.
Softwaretests verschiedene Testformen Testen im V-Modell: Anforderungs- definition Anwendungsszenarien Abnahmetest Grobentwurf Tests Systemtest Feinentwurf Tests Integrationstest Implementierung Tests
MehrUnit 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?
MehrJUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!
JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern
MehrEffizientes Programmieren
Effizientes Programmieren Praktikum (14.06.2016) Christopher Pietsch Agenda 1 2 3 4 5 6 1 / 32 (14.06.2016) Teil 1 von Softwareentwicklungsmethoden 2 / 32 (14.06.2016) Methodenlose Softwareentwicklung
MehrLiteratur und Web. Komponenten WS 2014/15 Teil 6/JUnit
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]
MehrOOSE4 Testen mit BlueJ/JUnit 4
OOSE4 Testen mit BlueJ/JUnit 4 Lehrstuhl Softwaretechnologie, Dr. Birgit Demuth Sommersemester 2016 Vorgehen beim Unit-Test allgemein 1. Testfälle ausdenken / Testfalltabellen erstellen 2. Testfälle nach
MehrProgrammentwicklung in Java: Javadoc & JUnit
Java: Kapitel 6 Programmentwicklung in Java: Javadoc & JUnit Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 6 Code-Dokumentation mit Javadoc
MehrOOSE_02E Testen mit BlueJ/JUnit 4
OOSE_02E Testen mit BlueJ/JUnit 4 Lehrstuhl Softwaretechnologie, Dr. Birgit Demuth Sommersemester 2018 Vorgehen beim Unit-Test allgemein 1. Testfälle ausdenken / Testfalltabellen erstellen 2. Testfälle
MehrProgrammierprojekt: So0ware Tests. Anne6e Bieniusa Sommersemester 2017
Programmierprojekt: So0ware Tests Anne6e Bieniusa Sommersemester 2017 Testen Kernfrage: Erfüllt die So0ware ihre Anforderungen / SpezifikaGon? FunkGonale Anforderungen Korrekte Ergebnisse bei Berechnungen
MehrUnit 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ß
MehrProgrammiertechnik 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
MehrDas 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
MehrFachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012
Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen
MehrProgrammieren 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.
MehrProgrammieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Testen von Programmen 2 Übersicht Testen ist eine der wichtigsten, aber auch eine der Zeitaufwändigsten Arbeitsschritte
MehrSoftware 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
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrFunktionales Testen. Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg
Funktionales Testen Yi Zhao Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Zhao, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 1 / 15 1 Inhalt
MehrAllgemein: 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:
MehrSoftware Entwicklung 1. Spezifikation von Prozedureigenschaften. Spezifikation prozeduraler Programme. Warum Spezifikationen?
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Spezifikation von Prozedureigenschaften Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27
MehrTest-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
MehrOOP Aufgabenblatt November 2013
1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 5 12. November 2013 Aufgabe 1 Betrachten Sie folgende Funktion zur Division von ganzzahligen Werten: /** * Dividiert zwei ganzzahlige Werte und liefert das Ergebnis
MehrUnit 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
MehrVom Testkonzept zu JUnit
Testen und Testkonzept Dipl.-Inf. (FH) Christopher Olbertz 2. Dezember 2014 Testen und Testkonzept Warum testen? Wichtig, obwohl bei Programmierern unbeliebt Stellt weitgehend korrekte Funktionsweise eines
Mehr5. Dokumentieren und Testen Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik
5. Dokumentieren und Testen Advanced Programming Techniques Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:
MehrTypen in Java mit Interfaces und Unit Contracts - ein SOLIDer Ansatz
Typen in Java mit Interfaces und Unit Contracts - ein SOLIDer Ansatz Clean Code Days 2017 Hagen Buchwald, Lars Alvincz andrena objects VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins
MehrVerifikation von Programmen in Java 5
Verifikation von Programmen in Java 5 ObjektForum Karlsruhe Mattias Ulbrich Betreuung: Prof. Dr. P. H. Schmitt Institut für Theoretische Informatik Universität Karlsruhe (TH) 8. Oktober 2007 Mattias Ulbrich
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrInfo: 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
MehrUE 2: Lexikalische Analyse (Scanner)
UE 2: Lexikalische Analyse (Scanner) Testen siehe Testanleitung auf Homepage! diese Woche in der UE: Softwaretesten mit JUnit Eine Einführung" UB-UE2-Angabe.zip: (neu seit 21.10.2004) Compilerklassen (Token.java,
MehrObjekte nutzen und testen. Dienstag, 8. Mai: keine Vorlesung! Konzepte (Wiederholung vom Freitag) Vgl. Kapitel 5-6 im BlueJ-Buch.
Vgl. Kapitel 5-6 im BlueJ-Buch. Objekte nutzen und testen Andreas Zeller 1 Dienstag, 8. Mai: keine Vorlesung! 2 Konzepte (Wiederholung vom Freitag) Sammlungen flexibler Größe: ArrayList fester Größe: Array
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt!! 26.03.2014 FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert von Methoden! String Fehlercode als String! int Fehlercode
MehrGrundzüge der Programmierung. Wiederverwendung POLYMORPHIE
Grundzüge der Programmierung Wiederverwendung POLYMORPHIE Inhalt dieser Einheit Polymorphie: Upcasting Polymorphie Polymophie Theorie 2 Upcasting Def.. 1 Bsp. Shape Upcasting erlaubt die Verwendung eines
MehrProperty Based Testing
Property Based Testing Nicolai Mainiero sidion Testen ist schwer Testen ist schwer Warum? Alle Pfade durch den Code aufzuzählen ist aufwendig. Selbst vermeintlich einfache Systeme können komplex sein.
MehrKomponenten-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,
MehrTag 8 Repetitorium Informatik (Java)
Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrTag 7 Repetitorium Informatik (Java)
Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2018/19. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 018/19 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 11 Besprechung: 1. 5.01.019 (KW 4) Vorbereitende
MehrSwp08-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,
MehrJUnit. Unit testing unter Java
JUnit Unit testing unter Java Was ist Junit? einfaches Framework zum Schreiben von wiederholbaren Tests Besonders geeignet für unit testing Erlaubt Hierarchie von Testsuites Schreiben eines Test Case 1.
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 8 Lösungsvorschlag Objektorientierte Programmierung 19. 06. 2006 Lösung 16 (Composite-Muster
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 11 Besprechung: 15. 19.01.018 (KW 3) Vorbereitende
MehrTestgesteuert Entwickeln mit JUnit 4
Testgesteuert Entwickeln mit JUnit 4 Tests nebenbei automatisieren Christoph Knabe Beuth-Hochschule für Technik Berlin Testgesteuert Entwickeln mit JUnit4, Christoph Knabe 2002, BHT Berlin, FB VI, 2016-10-20,
MehrVariablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrVererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
MehrInformatik II Übung 1
Informatik II Übung 1 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 28.2.2018 Carina Fuss 28.2.2017 1 Administratives ab nächstem Mal: Beginn um 13:00! Fragen aus der Vorlesung, Praktisches, Nachbesprechung
MehrFWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java
FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java Hochschule München FK 07 SS 2009 Theis Michael - Senior Developer HVB Information Services GmbH März 2009 Grundlagen des
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
MehrErsetzbarkeit und Verhalten
Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrTDD with Contracts. XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald. c4j.vksi.de
TDD with Contracts XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software Ingenieure VKSI Verein Karlsruher Software
MehrKlassenvariablen und Klassenmethoden
Klassenvariablen und Klassenmethoden Stephan Kleuker 394 Erinnerung: zentrale Idee Objektorientierung Klasse public class Student { private int mat; private String name; new new new unabhängige Objekte
MehrJUnit 4 Ein neuer Meilenstein?
JUnit 4 Ein neuer Meilenstein? Jochen Hiller Java Forum Stuttgart, 06.07.2006 Copyright 2006 Jochen Hiller Java Forum Stuttgart 2006 JUnit 4 Ein neuer Meilenstein? 1 JUnit Wir huldigen... Martin Fowler:
Mehr