Markus Wichmann. Testen von Java Code mit. JUnit



Ähnliche Dokumente
Testen mit JUnit. Motivation

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Was meinen die Leute eigentlich mit: Grexit?

Programmiertechnik II

Test-Driven Design: Ein einfaches Beispiel

Das Leitbild vom Verein WIR

Einführung in die Informatik Tools

Anleitung über den Umgang mit Schildern

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten

Java: Vererbung. Teil 3: super()

1. Weniger Steuern zahlen

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Was ist PZB? Personen-zentrierte Begleitung in einfacher Sprache erklärt

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

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

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Wir machen neue Politik für Baden-Württemberg

Geld Verdienen im Internet leicht gemacht

Bestandesaufnahme und Bedürfnisanalyse

Outlook Vorlagen/Templates

Was ist das Budget für Arbeit?

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Java Entwicklung für Embedded Devices Best & Worst Practices!

Das Gewissen Sekundarstufe 1 2 Std.

Pädagogische Hinweise B2 / 12

Internet Explorer Version 6

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

50 Fragen, um Dir das Rauchen abzugewöhnen 1/6

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

Jetzt kann ich nicht investieren!

Unit Tests mit Junit 4. Dario Borchers

M03a Lernstraße für den Unterricht in Sekundarstufe I

Leichte-Sprache-Bilder

Qualität und Verlässlichkeit Das verstehen die Deutschen unter Geschäftsmoral!

AW: AW: AW: AW: Kooperationsanfrage anwalt.de

Online bezahlen mit e-rechnung

! " # $ " % & Nicki Wruck worldwidewruck

Erfahrungen mit Hartz IV- Empfängern

1. Loggen Sie sich mit Ihrem Benutzernamen in den Hosting-Manager (Confixx) auf Ihrer entsprechenden AREA ein. Automatische Wordpress Installation

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Mehr Geld verdienen! Lesen Sie... Peter von Karst. Ihre Leseprobe. der schlüssel zum leben. So gehen Sie konkret vor!

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

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

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

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Krippenspiel für das Jahr 2058

Herzlich Willkommen. «Zielkonflikte im HR Personalverantwortliche im Spannungsfeld der Erwartungen» 5. Juni HR Club Careerplus Folie 1

Ein Leitfaden für Anfänger unter Zuhilfenahme frei verfügbarer Software! (bei z.b. Google Microsoft Powertoys suchen, oder diesen Link verwenden )

Der neue Test ist noch Interessanter, denn da wird Menschen mit Gericht gedroht, wenn sie ihre Gebühren nicht bezahlen!

Das Test-Framework JUnit ETIS SS04

Woche 1: Was ist NLP? Die Geschichte des NLP.

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

Ihr habt Probleme auf die Closed Public Beta zuzugreifen? Dieses Dokument hilft Euch Antworten auf häufig gestellte Fragen zu erhalten.

Ein Vorwort, das Sie lesen müssen!

Quiz mit Google Docs erstellen

Fragebogen der IG Metall-Jugend zur Qualität der Berufsausbildung

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Kreativ visualisieren

Anleitung zum Öffnen meiner Fotoalben bei web.de

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

Kulturelle Evolution 12

Schnellstart - Checkliste

Änderungsbeschreibung HWS32 SEPA Überweisungen

Lernerfolge sichern - Ein wichtiger Beitrag zu mehr Motivation

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

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.

r? akle m n ilie ob Imm

Digitaler*Ausstellungsbegleiter*für*Mobilgeräte ** * * * Alter: Studiengang: Geschlecht: $ $ $ $ Datum: Falls%Ja,%welches? Falls%ja, %welches?

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Projektmanagement in der Spieleentwicklung

Fotostammtisch-Schaumburg

Hilfe, mein SCRUM-Team ist nicht agil!

Vom Sparschwein zum Bankerschwein und zurück.

Gimp Kurzanleitung. Offizielle Gimp Seite:

