Unit Testing mit JUnit. Dr. Andreas Schroeder



Ähnliche Dokumente
Testen mit JUnit. Motivation

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

SEP 114. Design by Contract

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

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Programmiertechnik II

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

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

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

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

Was meinen die Leute eigentlich mit: Grexit?

Die Invaliden-Versicherung ändert sich

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

Version 0.3. Installation von MinGW und Eclipse CDT

Java Kurs für Anfänger Einheit 5 Methoden

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

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

Was ich als Bürgermeister für Lübbecke tun möchte

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

Über den Link erreichen Sie unsere Einstiegsseite:

Statuten in leichter Sprache

Nicht über uns ohne uns

Reporting Services und SharePoint 2010 Teil 1

Spiel und Spaß im Freien. Arbeitsblat. Arbeitsblatt 1. Zeichnung: Gisela Specht. Diese Vorlage darf für den Unterricht fotokopiert werden.

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


Was ist Sozial-Raum-Orientierung?

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Kurzanleitung So geht s

Leit-Bild. Elbe-Werkstätten GmbH und. PIER Service & Consulting GmbH. Mit Menschen erfolgreich

1 Vom Problem zum Programm

Verwendung des IDS Backup Systems unter Windows 2000

Partnerportal Installateure Registrierung

Einführung in die Informatik Tools

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Regeln für das Qualitäts-Siegel

! " # $ " % & Nicki Wruck worldwidewruck

Der große VideoClip- Wettbewerb von Media Markt.

Leichte-Sprache-Bilder

Mediator 9 - Lernprogramm

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Die Post hat eine Umfrage gemacht

Artikel Schnittstelle über CSV

etermin Einbindung in Outlook

Dokumentation zum Spielserver der Software Challenge

Programmierkurs Java

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

Die Industrie- und Handelskammer arbeitet dafür, dass Menschen überall mit machen können

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

Das Leitbild vom Verein WIR

Schnittstelle DIGI-Zeiterfassung

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Windows 10 > Fragen über Fragen

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

WordPress. Dokumentation

Alle gehören dazu. Vorwort

Unit Tests mit Junit 4. Dario Borchers

Anmeldung und Zugang zum Webinar des Deutschen Bibliotheksverbandes e.v. (dbv)

Anleitung OpenCms 8 Webformular Auswertung

Anmeldung und Zugang zum Webinar des Deutschen Bibliotheksverbandes e.v. (dbv)

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen

Unit Tests und Fehlersuche

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

Die Richtlinien Stornobedingungen, Buchungsgarantie, Nächtigungsabgabe, Haustiere, Endreinigung

Anleitung Typo3-Extension - Raumbuchungssystem

BSV Ludwigsburg Erstellung einer neuen Internetseite

Applet Firewall und Freigabe der Objekte

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Software - Testung ETIS SS05

Übung - Arbeiten mit Android

Technische Analyse der Zukunft

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

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

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

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

Übungen Programmieren 1 Felix Rohrer. Übungen

Daten Sichern mit dem QNAP NetBak Replicator 4.0

Einen Wiederherstellungspunktes erstellen & Rechner mit Hilfe eines Wiederherstellungspunktes zu einem früheren Zeitpunkt wieder herstellen

Mastermind. Testplan. Hochschule Luzern Technik & Architektur. Programmieren 2 FS12. Gruppe 10

Die Bundes-Zentrale für politische Bildung stellt sich vor

1. Einführung. 2. Weitere Konten anlegen

Microsoft Update Windows Update

Zeichen bei Zahlen entschlüsseln

Zimmertypen. Zimmertypen anlegen

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

Kara-Programmierung AUFGABENSTELLUNG LERNPARCOURS. Abb. 1: Programmfenster. Welt neu erstellen; öffnen; erneut öffnen; speichern; speichern unter

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Übung - Datensicherung und Wiederherstellung in Windows Vista

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Impulse Inklusion Selbst-bestimmtes Wohnen und Nachbarschaft

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss

Transkript:

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?

Warum Testen? Wie überprüft man, dass ein System das Richtige tut? System in richtigen Zustand bringen Mit Beispiel-Eingaben ausführen Überprüfen ob das erwartete Verhalten auftritt Wie oft muss man überprüfen? Direkt beim Einführen einer neuen Funktionalität Jede Änderung am System kann anderes gewünschtes Verhalten beeinflussen Nach jeder Änderung muss das System überprüft werden! kann man nicht ein Programm dafür schreiben? Man kann! Und zwar automatisierte Tests

Tester Entwickler Was sind Unit Tests? (1/2) Test-Programme sind automatisierte Tests Genauer: die einzelnen Testfälle werden Test genannt Tests können unterschiedlich fein sein Unit Tests testen die kleinste testbare Einheit einer Software (z.b. eine einzelne Methode in Java). Integrationstests testen die Interaktion zwischen Komponenten (z.b. public Interfaces). Systemtests testen die Software als Ganzes. Systemintegrationstests testen ob die Software richtig in seiner Umgebung integriert ist.

