Softwaretest. Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung. Algorithmen und Programmierung II SS 2008

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Softwaretest. Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung. Algorithmen und Programmierung II SS 2008"

Transkript

1 Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung Softwaretest Softwaretest Ingo Dageförde 1

2 Agenda VL Softwaretest am Qualitätssicherung in der Softwareentwicklung Softwaretests warum und wieso? Arten von Softwaretests Einführung in Softwaretests mit JUnit Beispiel in JUnit Zusammenfassung Softwaretest Ingo Dageförde 2

3 Qualitätssicherung in der Softwareentwicklung (1) Wiederverwendung: Bestehende Software darf nicht unbesehen für eine neue Aufgabe wiederverwendet werden. Vorher muss geprüft werden, ob ihre Fähigkeiten den Anforderungen der neuen Aufgabe entsprechen Spezifikation: Die Fähigkeiten einer Software sowie alle Annahmen, die sie über ihre Umgebung macht, müssen sauber spezifiziert sein. Andernfalls ist die Prüfung auf Wiederverwendbarkeit extrem aufwendig. Dokumentation: Kooperieren zwei Software-Komponenten miteinander, so müssen eindeutige Zusammenarbeitsregeln definiert, dokumentiert und eingehalten werden: Wer liefert wem was unter welchen Bedingungen Softwaretest Ingo Dageförde 3

4 Qualitätssicherung in der Softwareentwicklung (2) Fehlerbehandlung: Jede potentielle Fehlersituation in einer Software muss entweder behandelt werden oder die Gründe für die Nichtbehandlung müssen so dokumentiert werden, dass die Gültigkeit der dabei getroffenen Annahmen überprüfbar ist. Fehlertoleranz: Mehrfache identische Auslegung von Systemen hilft nicht gegen Entwurfsfehler. Sicherer Zustand: Bei Störungen in sicherheitskritischen Systemen ist Abschalten nur dann eine zulässige Maßnahme, wenn dadurch wieder ein sicherer Zustand erreicht wird Softwaretest Ingo Dageförde 4

5 Qualitätssicherung in der Softwareentwicklung (3) Systemtest: Beim Test von Software, die aus mehreren Komponenten besteht, genügt es nicht, jede Komponente nur isoliert für sich zu testen. Umfangreiche Systemtests unter möglichst realistischen Bedingungen sind notwendig. Review: Jedes Programm muss - neben einem sorgfältigen Test durch kompetente Fachleute inspiziert werden, weil insbesondere die Erfüllbarkeit und Adäquatheit von Annahmen und Ergebnissen häufig nicht testbar ist. Effektivität: Software, die nicht benötigt wird, sollte auch nicht eingesetzt werden Softwaretest Ingo Dageförde 5

6 Qualitätssicherung in der Softwareentwicklung (4) Risikomanagement: Die Risiken erkennen, angemessene technische Maßnahmen planen, durchsetzen und überprüfen. Kostenmanagement: Die Kosten einer vorbeugenden Maßnahme in Relation zu den Kosten eines Fehlers sehen Qualitätsmanagement: Integriertes Qualitätsmanagement für alle Phasen des Systementwurfs -> Vertiefung in VL zur Softwaretechnik Softwaretest Ingo Dageförde 6

7 Tests warum und wieso? Softwareprodukte werden heutzutage immer komplexer wie z.b. Ariane 5 oder Campus Management :-) (Programmfehler!) Die meisten Programme enthalten Fehler (sic!), da komplexe Software in begrenzter Zeit nur unvollständig erfassbar und realisierbar ist Programme sollten getestet werden, um Fehler aufzudecken, um so ein Mindestmaß an Softwarequalität sicherzustellen Ein Test ist erfolgreich, wenn ein Fehler gefunden wurde Durch Testen kann man nicht die Korrektheit eines Programms beweisen, sondern nur seine Fehlerhaftigkeit Fehlermeldungen und anschliessendes Debugging sind zu spät und kosten viel Zeit und Geld und führen nur Nichtabnahme oder Nichtakzeptanz beim Kunden/Nutzer Softwaretest Ingo Dageförde 7

8 Tests was sollte er, was sollte er nicht? Fehler so früh wie möglich finden Unabhängig erfolgen Mehr bringen als kosten Automatisiert wiederholbar sein Möglichst zeitnah zur Programmierung sein Spaß machen Er sollte NICHT -> keine Fehler finden! Softwaretest Ingo Dageförde 8