Information zum Projekt. Mitwirkung von Menschen mit Demenz in ihrem Stadtteil oder Quartier

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

TYPO3-Zusatzkurs für

BIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen

Toolkit Team-Seite TIPPS & TRICKS FÜR DIE GESTALTUNG EURER TEAM-SEITE. Anmelden Daten ändern... 2 Eure Team-Seite... 3

Weltenbummler oder Couch-Potato? Lektion 10 in Themen neu 3, nach Übung 5

LEITFADEN ZUR ERFOLGREICHEN ONLINE-BEWERBUNG

Anne Frank, ihr Leben

Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter!

Alle gehören dazu. Vorwort

Qualitätserlebnis statt Qualitätssicherung. Eine Mehrfachfallstudie agiler Teams

Zugang zum Online-Portal mit Passwort Benutzeranleitung (Stand 01/2015)

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

1. Was ihr in dieser Anleitung


Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Fragebogen: Abschlussbefragung

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Transkript:

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 sein... (...und mein Chef wird mich loben) Stunden oder Tage später... Oh, meine Applikation wird instabil (...wie kann das sein? Ich bin ein guter Programmierer!) Jetzt läuft mit die Zeit erst recht weg! Wie gut, dass ich meine Zeit nicht auch noch mit Tests verschwendet habe!

Demotivation... :'-(

Motivation Das kennt Ihr doch: Code schreiben Applikation starten Neue Funktionalität testen Versuchen, Fehler zu provozieren Probleme dabei: Starten der Applikation und Navigation zur neuen Funktionalität kostet Zeit Neue Funktionalität nicht immer einfach testbar Vergessen ist menschlich (sehr wichtig)testende Kollegen kennen die Fallstricke des Codes nicht! Wäre es nicht schön,...

Wäre es nicht schön, etwas zu haben,... das einen schnelleren Entwicklungszyklus ermöglicht? das das Starten der Applikation zunächst überflüssig macht? das keinen Test vergisst? (sehr wichtig) das andere im Team nachvollziehen und selbst testen können? das knallhart und ehrlich ok oder nicht ok sagt? was also gleichzeitig schnellere und bessere Entwicklung ermöglicht?

Unit Testing Merkmale erfolgt mit Test-Frameworks (hier: mit JUnit) sollte von Beginn des Projekts eingesetzt werden wird von IDEs unterstützt (siehe spätere Demo) ist ein iterativer Prozess arbeitet granular (testet einzelne Konstrukte) Units sind meist Methoden und Klassen testet nicht die Gesamt-Funktionalität sind White Box Tests Personen, die den Code sehen und ändern können, testen

Unit-Testing: Ablauf Klassen & Methoden anwenden auf TestKlassen & TestMethoden

Unit-Testing: Ablauf Klassen & Methoden anwenden auf TestKlassen & TestMethoden präsentieren Resultate

Unit-Testing: Ablauf Klassen & Methoden anwenden auf TestKlassen & TestMethoden präsentieren Resultate sind Feedback

Henne oder Ei? Klassen & Methoden anwenden auf TestKlassen & TestMethoden präsentieren langer Weg sind Feedback Resultate Arbeitspakete aufteilen Kunden schildern Wünsche

Ein paar Formalien... Es gebe eine Spezifikation S und ein Programm P Ein Test Case ist ein Paar aus Eingabe- und Ausgabewert (i,s(i)) auf Spezifikations-Seite Ein Test ist ein implementierter Vergleich S(i) == P(i)? Eine Test Suite ist eine Reihe von Tests/Test Cases,welche verschiedene Möglichkeiten abdeckt

Wir wollen Geld......durch unseren Code verwalten: erzeugen zu noch mehr Geld addieren Money m12eur= new Money(12, "EUR"); Money m14eur= new Money(14, "EUR"); Money result= m12eur.add(m14eur); auf Vollständigkeit prüfen Money expected= new Money(26, "EUR"); Assert.assertTrue(expected.equals(result));

