Testen mit JUnit. Motivation



Ähnliche Dokumente
Java: Vererbung. Teil 3: super()

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Unit Testing mit JUnit. Dr. Andreas Schroeder

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

Arbeiten mit UMLed und Delphi

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Whitebox-Tests: Allgemeines

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Das Test-Framework JUnit ETIS SS04

1 Vom Problem zum Programm

Fortgeschrittenes Programmieren mit Java. Test Driven Development

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

JUnit. Software-Tests

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Computeranwendung und Programmierung (CuP)

Folge 18 - Vererbung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

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

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

Zählen von Objekten einer bestimmten Klasse

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

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

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

Test-Driven Design: Ein einfaches Beispiel

Einführung in die Programmierung

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

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

Statuten in leichter Sprache

Gezielt über Folien hinweg springen

SEP 114. Design by Contract

Einführung in die Programmierung

Professionelle Seminare im Bereich MS-Office

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Rundung und Casting von Zahlen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Die richtigen Partner finden, Ressourcen finden und zusammenführen

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

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

Unit Tests und Fehlersuche

Einführung in die Java- Programmierung

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

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Die SPD und die Grünen machen im Niedersächsischen Landtag. Alle Menschen sollen in der Politik mitmachen können.

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

AutoCAD Dienstprogramm zur Lizenzübertragung

Installation OMNIKEY 3121 USB

Kulturelle Evolution 12

Aufklappelemente anlegen

Print2CAD 2017, 8th Generation. Netzwerkversionen

Der Gabelstapler: Wie? Was? Wer? Wo?

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Wie Sie mit Mastern arbeiten

Info-Veranstaltung zur Erstellung von Zertifikaten

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Erfahrungen mit Hartz IV- Empfängern

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Online Intelligence Solutions TESTABLAUF. 7 Schritte für ein erfolgreiches Testing.

Schnittstelle zum Kalkulationssystem VI2000 der Firma Softwareparadies

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Step by Step Softwareverteilung unter Novell. von Christian Bartl

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

ECDL Europäischer Computer Führerschein. Jan Götzelmann. 1. Ausgabe, Juni 2014 ISBN

Java Kurs für Anfänger Einheit 5 Methoden

Viele Bilder auf der FA-Homepage

Informationen zur Verwendung von Visual Studio und cmake

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

Programmieren in Java

Graphic Coding. Klausur. 9. Februar Kurs A

Holiday plans: ein Gespräch über Urlaubspläne

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung?

Medea3 Print-Client (m3_print)

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Der lokale und verteilte Fall

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

Wie halte ich Ordnung auf meiner Festplatte?

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Updatehinweise für die Version forma 5.5.5

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Tagesprogramm

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

QTTabBar Einrichtung, ein Tutorial

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Einführung in die C++ Programmierung für Ingenieure

9 Auto. Rund um das Auto. Welche Wörter zum Thema Auto kennst du? Welches Wort passt? Lies die Definitionen und ordne zu.

Strom in unserem Alltag

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

Senioren helfen Junioren

Transkript:

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 Debugger-Ausdruck zu schreiben, schreibe das stattdessen als Test." [Martin Fowler] Beispiele Während der Entwicklung: Schreibe vor dem Hinzufügen neuer Funktionalität zuerst Code, der diese neue Funktionalität benutzt Bei der Fehlersuche, beim Debugging: Wenn ein Fehler entdeckt wurde schreibe Testcode, der den Fehler nachvollzieht, also zuerst fehlschlägt, und erst dann funktioniert, wenn der Fehler beseitigt wurde Folie 1

Partner-Diskussion: Test First Diskutieren Sie mit einem Partner Welche Vorteile bietet es, wenn man Tests unmittelbar beim oder sogar vor dem Programmieren schreibt? Welche Nachteile stehen dem gegenüber? Dauer: 3 Minuten Folie 2