9 Arten von Tests Unit-Test bzw. Modul-Test Verifikation der Korrektheit einzelner Softwarebausteine (Module bzw. Klassen Ausführbarer Code spielt Testfälle durch und vergleicht die Ergebnisse mit den erwarteten Werten Zeitnah zur Programmierung und nach jeder Modifikation Integrationstest Test der korrekten Interaktion mehrerer voneinander abhängiger Module bzw. Komponenten nach deren erfolgreich abgeschlossenen Unit-Test für fehlerfreie isolierte Funktionalität Systemtest Test des Gesamtsystems (im Labor ) Softwaretest Ingo Dageförde 9

10 Arten von Tests Performance-Tests Test des Verhaltens einzelner Module oder Systeme bezüglich einer definierten Hardwareumgebung Test, ob vom Kunden gewünschte Reaktionszeit eingehalten wird und auch unter hoher Auslastung keine Fehler produziert werden Funktionale bzw. Feldtest Test der vom Kunden gewünschten Funktionalität des Systems unter Real-Bedingungen Test, ob das entwickelte System den Anforderungen des Auftraggebers oder späteren Benutzers entspricht -> Pflichtenheft! Softwaretest Ingo Dageförde 10

11 Unit-Tests Beim Unit-Test wird jede Methode einer Klasse systematisch getestet und zwar bzgl. der gegebenen (informellen oder formalen) Spezifikation Logischer Unit-Test Überprüft nur einzelne Methoden bestimmter Klassen Integrations Unit-Test Überprüft das Zusammenspiel zwischen den einzelnen Komponenten Funktionaler Unit-Test Erweitert die Grenzen des logischen Unit-Tests und Integrations Unit- Tests so, dass Arbeitsabläufe getestet werden können Die einzelnen Arten von Unit-Tests können als White-Box-Test oder Black- Box-Test durchgeführt werden Softwaretest Ingo Dageförde 11

12 Whitebox-Test Test des Rumpfes der Methode Es soll eine möglichst repräsentative und vollständige Menge von Fällen getestet werden Beim Whitebox-Test sind das z.b. alle möglichen unterschiedlichen Fälle von Abläufen eines Programms Beispiel: Das Programmfragment while(b) {A C besitzt die unterschiedlichen Abläufe C und AC, AAC,... Man sollte zumindest den Abbruchfall testen, sowie einen Schleifendurchlauf und dann Abbruch (als Grenzfall) sowie mehrere Schleifendurchläufe und dann Abbruch Softwaretest Ingo Dageförde 12

13 Whitebox-Test Beispiel Quersumme Int quersumme(int x) { int qs = 0; while(x > 0) { qs= qs + x % 10; x = x / 10; return qs; Wahl der Testfälle aufgrund der Codestruktur Mögliche Testfälle: Abbruchfall: x<=0 Wähle x=0 und z.b. x=-1 1 und mehrere Schleifendurchläufe: (x=1, x=9, x=12, x=352) Softwaretest Ingo Dageförde 13

14 Blackbox-Test Beim Blackbox-Test werden für jede Methode Spezialfälle der Spezifikation getestet. Die Implementierung der Methoden wird NICHT und darf NICHT berücksichtigt werden Für jede Methode werden nur deren Parameter und deren Datentypen betrachtet. Um eine möglichst vollständige Testabdeckung zu erreichen, sollte für jeden Parameter im Kopf der Methode gewählt werden: Ein Standardwert in der Mitte des Datenbereichs Grenzwerte des Datenbereichs bzw. des Definitionsbereichs Bei induktiven Datentypen Werte für jeden Konstruktor Beispiel:Für einen Parameter int p mit Def.bereich{0,..., 100 testet man z.b. die Werte 1, 0, 38, 100, 101. Analog testet man bei einem Array int[] a die Werte a[0], a[length/2],, a[length-1] Softwaretest Ingo Dageförde 14

15 Herleitung der Testfälle - Äquivalenzklassenmethode Wichtig sind richtige Testfälle, die nicht das selbe Verhalten abprüfen, sondern möglichst jedes Verhalten Bei der Äquivalenzklassenmethode werden Eingabeparameter einer Methode, die das gleiche Verhalten haben, in Klassen eingeteilt Die Spezifikation schreibt z.b. vor, dass nur Werte von 0,01 bis 500 verarbeitet werden sollen Man bildet daraus 3 Äquivalenzklassen, die das gleiche Verhalten aufweisen sollen 0,01 <= x <= 500 x <= 0 x > Softwaretest Ingo Dageförde 15

16 Herleitung der Testfälle - Grenzwertanalyse Grenzwertanalyse ist eine Erweiterung der Äquivalenzklassenmethode Hierbei werden zusätzlich besonders die Grenzen der Spezifikation betrachtet Unser Beispiel schrieb vor, dass nur Werte von 0,01 bis 500 verarbeitet werden sollen Man würde die 3 Testfälle für die Äquivalenzklassen, um folgende Testfälle erweitern: - 0,01 0,00 0,01 500,00 500, Softwaretest Ingo Dageförde 16

17 JUnit JUnit ist ein Open Source Framework zur Durchführung und Automatisierung von Unit-Tests für Java als Black-Box-Tests Entwickelt (um 1998) von Kent Beck und Erich Gamma auf der Basis von SUnit (Beck, 1994) zum Testen von Smalltalk-Programmen Die aktuellste Version ist 4.4 (vielfach wird noch 3.8 verwendet, die Notation ist unterschiedlich) In Eclipse ab Version 3.2 bereits integriert (sonst unter herunterladen und zum Classpath hinzufügen) Ein JUnit-Test kennt nur zwei Ergebnisse: Entweder der Test gelingt ( grün ) oder er misslingt ( rot ). Das Misslingen kann als Ursachen einen Fehler (Error) oder ein falsches Ergebnis (Failure) haben Softwaretest Ingo Dageförde 17

18 Installation von JUnit und Integration in Eclipse Ab Eclipse 3.2 bereits integriert Bis Eclipse 3.1 JUnit von runterladen und das jar zum Classpath hinzufügen Menü: Window->Preferences->Java->Build Path->Classpath Variables überprüfen... Testklassen können dann im Package-Explorer selektiert werden und anschliessend Run As und JUnit Test im Kontextmenü auswählen Softwaretest Ingo Dageförde 18

19 Entwicklung eines Testfalls in JUnit Eine Testklasse enthält eine Menge von Testmethoden, die die verschiedenen Methoden der Ausgangsklasse testet Jede Testklasse muss die benötigten JUnit-Klassen importieren : import static org.junit.assert.* import org.junit.* Die Testklasse selber ist dann genau so aufgebaut wie jede andere Javaklasse auch (Optional) Definiere eine main() Methode, die den Testfall startet. (Nicht nötig im Rahmen von Entwicklungsumgebungen wie Eclipse) Softwaretest Ingo Dageförde 19

20 JUnit / werden vor jedem Testfall ausgeführt Dadurch kann man Objekte initialisieren, die in jedem Testfall benötigt werden, ohne dies für jeden Testfall jedes Mal einzeln zu initialisieren public void setup() { i = new Test(5, bla werden nach jedem Testfall ausgeführt (z.b. Aufräumen der Datenbanken etc.) Softwaretest Ingo Dageförde 20

21 JUnit Einzelner Testfall Jeder Test muss einzeln implementiert werden durch folgende public void hierdertestname() Es ist sinnvoll, den Namen des Tests an die zu testende Methode anzupassen Die einzelnen Tests sind voneinander unabhängig für jeden Test werden die Testumgebungen neu initialisiert Softwaretest Ingo Dageförde 21

22 JUnit Asserts Um die einzelnen Ergebnisse überprüfen zu können, muss jede Bedingung mit Asserts definiert werden Mit einem Assert wird geprüft, ob z.b. ein Attribut der zu testenden Klasse mit vorher festgelegten Werten übereinstimmt Je nach Ergebnis ist der Test bestanden oder nicht bestanden In JUnit gibt es folgende Asserts: assertequals asserttrue und assertfalse assertnull und assertnotnull assertsame und assertnotsame Softwaretest Ingo Dageförde 22

23 JUnit Assert - Beispiel Neben dem zu prüfenden Wert kann den einzelnen Assets noch ein Name gegeben werden Analyse wird vereinfacht, da als Rückgabe der Name des fehlgeschlagenen Test erhalten wird public void testgetvalue() { assertequals( getvalue 100, object.getvalue (), ); Hier wird geprüft, ob das Objekt den Wert zurückgibt, den es zuvor bei der Initialisierung erhalten hat Softwaretest Ingo Dageförde 23

24 JUnit Exceptions Test, ob die Klasse auch mit Fehlern umgehen kann Im Testcode wird absichtlich eine Exception erzeugt und geprüft, ob die zu testende Klasse auch die entsprechende Exception zurückgibt Sollte keine oder eine nicht zu erwartende Exception zurückkommen, gilt der Test als nicht ( expected = IndexOutOfBoundsException.class) public void testindexoutofboundsexception() { ArrayList emptylist = new unused ) Object o = emptylist.get(0); Softwaretest Ingo Dageförde 24

25 Weiteführende Tests als Erweiterung von JUnit Integrationstest (Cactus) Integrationstests von Servlets und JSPs in der Laufzeitumgebung z.b. im Webbrowser -> Ergebnis als XML-Zusammenfassung Funktionale Tests (HTTPUnit) Automatisierte Website-Test (z.b. Formulare u. Javascript ausführen) Surfverhalten von Usern kann simuliert werden Load/Performance Testing (Jmeter) Große Anzahl von Threads werden erzeugt, um Last zu testen Latenzzeit und Datendurchsatz werden gemessen Load Testing (JunitPerf) Reaktionszeiten messen und testen Softwaretest Ingo Dageförde 25

26 Beispiel: Bankkonto mit Überziehungsrahmen BankAccount Setzt Limit auf Wert l <= 0 und Anfangskontostand auf b >= 0 int balance int limit BankAccount(int b, int l) void deposit (int amount) void withdraw (int amount) double getbalance () int getlimit () boolean transferto (BankAccount o, int amount) Fügt den Betrag amount > 0 zum Kontostand hinzu Hebt den Betrag amount > 0 vom Konto ab, falls Limit nicht überschritten wird. d.h. falls nach Ausführung gilt: getbalance() >= getlimit() Überweist den Betrag amount > = vom aktuellen Konto auf das Konto o und gibt true zurück, wenn das Limit dabei nicht überschritten wird. d.h. falls nach Ausführung gilt: getbalance() >= getlimit() Softwaretest Ingo Dageförde 26

27 Beispiel: Bankkonto Klasse (1) public class BankAccount { private int balance; private int limit; // Invariante: balance >= limit public BankAccount (int b, int l) { balance = b; limit = l; public void deposit (int amount) { if (!(amount > 0)) throw new IllegalArgumentException("Negativer Betrag"); balance = balance + amount; Softwaretest Ingo Dageförde 27

28 Beispiel: Bankkonto Klasse (2) public void withdraw (int amount) { if (!(amount > 0)) throw new IllegalArgumentException("NegativerBetrag"); if (!(balance - amount >= limit)) throw new IllegalArgumentException("Kontolimit ueberschritten"); balance = balance - amount; public String tostring () { return "BankAccount [balance= " + balance + "limit = " +limit+"]"; public int getbal () { return balance; public int getlimit () { return limit; Softwaretest Ingo Dageförde 28

29 Beispiel: Bankkonto Klasse (3) public boolean transferto (BankAccount other, int amount) { try { if (!(amount > 0)) throw new IllegalArgumentException("NegativerBetrag"); if (!(balance - amount >= limit)) throw new IllegalArgumentException("Kontolimit ueberschritten"); withdraw(amount); other.deposit(amount); catch (IllegalArgumentException e) { return false; return true; Softwaretest Ingo Dageförde 29

30 Beispiel: Einfacher Testfall für public void testdeposit () { BankAccount b1 = new BankAccount(100, -50); b1.deposit(100); assertequals(200, b1.getbalance()); asserttrue(b1.getbalance() >= b1.getlimit()); Zusätzlich benötigt man noch Tests für die Grenzfälle und die Ausnahmen, z.b. b1.deposit(1); b1.deposit(0); b1.deposit(-10); Softwaretest Ingo Dageförde 30

31 Beispiel: Weiterer Testfall für public void testwithdraw() { BankAccount b1 = newbankaccount (100,-50); b1.withdraw(100); assertequals(0, b1.getbalance()); asserttrue(b1.getbalance() >= b1.getlimit()); Zusätzlich benötigt man noch Tests für - die Grenzfälle von amount z.b. b1.withdraw(1); b1.withdraw(0); - die Invariante balance amount >= limit z.b. b1.withdraw(150); b1.withdraw(149); b1.withdraw(200); Softwaretest Ingo Dageförde 31

32 Beispiel: Testklasse für Bankkonto import org.junit.*; public class BankAccountTest { private BankAccount b1; private BankAccount b2; public BankAccountTest (String arg0) { public void setup () { b1 = new BankAccount(100, -50); b2 = new BankAccount(100, public void teardown() { //ohne Effekt bei BankAccount, b1 = null; //da immer neue Testobjekte erzeugt werden b2 = null; Softwaretest Ingo Dageförde 32

33 Allgemeines Schema für eine Testklasse (1) import org.junit.*; public class ZZZTest { private ZZZ z; public ZZZTest (String name) { protected void setup() { z = protected void teardown() { z = null; Softwaretest Ingo Dageförde 33

34 Allgemeines Schema für eine Testklasse public void testzzzmethod () { z. ZZZMethod(); asserttrue(<boole'scherwert>); assertequals(expected, actual); Softwaretest Ingo Dageförde 34

35 Testfixture Eine Fixture (JUnit-Jargon) ist eine Menge von Objekten, die den gemeinsamen Ausgangszustand für die Testfälle einer Testklasse darstellt. Durch eine Testfixture vermeidet man Codeduplikation der gemeinsamen Testobjekte mehrerer Testmethoden einer Testklasse. Tests können die Objekte einer Testfixture gemeinsam benutzen, wobei jeder Test unterschiedliche Methoden aufrufen und unterschiedliche Resultate erwarten kann. Jeder Test einer Testklasse verwendet seine eigene Fixture, um die Tests von den Änderungen anderer Tests zu isolieren. Deshalb können die Tests einer Testklasse in jeder Reihenfolge ausgeführt werden. Eine Testfixture wird durch die setup()methode erzeugt; durch die teardown() Methode werden diese Objekte wieder beseitigt. JUnit ruft die setup-methode automatisch vor jedem Test und die teardown-methode automatisch nach jedem Test auf Softwaretest Ingo Dageförde 35

36 Testsuite Eine Testsuite ist eine Menge von Testfällen, die gemeinsam ausgeführt und betrachtet werden. Typischerweise testet man in einer Testsuite mehrere Klassen oder ein gesamtes Package. Wichtige Operationen der Klasse TestSuite: TestSuite (ZZZTest.class) Konstruktor konvertiert Testklasse intestsuite statictest suite() gibt eine Instanz von TestSuite oder von TestCase zurück addtestsuite(zzztest.class) fügt eine Testklasse zu einer Suite hinzu Softwaretest Ingo Dageförde 36

37 Test-gesteuerter Entwurf Neue Software-Entwurfstechniken stellen das Testen vor das Implementieren des Programms: ExtremeProgramming, Test-first Programming, Agile Software Development Schritte des Test-gesteuerten Entwurfs: 1. Erstelle UML-Diagramm 2. Entwerfe einen Test für eine Methode 3. Schreibe möglichst einfachen Code, bis der Test nicht mehr fehlschlägt 4. Wiederhole 2. und 3. bis alle Methoden des Klassendiagramms implementiert sind. Dabei wird häufig der Code (und manchmal der Test) restrukturiert ( Refactoring ). Jedes Mal werden alle Tests durchgeführt, um sicher zu stellen, dass die Coderestrukturierung nicht zu Fehlern im alten Code geführt hat Softwaretest Ingo Dageförde 37

38 Zusammenfassung Beim Testen unterscheidet man zwischen Unit-, Modul-, Integrations-, System-, Performance und Funktionalen Tests. Beim Whitebox-Test werden Tests anhand der Programmstruktur entworfen, beim Blackbox-Test zählt nur die Spezifikation. JUnit ist ein Framework zur automatischen Ausführung von Unit-Tests Beim Test-gesteuerten Entwurf werden zuerst die UML-Diagramme und die Tests entworfen und dann die Programme geschrieben Softwaretest Ingo Dageförde 38

39 Links Softwaretest Ingo Dageförde 39

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

Testen 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

Mehr

Testen 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 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

Mehr

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

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Whitebox-Test. Unit-Test 2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 3 4 Testen

Mehr

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

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen 2 Ziele Testen mit JUnit Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 12/04 3 4 Testen

Mehr

JUnit. Software-Tests

JUnit. Software-Tests JUnit Software-Tests Übersicht Einleitung JUnit Jia Li Grundlegendes Diana Howey Hendrik Kohrs Praktische Einbindung Benjamin Koch Zili Ye Einleitung in allgemeines Testen Automatische Tests Testen ist

Mehr

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Swp08-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,

Mehr

JUnit - 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 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

Mehr

Software Engineering I Prof. Dr. Martin Glinz. Fallstudie: Ariane Flug 501. Universität Zürich Institut für Informatik

Software Engineering I Prof. Dr. Martin Glinz. Fallstudie: Ariane Flug 501. Universität Zürich Institut für Informatik Software Engineering I Prof. Dr. Martin Glinz Fallstudie: Ariane Flug 501 Universität Zürich Institut für Informatik Was geschah mit Flug 501? So hätte es aussehen sollen......und so sah es tatsächlich

Mehr

Das Test-Framework JUnit ETIS SS04

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

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-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

Mehr

Unit Testing mit JUnit. Dr. Andreas Schroeder

Unit Testing mit JUnit. Dr. Andreas Schroeder 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?

Mehr

Testen mit JUnit. Motivation

Testen 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

Mehr

Programmiertechnik II

Programmiertechnik 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

Mehr

Unit Tests in der Testgetriebenen Entwicklung

Unit 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ß

Mehr

Thema: Testen von objektorientierter Software

Thema: 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:

Mehr

Programmierung 2 Studiengang MI / WI

Programmierung 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

Mehr

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Unit 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

Mehr

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

Testen 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

Mehr

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

Unit-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/

Mehr

Unit Tests mit Junit 4. Dario Borchers

Unit 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

Mehr

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

Programmieren 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.

Mehr

Testgetriebene Entwicklung mit JUnit4

Testgetriebene Entwicklung mit JUnit4 Testgetriebene Entwicklung mit JUnit4 Seminarvortrag im Fach Fortgeschrittenes Programmieren in Java, Dozent: Prof. Klinker Datum: 30.04.2010 Referent: Marius Schmeding Ausgangsfragen... Wie testet man

Mehr

Programmierung 2 Studiengang MI / WI

Programmierung 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

Mehr

Unit Testing, SUnit & You

Unit 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

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes 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

Mehr

Software-Engineering Software-Management

Software-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

Mehr

SEP 114. Design by Contract

SEP 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

Mehr

Testen von Softwaresystemen. 13. Januar 2015

Testen von Softwaresystemen. 13. Januar 2015 Testen von Softwaresystemen 13. Januar 2015 Überblick Was umfasst das Testen von Software? Warum sollte man Software testen? Motivation für Software-Tests Wie sollte man Software testen? Grundlegende Teststrategien

Mehr

Software - Testung ETIS SS05

Software - Testung ETIS SS05 Software - Testung ETIS SS05 Gliederung Motivation Was ist gute Software? Vorurteile gegenüber Testen Testen (Guidelines + Prinzipien) Testarten Unit Tests Automatisierte Tests Anforderungen an Testframeworks

Mehr

Unit Tests und Fehlersuche

Unit 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

Mehr

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Testen von graphischen Benutzeroberflächen. 26. Juni 2013 Testen von graphischen Benutzeroberflächen 26. Juni 2013 Überblick Testarten Methoden-, Klassen-, Komponenten-, Systemtests Motivation für automatisches Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 05/03 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel

Mehr

Das automatisierte Testen mit JUnit

Das 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

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

Testgetriebene Webentwicklung mit PHPUnit

Testgetriebene Webentwicklung mit PHPUnit Testgetriebene Webentwicklung mit PHPUnit Oliver Cremerius 17.01.2013 FH AACHEN UNIVERSITY OF APPLIED SCIENCES FACHBEREICH WIRTSCHAFTSWISSENSCHAFTEN WWW.FH-AACHEN.DE Testgetriebene Webentwicklung mit PHPUnit

Mehr

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

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit 1 DYNAMISCHER TEST Whitebox Testen mit JUnit Übersicht 2 1. Grundlagen des Unittests 1. Units 2. Unit Testing 2. Testverfahren 1. Blackbox 2. Whitebox 3. Unit Testing mit Eclipse 4. Besprechung der Übungsaufgabe

Mehr

Systematisches Testen

Systematisches 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

Mehr

Programmieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik

Programmieren. JUnit-Tests. Heusch -- Ratz --  Institut für Angewandte Informatik Programmieren JUnit-Tests Heusch -- Ratz -- KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test-driven development

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

am Beispiel von JUnit

am 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

Mehr

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Testen von graphischen Benutzeroberflächen. 24. Juni 2015 Testen von graphischen Benutzeroberflächen 24. Juni 2015 Überblick Motivation für das automatische Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien für GUIs Capture / Replay Testmethode

Mehr

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Programmierprojekt. 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

Mehr

Spezifikation und Test: Zusicherungen in Klassendiagrammen

Spezifikation und Test: Zusicherungen in Klassendiagrammen Spezifikation und Test: Zusicherungen in Klassendiagrammen Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele OCL, die Object Constraint Language, kennen lernen Lernen

Mehr

Java 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 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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einfü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

Mehr

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

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

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

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen zu Schnittstellen Was bedeutet Orthogonalität / Separation of Concerns?

Mehr

Test-driven development JUnit-Test. Lars Varain

Test-driven development JUnit-Test. Lars Varain Test-driven development JUnit-Test Lars Varain Inhalt Test-driven Development (TDD) Junit4 Beispiel Inhalt Test-driven Development (TTD) Warum TDD? Zyklus Ausnahmebehandlung Junit4 Beispiel Inhalt Test-driven

Mehr

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Allgemein: 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:

Mehr

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

Diplomarbeit. 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

Mehr

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Info: 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

Mehr

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

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012 Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen

Mehr

JUnit. Unit testing unter Java

JUnit. 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.

Mehr

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

SOFTWARE 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

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Software Engineering in der Praxis Praktische Übungen Dirk Wischermann Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 18. Dezember 2006 Inhalt Nachlese

Mehr

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

Web-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

Mehr

Warum ist Ariane 5 beim Erstflug explodiert?

Warum ist Ariane 5 beim Erstflug explodiert? Warum ist Ariane 5 beim Erstflug explodiert? Was geschah mit Flug 501? Software Engineering I Fallstudie Ariane Flug 501 1998 by Martin Glinz 1 Chronik der Ereignisse Die Software für das Trägheitsnavigationssystem

Mehr

Testphase. Das Testen

Testphase. 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

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Softwaretechnik. Vertretung von Prof. Dr. Blume Fomuso Ekellem WS 2011/12

Softwaretechnik. Vertretung von Prof. Dr. Blume Fomuso Ekellem WS 2011/12 Vertretung von Prof. Dr. Blume WS 2011/12 Inhalt Test, Abnahme und Einführung Wartung- und Pflegephase gp Vorlesung Zusammenfassung Produkte und Recht (Folien von Prof. Blume) 2 , Abnahme und Einführung

Mehr

Programmierprojekt: So0ware Tests. Anne6e Bieniusa Sommersemester 2017

Programmierprojekt: So0ware Tests. Anne6e Bieniusa Sommersemester 2017 Programmierprojekt: So0ware Tests Anne6e Bieniusa Sommersemester 2017 Testen Kernfrage: Erfüllt die So0ware ihre Anforderungen / SpezifikaGon? FunkGonale Anforderungen Korrekte Ergebnisse bei Berechnungen

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Beuth Hochschule Java-Testprogramme mit JUnit schreiben WS11/12

Beuth 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

Mehr

Markus Wichmann. Testen von Java Code mit. JUnit

Markus 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

Mehr

Code verifizieren mittels

Code 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

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Kurzanleitung JUnit. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen

Kurzanleitung 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

Mehr

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

,$ -. +0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )! *+*+ *,$ -.! / -#$%$. #$%'' $ () "+0 *+*+ 4 *+*+ 1 2$ #$%$! 1 2$3 )! 1 *+*+ $& #$%'!' '!' 5 1! 1 4$5%! 1 63$ 1 $7$! 1 3! 1 77 8'7 1 /!$' 1 83% *+*+ 0 #$%'' '' #$%'' ''$' )%! $' #$% 5 87 $ 8$! 7$+ 1 #$%9$

Mehr

Qualitätsmanagement im Projekt

Qualitätsmanagement im Projekt Software-Engineering Qualitätsmanagement im Projekt Vorlesung im Wintersemester 2008/2009 Fakultät Wirtschaftsinformatik Klaus Mairon, M.Sc. Inhalte Messen und Bewerten: Metriken in der Qualitätssicherung

Mehr

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

Systematisches 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

Mehr

4 Testgetriebene Entwicklung mit PHPUnit

4 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.

Mehr

Software Engineering. Ariane Flug 501! Fallstudie

Software Engineering. Ariane Flug 501! Fallstudie Martin Glinz Thomas Fritz Software Engineering Fallstudie Ariane Flug 501! 2005-2013 Martin Glinz. Alle Rechte vorbehalten. Speicherung und Wiedergabe für den persönlichen, nicht kommerziellen Gebrauch

Mehr

Testen Prinzipien und Methoden

Testen Prinzipien und Methoden Testen Prinzipien und Methoden ALP 2 SS2002 4.7.2002 Natalie Ardet Definition Im folgenden gilt: Software = Programm + Daten + Dokumentation Motivation Software wird immer mehr in Bereichen eingesetzt,

Mehr

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

Komponententest. 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

Mehr

Test-Strategien. Grundsätzliches Blackbox-Testen Whitebox-Testen Graybox-Testen Ablauf von Tests Zusammenfassung. HS Mannheim

Test-Strategien. Grundsätzliches Blackbox-Testen Whitebox-Testen Graybox-Testen Ablauf von Tests Zusammenfassung. HS Mannheim Test- Grundsätzliches - - - Ablauf von Tests Grundsätzliche Test- -Tests Äquivalenzklassenbildung Randwertanalyse -Tests Man unterscheidet verschiedene Überdeckungsgrade: Statement Coverage Decision Coverage,

Mehr

Softwareentwicklungspraktikum Sommersemester 2007. Testdokumentation

Softwareentwicklungspraktikum Sommersemester 2007. Testdokumentation Softwareentwicklungspraktikum Sommersemester 2007 Testdokumentation Auftraggeber Technische Universität Braunschweig

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 10. Vorlesung 1 Test...(4) Oberflächentests testen die Benutzerschnittstelle des Systems, nicht nur auf Fehlerfreiheit sondern z.b. auch auf Konformität mit

Mehr

Systematisches Testen von Software

Systematisches Testen von Software Programmierung Systematisches Testen von Software Markus Eckstein Systematika Information Systems GmbH Kurfürsten-Anlage 36 69115 Heidelberg markus.eckstein@systematika.com Zusammenfassung Die wichtigsten

Mehr

Testen mit JUnit. Softwareengineering. Verfasser: Ronny Boost, Michael Künne

Testen mit JUnit. Softwareengineering. Verfasser: Ronny Boost, Michael Künne Testen mit JUnit Softwareengineering Verfasser: Ronny Boost, BA Horb Studiengang: IT Jahrgang: 2003 Inhaltsverzeichnis 1 Einleitung oder Was ist JUnit... 3 2 Testarten... 4 2.1 Unit-Test... 5 2.2 Integrationstest...

Mehr

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

5. Dokumentieren und Testen Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 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:

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 9. Vorlesung 1 Pläne Kein Plan überlebt die erste Feindberührung - Feldmarschall Helmuth von Moltke Prognosen sind schwierig, besonders wenn sie die Zukunft

Mehr

Der EMF-generierte Code. 7. November 2012

Der 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

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

leicht zu schreiben sein. Wenn ein Test nicht leicht zu schreiben ist, werden wir ihn nicht schreiben.

leicht zu schreiben sein. Wenn ein Test nicht leicht zu schreiben ist, werden wir ihn nicht schreiben. PHPUnit Eine kurze Einführung vom Frank Staude vorgetragen beim Treffen der PHP Usergroup Hannover am 02.11.2006 Warum Testen? Jeder von uns, der programmiert, macht auch Fehler. Es

Mehr

Qualitätssicherung von Software am Beispiel von Unit Testing. Klaus Kusche, Mai 2012

Qualitätssicherung von Software am Beispiel von Unit Testing. Klaus Kusche, Mai 2012 Qualitätssicherung von Software am Beispiel von Unit Testing Klaus Kusche, Mai 2012 Inhalt Motivation Definition von Unit Tests, Einordnung in der QA, Nutzen Einordnung im V-Modell (==> Tafel) Inhalt,

Mehr

Komponenten-basierte Entwicklung Teil 6: Einführung in JUnit

Komponenten-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,

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Praktische Übung 'JUnit-Test'

Praktische Ü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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Einfaches Programmtesten

Einfaches Programmtesten http://www.constructionphotography.com Einfaches Programmtesten OOPM, Ralf Lämmel Naives Testen versus systematisches Testen (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 76 (C) Ralf Lämmel, OOPM,

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Design by Contract with JML

Design by Contract with JML Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC

Mehr

Software Engineering II (IB) Testen von Software / Modultests

Software Engineering II (IB) Testen von Software / Modultests Testen von Software / Modultests Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Programm-Tests Tests sollen zeigen, dass ein Programm das tut was es tun soll sowie

Mehr

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

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite! JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Testen. SEPR Referat: Testen - Oliver Herbst

Testen. SEPR Referat: Testen - Oliver Herbst Testen Inhalt 1. Grundlagen des Testens 2. Testen im Softwarelebenszyklus 3. Statischer Test 4. Dynamischer Test 5. Besondere Tests 2 1. Grundlagen des Testens 3 Grundlagen des Testens Motivation erfüllt

Mehr

Testgesteuert Entwickeln mit JUnit 4

Testgesteuert Entwickeln mit JUnit 4 Testgesteuert Entwickeln mit JUnit 4 Tests nebenbei automatisieren Christoph Knabe Beuth-Hochschule für Technik Berlin Testgesteuert Entwickeln mit JUnit4, Christoph Knabe 2002, BHT Berlin, FB VI, 2016-10-20,

Mehr

Softwaretests. verschiedene Testformen Testen im V-Modell: Anwendungsszenarien. Tests. Tests. Tests. Anforderungs- definition. Abnahmetest.

Softwaretests. verschiedene Testformen Testen im V-Modell: Anwendungsszenarien. Tests. Tests. Tests. Anforderungs- definition. Abnahmetest. Softwaretests verschiedene Testformen Testen im V-Modell: Anforderungs- definition Anwendungsszenarien Abnahmetest Grobentwurf Tests Systemtest Feinentwurf Tests Integrationstest Implementierung Tests

Mehr