Der Geld-Test public class MoneyTest extends TestCase { public void testsimpleadd() { Money m12eur= new Money(12, "EUR"); Money m14eur= new Money(14, "EUR"); Money expected= new Money(26, "EUR"); Money result= m12eur.add(m14eur); Assert.assertTrue(expected.equals(result)); } } Gelingt der Test, ist add(...) richtig implementiert. Scheitert er, so ist dies nicht der Fall. Frage an Euch: Was wird passieren?

JUnit Demo Quelltexte als ZIP unter m2w2.de/articles.html

JUnit Framework: Klasse Assert stellt in Test-Methoden statische Methoden für zu verifizierende Annahmen zur Verfügung: asserttrue(boolean) assertfalse(boolean) assertsame(object, Object) assertnotsame(object, Object) assertequals(primitivetype, primitivetype) jeweils für 2 primitive Java-Typen

JUnit Framework: Klasse TestCase Spezialisierungen haben bestimmte Merkmale: alle Methoden, deren Name mit test...() beginnt, werden vom Framework als Test-Methoden angesehen Test-Methoden können automatisch aufgerufen werden (Reflection wird benutzt) junit.textui.testrunner.run(moneytest1.class); TestCase testb = new MoneyTest3("testEquals"); testb.run(); Die Methode suite() wird gerufen, wenn vorhanden Überschreiben der Methoden setup() und teardown() zum Sammeln von gemeinsamem Code aller Tests

JUnit Framework: Klasse TestSuite Eine TestSuite besteht aus mehreren Tests Jede Klasse mit mehreren Test- Methoden kann als Suite benutzt werden TestSuite asuite = new TestSuite(MoneyTest3.class); stellt Meta-Methoden zur Überwachung des Testablaufs zur bereit (VariousSuites.java) counttestcases() wassuccesful()...

Weitere Vorteile von Unit Testing Codefremde Entwickler können codieren und sofort sehen, ob sie etwas kaputt gemacht haben Je einfacher ein Test zu machen ist, desto häufiger wird er eingesetzt Je häufiger er eingesetzt wird, desto schneller werden Fehler repariert

Noch mehr Vorteile Schreiben von Unit Tests zwingt zum Im-Auge-Behalten vom Zweck der Methode, der Klasse, der Anwendung Granularität von Unit Tests animiert zum Entkoppeln von Methoden und Klassen Entwickler nehmen Standpunkt des Aufrufers ein Code muss leicht aufrufbar sein Code muss leicht testbar sein Nebeneffekt: Code des Unit Tests dient als Referenz zum Aufrufen des eigentlichen Codes Schreiben von Tests im voraus verbessert Design

Kritische Anmerkungen Unit Tests ungenügend um ein ganzes System zu testen Erfüllen von Kundenwünschen wird nicht getestet Schreiben von Tests für bestehenden Code schwierig Stark gekoppelte Methoden und Klassen Ver-Antipatternder Code ist schwer testbar (The Blob, Spaghetti-Code, Monolithic JSPs,...)

Warum JUnit JavaDoc zu empfehlen ist... weil es weniger ist als es aussieht weil es Spaß macht ;-)

Auch Lesenwert Robert C. Martin, James W. Newkirk, Robert S. Koss: Agile Software Development (ISBN 0-13-597444-5) http://www.extremeprogramming.org http://www.junit.org (Die JUnit WebSite) www.martinfowler.com/articles/newmethodology.html http://ccm.redhat.com/doc/core-platform/5.0/engineeringstandards/testing-standards.html http://junit.sourceforge.net/doc/testinfected/testing.htm http://www.xprogramming.com/software.htm (Liste von Unit Test Frameworks für alle erdenklichen Sprachen)

Assert.assertTrue(esIstschonSpaet); Vielen Dank für Eure Aufmerksamkeit!