Was sind Unit Tests? (2/2) Jede Code-Änderung kann bestehende Funktionalität kaputt machen Angenommen, es gäbe für jedes gewünschte Verhalten einen Test, dann könnte man per Knopfdruck überprüfen ob eine Änderung eine bestehende Funktionalität kaputt gemacht hat aus dem Test herauslesen, welches Verhalten das System nicht mehr zeigt (evtl. mit dem Debugger) den Code reparieren, so dass der Test wieder erfolgreich durchläuft

Der Teufelskreis des Nicht-Testens Tests weglassen System wird instabil, fehleranfällig Termindruck nimmt zu Produktivität sinkt

JUnit JUnit ist ein Unit Testing Framework für Java JUnit ist in Eclipse integriert Runner und View geben Überblick über Testergebnisse Ein Test kann zwei Ergebnisse produzieren: Bestanden (Grün) oder Fehlgeschlagen (Rot) Fünf Schritte zum Unit-Test 1. Fixture erzeugen 2. Eingabe erzeugen 3. Test Ausführen 4. Verhalten und Zustand überprüfen 5. Aufräumen

Wiederholung des gezeigten Test-Methode mit @Test annotieren Gemeinsame Fixture in @Before-Methode auslagern Sprechende Benennung der Test-Methoden: Methode_HatEinenEffekt_UnterBestimmtenBedingungen Bestandteile eines Tests klar trennen Vorbereiten Durchführen Prüfen Aufräumen (in @After-Methode) Nur ein Verhalten in einer Methode testen Unterschiedliche Ausführungspfade in unterschiedliche Tests!

JUnit-Annotationen Annotation @Test @Before @After @BeforeClass @AfterClass @Ignore Bedeutung Test-Methode Methode vor jedem Test ausführen Methode nach jedem Test ausführen Statische Methode vor allen Tests ein mal ausführen statische Methode nach allen Tests ein mal ausführen Ignoriere Test-Methode

Assertions Parameter-Schema von Assertions Nachricht bei Misserfolg, erwarteter Wert, erhaltener Wert Assertion fail asserttrue assertequals assertnotsame assertnull assertnotnull assertarrayequals Funktionsweise Schlägt fehl Überprüft ob die Bedingung wahr ist Überprüft ob die Objekte gleich sind (mit equals) Überprüft dass die Referenzen auf unterschiedliche Objekte zeigen (unabhängig von equals) Überprüft dass Parameter null ist Überprüft dass Parameter nicht null ist Überprüft ob zwei Arrays gleich sind

Unit Test Vorteile Unit Tests ändern den Blickwinkel Selbst geschriebener Code wird selbst verwendet, Probleme an der externen Schnittstelle werden deutlich Unit Tests schaffen Vertrauen Sie zeigen dass die Code-Basis die gewünschte Funktionalität tatsächlich umsetzt Unit Tests sind ausführbare Dokumentation und Spezifikation Sie zeigen was vom System erwartet wird, und dokumentieren die Schnittstellen

AssertThat-Variante assertthat Paramter Beschreibung (optional) Tatsächlicher Wert Bedingungen für den Wert Beispiel 1: thebiscuit gleich mybiscuit assertequals(mybiscuit, thebiscuit) assertthat(thebiscuit, is(equalto(mybiscuit))) Beispiel 2: list.size() ist 5 assertequals(5, list.size()) assertthat(list.size(), is(5))

assertthat Matcher Matcher anything is equalto sameinstance allof, anyof, not instanceof notnullvalue, nullvalue Funktionsweise Matcht alles Verbessert nur Lesbarkeit, z.b. is(equalto(item)) Überprüft Gleichheit mit equals-methode Überprüft Objekt-Identität Logische Junktoren für Matchers (und, oder, nicht) Überprüft Typ des Objekts Überprüft dass Wert (nicht) Null ist. hasitem, hasitems Überprüft ob ein Array die genannten Elemente enthält https://code.google.com/p/hamcrest/wiki/tutorial

Test-Inspiration Ein paar Ideen für tests: Haupt-Funktionalität (d.h. teste dass der haupt-pfad geht) Zweig-basiertes Testen (d.h. prüfe dass es einen Test für jeden Zweig jeder Bedingung gibt) Korrekte Fehlerbehandlung (d.h. prüfe dass Methoden null-parameter, geschlossene Ressourcen, und fehlgeschlagene Verbindungen behandeln) Funktioniert wie beschrieben (d.h. falls die Dokumentation Regeln für einen Methodenaufruf beschreibt, teste diese Regeln)

Wann aufhören? Tests dienen dazu, Vertrauen in die Code-Basis zu schaffen Wenn das Team Vertrauen in den eigenen Code hat, dann wurde genug getestet Jeder im Team muss auf sein eigenes Vertrauensgefühl hören bezüglich des Codes des gesamten Teams

Noch ein Gedanke Fear leads to anger, anger leads to hate, hate leads to suffering. No tests lead to fear. Dr. Philip Mayer

Zusammenfassung Was in diesem Video behandelt wurde Warum Testen? Was sind Unit Tests? Der Teufelskreis des Nicht-Testens JUnit Unit Test Vorteile Test-Inspiration Wann aufhören?