Testgetriebene Entwicklung mit JUnit
|
|
- Leander Schwarz
- vor 6 Jahren
- Abrufe
Transkript
1 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Testgetriebene Entwicklung mit JUnit
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 Java-Rahmenwerk zum Schreiben und Ausführen automatischer Unit Tests Ist auch für zahlreiche andere Programmier-sprachen erhältlich Grafische und textuelle Ausgabe In Eclipse integriert 8
9 JUnit 3: Aufbau einer Testfallmethode Signatur: public void test*() throws Exception Testfallmethoden verwenden assert*()und fail() Fehlschlag von assert*() oder Aufruf von fail() beendet Testfall 9
10 Zusicherungen Gekapselt in junit.framework.assert TestCase erbt von Assert Wichtigste Zusicherungen: assertequals(object expected, Object actual) assertequals(double expected, double actual, double delta) assertsame(object expected, Object actual) asserttrue(boolean expression) assertfalse(boolean expression) assertnull(object actual) assertnotnull(object actual) 10
11 JUnit 3: Aufbau einer Testklasse Erbt von junit.framework.testcase Kapseln Testfälle in Testfallmethoden Instanzvariablen für gemeinsame Testobjekte Zum Aufbau von Testressourcen: protected void setup() throws Exception Zur Freigabe: protected void teardown() throws Exception 11
12 Beispiel: Testklasse public class EuroTest extends TestCase { private Euro two; protected void setup() throws Exception { two = new Euro(2.0); public void testadding() throws Exception { Euro sum = two.add(two); assertequals(new Euro(4.0), sum); 12
13 Testmuster für erwartete Ausnahmen public void testnofilehere() throws Exception { try { new File("z:/invalid_name"); fail( FileNotFoundException expected! ); catch (FileNotFoundException ex) { Möglichst robustes Verhalten im Fehlerfall testen. Unerwartete Ausnahmen werden von JUnit als Error registriert. 13
14 Statik von Testfällen junit.framework TestCase # setup() # teardown() Assert + assert*() + fail() EuroTest + testadding() + testamount() + testrounding() Euro + add(euro e) + getamount() + round() 14
15 Dynamik von Testfällen Testfallerzeugung: Pro Testfallmethode wird eine eigene Instanz von TestCase erzeugt. Testlauf: Testfälle laufen ohne Seiteneffekte, ihre Reihenfolge ist prinzipiell undefiniert. :EuroTest :EuroTest setup() setup() testadding() testamount() teardown() teardown() 15
16 Organisation der Testfälle <<interface>> Test * <<implements>> TestCase TestSuite Mehrere Testfälle pro Testklasse (TestCase) Testsuite fasst Testklassen und eventuell weitere Testsuiten zusammen 16
17 Beispiel: Testsuite public class AllTests { [ ] public static Test suite() { TestSuite suite = new TestSuite(); suite.addtestsuite(eurotest.class); suite.addtest(file.alltests.suite()); return suite; 17
18 Testrunner aufrufen public class AllTests { public static void main(string[] args) { TestRunner.run(AllTests.class); [ ] 3 TestRunner: junit.swingui.testrunner junit.awtui.testrunner junit.textui.testrunner Eclipse Plug-in braucht keinen davon. 18
19 Ü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) Für deposit, withdraw sind nur positive Beträge erlaubt, ansonsten wird eine IllegalArgumentException geworfen. 19
20 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. 20
21 Wir entwerfen einen Test, der zunächst fehlschlagen sollte public class AccountTest extends TestCase { public void testcreateaccount() { Account a = new Account("Customer"); assertequals("customer", a.getcustomer()); assertequals(0, a.getbalance()); 21
22 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; 22
23 Wir prüfen, ob der Test fehlschlägt 23
24 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; 24
25 Wir prüfen, ob der Test durchläuft 25
26 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()); 26
27 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; 27
28 Wir prüfen, ob der Test weiterhin läuft 28
29 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. 29
30 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. 30
31 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; 31
32 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 32
33 Ü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! 33
34 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? 34
35 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. 35
36 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. 36
37 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! 37
38 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. 38
39 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. 39
40 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. 40
41 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! 41
42 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 42
43 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 43
44 Typischer Ablauf eines Tests mit Mock-Objekt :Test setup() testx() create create m:mock :CUT weitere Initialisierung des Mock-Objekts init() x(m) verify() y() weitere Verwendung des Mock-Objekts 44
45 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 45
46 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 46
47 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,
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
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:
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
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ß
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
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,
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
MehrThema: Testen von objektorientierter Software
Seminar Simulation und Bildanalyse mit Java Thema: Testen von objektorientierter Software Uta Dienst 1. Teil: Einführung in den Software-Test 2. Teil: JUnit-Einführung Uta Dienst 17.11.2003 2 1. Teil:
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
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
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
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
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
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
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.
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
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.
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
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
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
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:
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:
Mehr3 Unit Tests mit JUnit
21 Eine Art von Tests, die wir zeitnah zur Programmierung erstellen und nach jeder Programmmodifikation ausführen wollen, sind Unit Tests. Im Unit Test werden kleinere Programmteile in Isolation von anderen
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
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
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
MehrUnit Testing, SUnit & You
HUMBOLDT-UNIVERSITÄT ZU BERLIN MENSCH-TECHNIK-INTERAKTION ARBEITSGRUPPE SOFTWARETECHNIK (INSTITUT FÜR INFORMATIK) ARBEITSGRUPPE INGENEURPSYCHOLOGIE (INSTITUT FÜR PSYCHOLOGIE) Unit Testing, SUnit & You
Mehram 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
MehrDer EMF-generierte Code. 7. November 2012
Der EMF-generierte Code 7. November 2012 Überblick Wie sieht der aus einem EMF-Modell generierte Code aus? Wie ist die Beziehung zwischen Modell und Code? Wie kann generierter Code durch handgeschriebenen
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,
MehrMarkus Wichmann. Testen von Java Code mit. JUnit
Markus Wichmann Testen von Java Code mit JUnit Demotivation... Am Anfang war der Zeitdruck... Hilfe, ich habe doch keine Zeit zum Testen! Ich schreibe einfach keine Tests, dadurch werde ich schneller fertig
MehrProgrammierpraktikum Java Entdecken. Merkblatt 3
Technische Universität München Fakultät für Informatik Prof. Dr. Helmut Seidl Michael Petter Melanie Dietz Raphael Geissler SS 2005 Programmierpraktikum Java Entdecken 1 extreme Programming Merkblatt 3
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
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
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,
Mehr4 Testgetriebene Entwicklung mit PHPUnit
57 4 Testgetriebene Entwicklung mit PHPUnit»The fewer tests you write, the less productive you are and the less stable your code becomes.«erich Gamma 4. 1 Einleitung Das Testen von Software ist wichtig.
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
MehrWeb-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum
1 Web-Testen mit JUnit und HttpUnit Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum 2 Inhalt Entwicklertests in der Praxis Unit-Testing JUnit HttpUnit Praktisches Beispiel Bewertung
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
MehrUnit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG
Unit-Test Theorie und Praxis Stephan Seefeld, INGTES AG Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 2 Quellen Für diesen Vortrag verwendete Quellen: dotnet User Group Berlin Brandenburg http://www.dotnet-berlinbrandenburg.de/
MehrTestgetriebene Entwicklung mit ABAP
Testgetriebene Entwicklung mit ABAP XP Days 2007 Karlsruhe Achim Bangert Achim.Bangert@andrena.de www.andrena.de Agenda Testgetriebene Entwicklung ABAP Unit Testausführung über Code Inspector Dummy- und
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrÜberblick. Einleitung. Unit-Tests. JUnit. HelloWorld Beispiel. Praktische Beispiele. Referenzen
Testen mit JUnit 1 Überblick Einleitung Unit-Tests JUnit HelloWorld Beispiel Praktische Beispiele Referenzen 2 Einleitung Irren ist menschlich Überprüfung auf Knopfdruck Entwicklung richtiger Tests ->
MehrRe-Engineering: Test-First-Ansatz. Dr. Thorsten Arendt Marburg, 17. Dezember 2015
Re-Engineering: Test-First-Ansatz Dr. Thorsten Arendt Marburg, 17. Dezember 2015 Re-Engineering Patterns [Demeyer et al.] 2 Software-Evolution WS 2015/2016 Überblick Probleme Wie ändert man Teile eines
MehrDV- Anwendungen in der Wirtschaft Projekt: ICEE-Filecollector QS: WhiteBox Tests
DV- Anwendungen in der Wirtschaft Projekt: ICEE-Filecollector QS: WhiteBox Tests Auftraggeber: Dr. Nikolai Bauer Projektteam: DVA Gruppe 3 Verfasser: Nazar Kulyk - 258360030100 Einleitung Meine Rolle im
MehrTesten von grafischen Benutzeroberflächen
Seminarvortrag 10: Testen von grafischen Benutzeroberflächen 2004 / 06 / 28 Clemens Sommer, Gerald Peter Übersicht Motivation GUI Allgemein Fehlerquellen und deren Auswirkungen GUI Testwerkzeuge JUnit
MehrJava Schulung. Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit. Prof. Dr. Nikolaus Wulff
Java Schulung Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit Prof. Dr. Nikolaus Wulff JUnit JUnit ist das Opensource Testframework. Es existieren Portierungen für fast alle objektorientierten
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
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
Mehr-Testen verteilter Anwendungen
-Testen verteilter Anwendungen Seminar Simulation und Bildanalyse mit Java im SS04 Konstantin Tjo, Urs Pricking Testen verteilter Anwendungen 1 Übersicht Einführung in verteilte Anwendungen RMI (Remote
MehrSoftware Engineering. 4. Unit Testing und Refactoring. Franz-Josef Elmer, Universität Basel, HS 2007
Software Engineering 4. Unit Testing und Refactoring Franz-Josef Elmer, Universität Basel, HS 2007 Software Engineering: 4. Unit Testing und Refactoring 2 Unit Testing Unit Test: Automatischer Test welcher
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
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
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
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
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
MehrPrinzipien 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........................
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
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
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
Mehr1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally
Themen der Übung CoMa-Übung VI 1 Organisatorisches Compilezeit- und Laufzeitfehler 3 Try-Catch-Finally TU Berlin 8.11.01 Bewertung der OA 5 fehlerhaft, Madeleine arbeitet dran CoMa-Übung VI (TU Berlin)
MehrSynchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
MehrTesten von Android- Anwendungen. 6. Juni 2013
Testen von Android- Anwendungen 6. Juni 2013 Taentzer Software-Praktikum 2013 91 Überblick Entwicklung von Testfällen informelle Beschreibung der Testfälle auf Basis der Anwendungsfallbeschreibungen Implementierung
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrSoftware 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
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
Mehr1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2
1. Einführung und Unit Testing Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Organisation Unit Testing
MehrBeuth Hochschule Java-Testprogramme mit JUnit schreiben WS11/12
Beuth Hochschule Java-Testprogramme mit JUnit schreiben WS11/12 Java-Testprogramme mit JUnit schreiben JUnit ist ein Framework, welches das Schreiben von Testprogrammen in Java unterstützt. Für andere
MehrHöhere Programmierkonzepte Testklausur
Höhere Programmierkonzepte Testklausur Prof. Dr. Nikolaus Wulff Zum 15. Januar 2016 1 Ein Google-Map Algorithmus (5 Punkte) 1 2 typedef void X; 3 typedef void Y; 4 5 void map(unsigned int n / tuple length
MehrTest Driven Development
Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)
MehrSemesterprojekt Semantic Text Browsing. Ulf Leser, Philippe Thomas (, Lars Döhling)
Semesterprojekt Semantic Text Browsing Ulf Leser, Philippe Thomas (, Lars Döhling) Testing Was ist ein Test? Warum testen wir? Arten von Tests JUnit: Testing in Java Best Practises Test driven development
MehrCode verifizieren mittels
Code verifizieren mittels Unit- und Regressionstests Institut für Numerische Simulation, Universität Bonn Seminarreihe Technische Numerik Wozu sollen gut sein? Was für Testarten gibt es? Wie funktionieren
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
MehrKapitel 10b Test-Automatisierung
Vorlesung Softwaretechnologie Wintersemester 2010 R O O T S Kapitel 10b Test-Automatisierung Stand: 24.1.2011 Warum automatisierte Tests? Automatisierte Modultests mit JUnit Test First Development und
MehrRefactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag
Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität
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
MehrSoftwaretest. Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung. Algorithmen und Programmierung II SS 2008
Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung Softwaretest 03.07.2008 Softwaretest Ingo Dageförde 1 Agenda VL Softwaretest am 03.07.2008 Qualitätssicherung in der Softwareentwicklung
MehrKomponententest. 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
MehrJava : Fehlerbehandlung.
Java : Fehlerbehandlung Prinzip Callerklassen / Workerklassen Arbeitet... Callerklasse Arbeitet... Workerklasse Arbeitet... Arbeitet weiter... Fer7g! Prinzip Callerklassen / Workerklassen Main- Methode
MehrSystemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007
Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
MehrBeispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
MehrSEP 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
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?
MehrFramework zur Unterstützung von Unit-Tests
JUnit Framework zur Unterstützung von Unit-Tests Automatisierte Ausführung von Tests Ideen dahinter Testgetriebene Entwicklung: Erst testen, dann programmieren Alle Testfälle häufig ausführen (nach jeder
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
MehrNTB Druckdatum: 31.03.13 InI I
TESTING Methoden der Software-Prüfung Definition Testen ist ein wesentlicher Teil im Qualitätsmanagement von Projekten der Softwareentwicklung Ziel Messen der Qualität des Softwaresystems Um den wirtschaftlichen
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrTesten und Debugging
Testen und Debugging Testklassen, Unit Tests Blackbox Test, Whitebox Test Regressionstesten Zusicherungen mit assert Debugger Informatik II: Objektorientierte SW-Entwicklung, Algorithmik, Nebenläufigkeit
MehrSOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST
SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST Gliederung 2 0. 1. 2. 3. Vorstellung Testvorbereitungen Planungsphase Definitionsphase Implementierungs-, Abnahme-und Einführungsphase Testphasen
MehrJava: 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
MehrTesten objektorientieter Software mit JUnit
Seminar Simulation und Bildanalyse mit Java Testen objektorientieter Software mit JUnit Helge Scheffler 1 Motivation 2 Stubs 3 Mock-Objekte 4 Vorteile und Probleme von Stubs und Mock-Objekten 5 Vererbung
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrObjektorientierte 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
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrAssoziation und Aggregation
Assoziation und Aggregation Prof. Dr. Christian Böhm in Zusammenarbeit mit Michael Eckert und Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfows WS 07/08 2 Ziele Verstehen der Begriffe Assoziation und
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
Mehr