TESTEN OBJEKTORIENTIERTER PROGRAMME MIT JUNIT
|
|
- Kasimir Buchholz
- vor 7 Jahren
- Abrufe
Transkript
1 TESTEN OBJEKTORIENTIERTER PROGRAMME MIT JUNIT Praktikumsaufgabe zur Lehrveranstaltung Softwaretechnologie II (WS 00/01) Professur Softwaretechnologie TU Dresden, Fakultät Informatik DANIEL SCHUSTER
2 AUFGABENSTELLUNG Erstellen Sie eine frei gewählte Anwendung (möglichst dir Lösung numerischer Probleme) in Java und verwenden Sie bei der Erstellung systematisch das Test-Framework JUnit. Wählen Sie dabei geeignete Testfälle und bewerten Sie das Framework. PROBLEMATIK DES TESTENS Software weist wie jedes industriell entwickelte Produkt Fehler auf. Nur ein Teil dieser Fehler wird durch den Compiler bzw. die IDE erkannt. Trotzdem ist der syntaktisch korrekte Quellcode meist noch sehr fehlerhaft. Ein beträchtlicher Teil der Implementationszeit wird für das Debuggen verwendet. Solche Fehler können z.b. bei Copy and Paste von Quellcode entstehen, wie folgendes Java-Fragment zeigt: private String dirname; public String getdirname return dirname; private String cfgname; public String getcfgname return dirname; In diesem Beispiel war die Variable dirname mit der zugehörigen get-methode schon vorhanden, für cfgname wurde einfach dieses Fragment kopiert und dabei das Ändern der return-anweisung vergessen. Frühzeitiges Testen kann helfen, solche Fehler aufzuspüren und ein Gesamtsystem inkrementell aus einwandfrei funktionierenden Komponenten aufzubauen. Man unterscheidet hierbei die Unit-Tests einzelner Klassen oder Packages, die Integrations-Tests für das Zusammenspiel der Komponenten, sowie den abschließenden System-Test. Das Problem fehlerhafter Software lässt sich nur lösen, wenn Test und Entwicklung eine verzahnte Einheit bilden. ( test a little, code a little, test... ) Bei konsequentem Testen des
3 entwickelten Codes wird der Quellcode für das Testen ebenso umfangreich werden wie das Programm selbst. Da aber jeder Softwareentwickler meist unter Leistungsdruck steht, wird er nicht die nötige Zeit aufbringen, um die Unit-Tests wirklich vollständig durchzuführen, dies resultiert in unstabilerem Code und somit geringerer Produktivität, was den Leistungsdruck weiter erhöht. Um aus diesem Teufelskreis zu entkommen, braucht der Programmierer äußere Beeinflussung, die durch die Hilfe eines Test-Frameworks geleistet werden kann. Das Test- Framework stellt nicht nur Methoden für ein einheitliches Testen bereit, es erzieht auch den Programmierer zum konsequenten Testen. Ein solches Framework für die Programmiersprache Java ist JUnit von Kent Beck und Erich Gamma. Ich habe Version 3.4 vom verwendet. BENUTZUNG DES FRAMEWORKS Für jede im Programm vorhandene Klasse wird eine Testklasse angelegt. So z.b. für eine Klasse Article die Klasse TestArticle usw. Hier werden Methoden eingefügt, die über assert() oder assertequals() entsprechende Soll-Ist-Vergleiche durchführen. Der eigentliche Test verläuft in 3 Phasen: 1. Initialisierung von Testwerten und variablen über setup() 2. Durchführung des Tests 3. Ressourcenfreigabe mit teardown() Der TestCase bündelt alle Testmethoden, in der TestSuite können die Testfälle zusammengeführt werden. So lässt sich ein Baum von Testfällen aufbauen. Die Methoden im TestCase müssen mit test... beginnen und beinhalten typischerweise assert-anweisungen. Die TestSuites können entweder über eine main()-methode von Hand gestartet werden, oder sie werden aus einer mitgelieferten Umgebung heraus aufgerufen. Hier sind weitere wichtige Methoden des Frameworks aufgelistet: public int counttestcases(); liefert Zahl der Test Cases, die von diesem Objekt erfasst werden.
4 public void run ( TestResult result ); führt Test aus und sammelt Ergebnisse in result result wird framework-intern ausgewertet assert([string msg,] boolean condition); assertequals([string msg,] double expected, double actual,double delta); assertequals([string msg,] long expected, long actual); assertequals([string msg,] Object expected, Object actual); assert[not]null([string msg,] Object object); assertsame([string msg,] Object expected, Object actual); fail([string msg]); Die folgende Übersicht zeigt die Verwendung von verschiedenen Entwurfsmustern im Framework. Dabei ist vor allem das Composite Muster bedeutsam, es ermöglicht, eine baumartige Struktur von Testklassen aufzubauen, die der Organisationsstruktur der zu testenden Anwendung entsprechen.
5
6 TESTANWENDUNG: POLYNOMOPERATIONEN Um die Arbeit mit JUnit zu demonstrieren, habe ich als Bespielanwendung ein Mini- Framework zur Polynomverarbeitung implementiert. Zuerst brauche ich die Basisklasse Polynom und definiere mir einfache Konstruktoren: public class Polynom public static final int MAX_POWER=10; private double[] fpoly; public Polynom() fpoly=new double[max_power+1]; clear(); public Polynom(double InitialValue) this(); fpoly[0]=initialvalue; public Polynom(double[] InitialArray) this(); System.arraycopy(InitialArray,0,fPoly,0, fpoly.length>initialarray.length?initialarray.length:fpoly.length); public void clear() if(fpoly!=null) for(int i=0;i<fpoly.length;i++) fpoly[i]=0.0; Zusätzlich benötigt man noch eine einfache get-methode und eine equals-methode, dies soll als minimalster Klassenprototyp genügen: public boolean equals(polynom p) boolean result=true; for(int i=0;i<fpoly.length;i++) if(fpoly[i]!=p.get(i))result=false; return result; public double get(int index) if((index>=fpoly.length) (index<0)) return -1.0; return fpoly[index]; Nach der Devise code a little, test a little ist als nächstes gleich eine entsprechende Testklasse zu schreiben. Normalerweise würde man hier für jede Klasse eine Testklasse
7 schreiben und dann in Suites zusammenfügen, um in großen Projekten den Überblick zu behalten. Für dieses kleine Beispiel reicht es aus, eine Testklasse zu erstellen, die Tests für alle Klassen durchführt. package junit.swt; import junit.framework.*; public class JunitTest extends TestCase private double[] p0=0.0,0.0,0.0,0.0; private double[] p2=2.0,0.0,0.0,0.0; private double[] px=0.0,1.0,0.0,0.0; private double[] psquare=0.0,0.0,1.0,0.0; private Polynom P0; private Polynom P1; private Polynom PX; public JunitTest(String name) super(name); public static void main(string args[]) junit.textui.testrunner.run(junittest.class); protected void setup() double[] Xar=0.0,1.0; P0=new Polynom(); P1=new Polynom(1.0); PX=new Polynom(Xar); public void testequals() assertequals(p0,p0); public void testconstructors() assertequals(p0,new Polynom()); assertequals(p2,new Polynom(2.0)); Dieser TestCase kann nun direkt über die Main- Methode ausgeführt werden und führt die angegebenen Tests aus, die alle mit test.. beginnen. Komfortabler ist allerdings junit.swingui.testrunner, eine swing-basierte grafische Oberfläche.
8 Der TestRunner fängt alle Exceptions und Errors ab und prüft zusätzlich noch die definierten assertions. Die oben angezeigten Fehler liegen in der Test-Klasse selbst, hier liegt ein wesentlicher Stolperstein des Frameworks, da man aus einer fehlgeschlagenen assertion nicht immer schlussfolgern kann, ob nun die Testklasse oder die getestete Klasse fehlerhaft ist. Die bereinigte Testklasse, für die dann auch der TestRunner grün gibt, sieht so aus: package junit.swt; import junit.framework.*; public class JunitTest extends TestCase private double[] p0=0.0; private double[] p2=2.0; private double[] px=0.0,1.0; private double[] psquare=0.0,0.0,1.0; private Polynom P0; private Polynom P1; private Polynom PX; public JunitTest(String name) super(name); public static void main(string args[]) junit.textui.testrunner.run(junittest.class); protected void setup() double[] Xar=0.0,1.0; P0=new Polynom(); P1=new Polynom(1.0); PX=new Polynom(Xar); public void testequals() assert(p0.equals(new Polynom(p0))); assert(px.equals(new Polynom(pX))); public void testconstructors() assert((new Polynom(p0)).equals(new Polynom())); assert((new Polynom(p2)).equals(new Polynom(2.0))); Als nächstes soll eine Addition und Subtraktion hinzugefügt werden, bei solchen einfachen Methoden ist die entsprechende Testmethode aufwendiger zu schreiben als die Methode selbst. Der Nutzen erschließt sich hier erst mit zunehmender Komplexität des Systems.
9 Polynom.java: public void add(polynom p) for(int i=0;i<=max_power;i++) fpoly[i]+=p.get(i); public void neg() for(int i=0;i<=max_power;i++) fpoly[i]=-fpoly[i]; public void sub(polynom p) for(int i=0;i<=max_power;i++) fpoly[i]-=p.get(i); JUnitTest.java public void testneg() Polynom p=new Polynom(-1.0); p.neg(); assert(p.equals(p1)); public void testadd() Polynom p=new Polynom(new double[] 3.0,2.0); // 2x+3 p.add(p1); // +1 p.add(px); // +x assert(p.equals(new Polynom(new double[] 4.0,3.0))); // 3x+4 public void testsub() Polynom p=new Polynom(new double[] 3.0,2.0); // 2x+3 p.sub(p1); // -1 p.sub(px); // -x assert(p.equals(new Polynom(new double[] 2.0,1.0))); // x+2 Alle Tests zeigen erwartungsgemäß OK. Die neuen Klassen können nach dem Compilieren in der IDE im TestRunner wieder neu geladen werden. Bei älteren Versionen von JUnit musste hier der TestRunner für jeden Test neu gestartet werden. Nun soll der Klasse eine echte Funktionalität hinzugefügt werden, die Polynomdivision und Multiplikation, gleichzeitig wird die tostring()-methode überschrieben. public void mul(polynom p) Polynom result=new Polynom(); int i,l; for(i=0;i<=max_power;i++) for(l=0;i<=max_power;l++) // <- Fehler!!!! Endlosschleife // richtig: for(l=0;l<=max_power;l++)
10 result.set(i+l,result.get(i+l)+get(i)*p.get(l)); for(i=0;i<=max_power;i++) set(i,result.get(i)); public void testmul() Polynom p=new Polynom(new double[] 3.0,4.0,2.0); // 2x^2+4x+3 p.mul(new Polynom(new double[] 4.0,3.0)); // *3x+4 assert(p.equals(new Polynom(new double[] 12.0,25.0,20.0,6.0))); // 6x^3+20x^2+25x+12 Prompt zeigt sich auch hier wieder der Wert des sofortigen Tests. In die Methode mul hat sich ein typischer Copy-and-Paste Fehler eingeschlichen, der zu einer Endlosschleife führt. Dies wird zwar durch JUnit nicht explizit angezeigt, da aber der neue Test der letzte in der Reihe ist und der TestRunner nicht zum Ende kommt, kann man darauf schließen. Leider funktioniert Stop Test nur zwischen zwei Tests. Es folgt nun die Polynomdivision: public Polynom div(polynom p) int i; if(p.getmaxpower()>getmaxpower()) return new Polynom(); Polynom result=new Polynom(); Polynom base=new Polynom(); for(i=0;i<=max_power;i++) base.set(i,get(i)); Polynom modulo=new Polynom(); int maxa=getmaxpower(); int maxb=p.getmaxpower(); for(i=maxa;i>=0;i--) result.set(i-maxb,base.get(i)/p.get(maxb)); maxa=base.getmaxpower(); if(maxa<maxb) break; modulo.clear(); for(int l=0;l<=maxb;l++) modulo.set(maxa-maxb+l,result.get(maxa-maxb)*p.get(l)); // zuerst Fehler: modulo.set(maxa-maxb+l,result.get(maxa-maxb)); base.sub(modulo); for(i=0;i<=max_power;i++) set(i,result.get(i)); return base; In der anfänglichen Version dieser Methode war ein Fehler (s.o.). Allerdings deckte die erste Version der zugehörigen Testklasse nicht diesen Fehler ab, das Ergebnis der getesteten Division war richtig. JUnit ist kein intelligentes Testprogramm. Es ist lediglich ein Test-
11 Framework und die Schwierigkeit besteht darin, intelligente Tests zu schreiben. Es hilft nur beim Aufdecken eines Fehlers, nicht bei dessen Beseitigung. So konnte ich den Fehler oben erst durch Einfügen von print()-anweisungen beheben, JUnit ersetzt kein Debugging. Es fehlt eine Log-Funktion, die man innerhalb der Methoden der Anwendung aufrufen kann. Erst nach dem debuggen macht dann eine solche Testmethode Sinn: public void testdiv() Polynom p=new Polynom(new double[] 3.0,5.0,6.0); // 6x^2+5x+3 Polynom p2=p.getclone(); p2.div(p1); assert(p2.equals(p)); // Division durch 1 p2.div(p2); p2.mul(p2); // Division durch 2, anschließend *2 assert(p2.equals(p)); Polynom Prest=p.div(new Polynom(new double[] 4.0,3.0)); // *3x+4 assert(p.equals(new Polynom(new double[] -1.0,2.0))); assert(prest.equals(new Polynom(new double[] 7.0))); // Rest 7 ZUSAMMENFASSUNG / BEWERTUNG Zusammenfassend lässt sich sagen, dass JUnit ein durchaus nützliches Tool für das inkrementelle Entwickeln von Programmen ist. Es erzieht gewissermaßen den Programmierer zur fortlaufenden Qualitätskontrolle seiner Software. Bei konsequenter Anwendung ist es möglich, Programm und Test voneinander zu trennen und die Tests zu konservieren. Sonst werden die Tests im Quelltext der Anwendung durchgeführt und verschwinden beim Release. Kommt es später noch zu Änderungen, kann auf die alten Tests nicht mehr zurückgegriffen werden, was mit JUnit ohne weiteres möglich ist. JUnit bewährt sich vor allem bei stark strukturierten Objektbäumen, es kann eine analoge Objekthierarchie aufgebaut werden. Schwächen liegen vor allem in der Fehleranfälligkeit der Testmethoden selbst. Die Soll-Ist-Kontrolle erfolgt nicht mehr per Hand (Ausgabe von Strings, etc.) sondern muss für die assert()-anweisungen in boolsche Ausdrücke umgewandelt werden. Dabei kann es vorkommen, dass völlig korrekte Ergebnisse einen Assertion-Fehler verursachen. Es erfordert einige Übung, sich in diese Art des Testens hineinzudenken. Ein weiterer Schwachpunkt ist die Beschränkung auf den Test von ganzen Methoden, ein Tool für die Fehlersuche in Methoden wäre hilfreich.
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
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
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.
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,
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
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
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
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
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
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
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.
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
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ß
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
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
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 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
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
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
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:
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
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
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:
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,
MehrÜbung zur Vorlesung Einführung in Software Engineering
Übung zur Vorlesung Einführung in Software Engineering Wintersemester 2012/13, Richard Bubel und Martin Hentschel Übungsblatt 5: Testen Abgabeformat: Reichen Sie Ihre Lösung per SVN als eine PDF-Datei
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
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
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
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
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
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
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
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
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/
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
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
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
MehrDiplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008
Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrEinführung in die. objektorientierte Programmierung
Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie
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,
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
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
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
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
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
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
MehrJava-Vorkurs 2015. Wintersemester 15/16
Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich
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 ->
MehrTest zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
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
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
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
MehrJAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
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.
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
MehrA very very very very short intro to. Testing
A very very very very short intro to Testing Testen ist Teil von V&V V&V Validierung und Verifikation Validierung Erstellen wir das richtige Produkt? Soll gewährleisten, dass das Softwaresystem die Kundenerwartungen
MehrTestphase. Das Testen
Testphase VIS Projekt Freie Universität Berlin N.Ardet - 17.4.2001 Das Testen Testen ist das Ausführen eines Software- (Teil)systems in einer definierten Umgebung und das Vergleichen der erzielten mit
MehrAufgaben Objektentwurf
Aufgaben Objektentwurf (Einschub zum 5. Tutorium) Tutorium 6 13. März 2009 Svetlana Matiouk, Uni Bonn Ferientutorien zur Vorlesung Softwaretechnologie WS 2008 6. Treffen, Aufgabe 1 Vorwärtsmodellierung
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
MehrPrüfungszeuch im Fach Objektorientierte Programmierung WS 2000
Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,
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
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
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
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
MehrEin erster Blick. Eclipse und Debugging. Anlegen von Projekten. Wissenswertes...
Eclipse und Debugging Ein erster Blick Starten mittels /usr/bin/eclipse oder auch Applications > Programming Legt workspace in eurem Homedir an! CoMa SS 09 Wissenswertes... CoMa II SS 09 1/24 CoMa II SS
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
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrProgrammierprojekt. Anne0e Bieniusa Sommersemester 2014
Programmierprojekt Anne0e Bieniusa Sommersemester 2014 Phasen der So;ware- Entwicklung Planungsphase DefiniConsphase Entwurfsphase ImplemenCerungsphase Testphase Wasserfall- Modell Einführungs- und Wartungsphase
MehrTesten mit JUnit. Seminar Arbeit von Wang Jian, Ia00. Fachhochschule Aargau Departement Technik Studiengang I Betreuender Dozent: Prof. Dr. D.
Testen mit JUnit Seminar Arbeit von Wang Jian, Ia00 Fachhochschule Aargau Departement Technik Studiengang I Betreuender Dozent: Prof. Dr. D. Gruntz Windisch, 12. Februar 2003 Jian Wang, Ia00 11.Feb.2002
MehrPraktische Übung 'JUnit-Test'
Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse
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,
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Mehr6. Iteration (Schleifenanweisungen)
6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"
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
MehrAutomatisierte Regressionstests per Knopfdruck sparen Zeit und Ressourcen sichern die Qualität schonen die Nerven
Automatisierte Regressionstests per Knopfdruck sparen Zeit und Ressourcen sichern die Qualität schonen die Nerven Dipl.-Inf (FH) Matthias Müller 09.06.2010 Regressionstests Unter einem Regressionstest
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
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
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
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
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
MehrVariablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
Mehr3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
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
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
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
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
MehrProgrammieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von
MehrProgrammieren mit Java
Reinhard Schiedermeier Programmieren mit Java 2., aktualisierte Auflage ein Imprint von Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrTeil 1: Grundeigenschaften von Rechnern und Software
Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [3P] Nennen Sie mindestens 3 Arten von Programmen zur Softwareentwicklung Editor, Compiler, Linker, Debugger, Interpreter,...
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Mehr