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

Ähnliche Dokumente
3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

2. Programmieren gegen Schnittstellen Advanced Programming Techniques

1. Programmieren gegen Schnittstellen Advanced Programming Techniques

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

11. Funktionale Programmierung Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

7. Komponenten Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

11. Komponenten Grundlagen der Programmierung 1 (Java)

JUnit. Software-Tests

Testgetriebene Entwicklung mit JUnit4

Das Test-Framework JUnit ETIS SS04

Einstieg in die Informatik mit Java

Fortgeschrittenes Programmieren mit Java. Test Driven Development

9. Fehlerbehandlung Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

2. Java Schnellkurs Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Programmieren in Java

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

Code verifizieren mittels

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

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

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

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

8. Generics Grundlagen der Programmierung 1 (Java)

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012

Test-Driven Design: Ein einfaches Beispiel

Konzepte der Programmiersprachen

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Informatik II Übung 6 Gruppe 7

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

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

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

Test-Driven Design: Ein einfaches Beispiel

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

Unit Tests in der Testgetriebenen Entwicklung

Programmiertechnik II

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

3. Analysephase Anforderungen, Anwendungsfälle Softwaretechnik (CNAM)

Unit Tests und Fehlersuche

Client-Server-Beziehungen

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Property Based Testing

Programmiermethodik. Übung 3

am Beispiel von JUnit

Einstieg in die Informatik mit Java

Thema: Testen von objektorientierter Software

Einstieg in die Informatik mit Java

Unit Tests mit Junit 4. Dario Borchers

Ersetzbarkeit und Verhalten

Testgesteuert Entwickeln mit JUnit 4

Einstieg in die Informatik mit Java

Unit Testing mit JUnit. Dr. Andreas Schroeder

Enterprise JavaBeans Überblick

Repetitorium Informatik (Java)

Testen von Android- Anwendungen. 6. Juni 2013

Markus Wichmann. Testen von Java Code mit. JUnit

2 Eine einfache Programmiersprache

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 10 Delegationsvariablen

10. Pakete Einführung in die Programmierung (fbw) Sommersemester 2007 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Testphase. Das Testen

Sommersemester Implementierung I: Struktur

JUnit. Unit testing unter Java

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

6. Design-Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

9. Fehler und Ausnahmen Grundlagen der Programmierung 1 (Java)

Funktionales Testen. Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg

Warum Programme Verträge schließen sollten

Unit Testing, SUnit & You

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

FACHHOCHSCHULE MANNHEIM

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

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A

Methoden und Wrapperklassen

8. Design-Phase Querschnittsthemen und Muster Softwaretechnik (CNAM)

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

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

Programmieren in Java

Software-Engineering Software-Management

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Whitebox-Test. Unit-Test

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen

Übungsklausur Programmieren / Algorithmen und Datenstrukturen 2

Programmierkurs C++ Abstrakte Klassen und Methoden

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

Programmierprojekt: So0ware Tests. Anne6e Bieniusa Sommersemester 2017

Abstrakte Klassen, Interface. DVG Abstrakte Klassen, Interface

Testen mit JUnit. Motivation

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Kapitel 5: Interfaces

Algorithmen und Datenstrukturen

Java Einführung Abstrakte Klassen und Interfaces

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

6. Interfaces Grundlagen der Programmierung 1 (Java)

Transkript:

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: Advanced Programming Techniques, WS 09/10. 28.10.2010

Einordnung in den gesamten Kurs 1. Einführung 2. Java Schnellkurs 3. Programmieren gegen Schnittstellen 4. Software-Kategorien 5. Dokumentieren und Testen 6. Komponenten 7. Regeln zum Design von Komponenten 8. Fehlerbehandlung 9. Konfigurationsmanagement 10.Debugging, Tracing, Logging 11. Refactoring 2 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Agenda Dokumentieren Testen

Was wird mittels JavaDoc dokumentiert? Die Außensicht, d.h. immer aus Sicht des Nutzers! Nutzer Anbieter JavaDoc Deklaration und Konfiguration I i; i = new C(); Definition (Außensicht) public interface I { public void m (); Nutzung Implementierung (Innensicht) i.m(); public class C implements I { public void m() { In-line Kommentare 4 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Was wird dokumentiert? Die Spezifikation! Schnittstelle Name public interface OrderManager { Schnittstellenname Operationen Signatur Semantik Rückgabetyp Operationsname Eingabeparameter und -typ Order placeorder (Customer customer, Article article) throws NotAvailableException; Prosa, Vorbedingungen, Nachbedingungen, etc. Ausnahme Nicht-funktionale Eigenschaften Prosa Protokoll Prosa, Sequenzdiagramme etc. 5 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Beispiel Accounting 6 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Parameterart: in, out, inout Method Details Accounting Post condition Java Notation für Bedingungen Schlüsselwort exists Schlüsselwort result Semiformale Notation angelehnt an QSL [Siedersleben: Moderne Softwarearchitektur] 7 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Beispiel Borrowing 8 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Method Details Borrowing Pre condition Post condition 9 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Agenda Dokumentieren Testen Testen

Unit Tests: Was wird wann wie getestet? Was? Unit = kleinste Testeinheit in einem System, z.b. einzelne Methode Unit Test = isolierter, (meist) automatisierter Test einer Unit mittels eines Testrahmens Wann? Früh testen! Nach XP werden die Testfälle vor dem eigentlichen System programmiert (und liefern somit eine ausführbare Spezifikation) Main Methoden zum schnellen Ausprobieren sind von gestern! Wie? Umfassend und destruktiv testen: Alle Methoden (zumindest in der Außensicht) Verschiedene typische Werte Extremwerte (null, -9999, ): wir wollen ja wirklich Fehler finden! Ausnahmen (verletzte Preconditions etc.) 11 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Testen von Java-Klassen mit JUnit Aufräumen setup() teardown() test1() test2() test3()... TestCase Vorbereiten des Unit Tests (jedes einzelnen!) Einzelne Unit Tests All Unit Tests müssen voneinander unabhängig sein! Die Reihenfolge der Ausführung ist nicht definiert test2() kann nicht davon ausgehen, dass Daten aus test1() zur Verfügung stehen 12 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Aufbau eines Unit Tests public Scanner(Hashtable mapping) { super(); this.mapping = mapping; public Vector scan(string text) { Vector result = new Vector(); StringTokenizer st = new StringTokenizer(text); while (st.hasmoretokens()) { Integer i = (Integer) mapping.get(st.nexttoken()); if(i == null) { i = new Integer(NO_TOKEN); result.add(i); return result; public void testscan() { Hashtable mapper = new Hashtable(); mapper.put("null", new Integer(0)); mapper.put("eins", new Integer(1));... mapper.put("neun", new Integer(9)); scanner = new Scanner(mapper); Vector tokenids = scanner.scan("eins Fünf Drei Neun"); Testvorbereitung Testdurchführung assertequals(1, ((Integer) tokenids.elementat(0)).intvalue());... assertequals(9, ((Integer) tokenids.elementat(3)).intvalue()); Testauswertung 13 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010

Testsuiten Testsuite Testsuite Testsuite Testsuite Testklasse Testklasse Testklasse Testsuite Testsuite Testklasse Testklasse Testklasse Testklasse 14 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced Programming Techniques, WS 09/10. 28.10.2010