Design for Test Design for Test bedeutet Der Fokus beim Entwickeln liegt auf der Schnittstelle, nicht (nur) der Funktionalität Der Code muss bequem aufrufbar sein Der Code muss testbar sein "Möglicherweise ist der wichtigste Vorteil von all diesen Tests die Auswirkung auf Architektur und Design. Um ein Modul oder eine Anwendung testbar zu machen, muss sie geeignet entkoppelt sein. Je testbarer es ist, desto modularer (desto besser gekapselt) ist die Software. Die Berücksichtigung umfassender Akzeptanz- und Unit-Tests hat einen deutlich positiven Effekt auf die Struktur der Software." [Robert Martin, Agile Software Development. Prentice Hall 2003] Folie 4

Demo JUnit in Projekt einbinden OO -> test.junit -> Calculations Folie 5

in Eclipse: Bibliothek einbinden 1/3 Project -> Properties Folie 6

in Eclipse: Bibliothek einbinden 2/3 Folie 7

in Eclipse: Bibliothek einbinden 3/3 C:\Program Files\eclipse\plugins Folie 8

zu einer Klasse (eigentlich: mit Testfällen ) Folie 9

zu einer Klasse : Name der wählen Folie 10

zu einer Klasse : Methoden auswählen, die getestet werden sollen Folie 11

zu einer Klasse : generierter Programmcode Folie 12

zu einer Klasse Alle Methoden der Klasse, die als public void test() { } deklariert sind, werden nacheinander ausgeführt Folie 13

zu einer Klasse : negatives / positives Ergebnis Kein Fehler gefunden 7 Methoden ausgeführt Ein Fehler gefunden 1 fehlgeschlagene Kein Testmethode Compiler- Fehler Fehler Aufruf-Position; Doppelklick möglich Folie 14

Folie 15

Beispiel: eine zu testende Klasse mit zwei Methoden Nur zu Demo-Zwecken: einmal dynamisch, einmal statisch - Folie 16 Demo Programm zeigen Testfälle und Idee: kleiner Rechenfehler, wie sie bei float/double manchmal vorkommen

Erstellen der Folie 17

Ausführen der Folie 18

"Gründliches" Testen der Wurzel-Methode 1/2 Keine Fehlertoleranz Besser: Folie 19

"Gründliches" Testen der Wurzel-Methode 2/2 Folie 20

Verbesserter Code der Wurzel-Methode Folie 21

Folie 22

Diese Klasse ist zu testen Bibliotheks- Klasse (teil)generierte Hilfsklasse Folie 23

Folie 24 Prüfmethoden (geerbt von TestCase) Konzept: An bestimmten Stellen in einem (Test-)Programm soll sichergestellt (engl.: assert) werden, dass bestimmte Bedingungen erfüllt sind Die Klasse TestCase bietet viele asserttrue( Boole'sche Bedingung ) assertfalse( Boole'sche Bedingung ) assertequals( Soll-Wert, Ist-Wert ); mögliche Typen: boolean, byte, char, int, long, short; Object, String (es wird mit equals verglichen) assertequals( Soll-Wert, Ist-Wert, delta ); mögliche Typen: double, float assertnull( Objekt ) assertnotnull( Objekt ) assertsame( Objekt1, Objekt2 ) assertnotsame( Objekt1, Objekt2 ) fail() Ist eine der Prüfbedingungen nicht erfüllt, wird ein AssertionFailedError ausgelöst Alle Methoden existieren auch mit einem zusätzlichen ersten Parameter (Typ String) für eine (hilfreiche!) Meldung

Folie 25

Testfälle entwerfen Jede test-methode sollte nur einen prüfen, aber den komplett: Einen geeigneten Zustand vor der zu testenden Methode h Die zu testende Methode aufrufen Das Ergebnis (= Rückgabewert) der Methode überprüfen Den Zustand nach dem Methodenaufruf überprüfen Jeder sollte unabhängig vom Vorgänger funktionieren können Die test-methoden sollten geeignet benannt sein Folie 26

Vor- und Nachbereitung fürs Testen Folgende Methode wird vor jeder test-methode ausgeführt: protected void setup() throws Exception Folgende Methode wird nach jeder test-methode ausgeführt: protected void teardown() throws Exception Man sagt, es wird eine Test-Fixture auf- bzw. abgebaut Folie 27

Trennen von Produktiv- und Test-Code Gleiche Package-Struktur in beiden Ordnern Export JAR-Datei: nur die Packages (= diejenigen Package-Anteile) im src-ordner exportieren Folie 28