Software Engineering in der Praxis



Ähnliche Dokumente
Funktionales Testen. Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg

Software Engineering in der Praxis

JUnit 4 Tutorial. Wolfgang Stöttinger

Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Testgetriebene Entwicklung mit JUnit4

Systematisches Testen

Programmierung 2 Studiengang MI / WI

Test-Driven Design: Ein einfaches Beispiel

Java Schulung. Objektorientierte Programmierung in Java Teil IV: Testen mit JUnit. Prof. Dr. Nikolaus Wulff

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Testing & Logging DBS. Tobias Lingelmann SEP

Testen von Softwaresystemen. 13. Januar 2015

Kapitel 6.2 Testwerkzeuge

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Programmierung 2 Studiengang MI / WI

JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer.

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken

Software-Engineering Software-Management

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

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

Effizientes Programmieren

JUnit 4 Ein neuer Meilenstein?

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

Test-Driven Design: Ein einfaches Beispiel

Software Engineering in der Praxis

Testgetriebene Entwicklung

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

Thema: Testen von objektorientierter Software

Das Test-Framework JUnit ETIS SS04

JUnit. Unit testing unter Java

Kurzanleitung JUnit I S A. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen

PT2. Unit06: Modultests & JUnit. Sven Köhler Hasso-Plattner-Institut

Einführung in die Softwaretechnik

Software Engineering in der Praxis

OOP Aufgabenblatt November 2013

Softwaretechnik 1 Vorlesung. Werkzeuge. Prof. Dr. Bernhard Rumpe Software Systems Engineering Technische Universität Braunschweig

Requirements Engineering

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

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

Enterprise JavaBeans Überblick

OOSE_02E Testen mit BlueJ/JUnit 4

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

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

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

OOSE4 Testen mit BlueJ/JUnit 4

Fortgeschrittene Programmierungsmethoden

Programmentwicklung in Java: Javadoc & JUnit

Testen von grafischen Benutzeroberflächen

Enterprise JavaBeans Überblick: 8. Test-Driven Development. 8.1 Einleitung 8.2 Beispiel 8.3 Anwendung mit Eclipse und dem JBoss Application Server

JUnit. Software-Tests

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

Software Entwicklung 1. Spezifikation von Prozedureigenschaften. Spezifikation prozeduraler Programme. Warum Spezifikationen?

Kurzanleitung JUnit. 1 Grundlagen. 1.1 Begriffsdefinitionen. 1.2 Empfehlungen

Softwaretechnik 1 Übung 6

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Programmiertechnik II

Übung zur Vorlesung Einführung in Software Engineering

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Einführung in die testgetriebene Entwicklung (TDD)

Seminar Simulation und Bildanalyse mit Java, SS2004 Tests in Informatik und Statistik Modul-Tests mit JUnit

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

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

A very very very very short intro to. Testing

Testen Prinzipien und Methoden

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

Semesterprojekt Semantic Text Browsing. Ulf Leser, Philippe Thomas (, Lars Döhling)

Arbeiten mit Testframeworks

Unit Tests mit Junit 4. Dario Borchers

Software Engineering in der Praxis

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Programmierprojekt: So0ware Tests. Anne6e Bieniusa Sommersemester 2017

Unit Tests und Fehlersuche

Software Engineering. 3. JUnit und ANT. Franz-Josef Elmer, Universität Basel, HS 2012

Objektorientierte Programmierung

TESTEN OBJEKTORIENTIERTER PROGRAMME MIT JUNIT

Einfaches Programmtesten

Testgetriebene Entwicklung

Klassenvariablen und Klassenmethoden

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

Literatur und Web. Komponenten WS 2014/15 Teil 6/JUnit

Kapitel 5.2 Testwerkzeuge

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric

Bessere Tests mit JUnit 4.x Marc Philipp. 1. Juli 2010

Software Engineering in der Praxis

Enterprise JavaBeans Überblick

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 1

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

Unit Tests in der Testgetriebenen Entwicklung

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Einstieg in die Informatik mit Java

Markus Wichmann. Testen von Java Code mit. JUnit

ASIL-relevante SW-Module identifiziert! Was nun?

Software Engineering in der Praxis

Testen mit JUnit. Motivation

Transkript:

Software Engineering in der Praxis Praktische Übungen Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 1 / 17

Funktionales Testen Matthias Meitner Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 2 / 17

1 Inhalt 2 Nachlese 3 Testen 4 Ablauf von Tests 5 Testarten 6 JUnit Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 3 / 17

Nachlese Software-Metriken und Bugpatterns Allgemeine Betrachtungen zum Messen Zweck der Software-Messung Together-Metriken: LOC Halstead-Metriken McCabe-Metrik Fehlersuche mit FindBugs Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 4 / 17

Testen von Code Definition Ausführung eines Programms in einer definierten Umgebung, um: Fehler zu finden (Programmierfehler, algorithmische Fehler, Nichterfüllung der Spezifikation,... ) Zuverlässigkeitskennwerte zu ermitteln Tests garantieren keine Fehlerfreiheit! Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 5 / 17

Testen von Code Definition Ausführung eines Programms in einer definierten Umgebung, um: Fehler zu finden (Programmierfehler, algorithmische Fehler, Nichterfüllung der Spezifikation,... ) Zuverlässigkeitskennwerte zu ermitteln Tests garantieren keine Fehlerfreiheit! Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 5 / 17

Ablauf von Tests 1 Testplanung (Testkriterien, Personal, Budget,... ) 2 Testerstellung: Auswahl der Eingabedaten (Testdaten) und eines Prüfungsverfahrens für die Ausgabedaten 3 Testdurchführung: Ausführung des Programms mit ausgewählten Eingabedaten 4 Testauswertung: Vergleich der Ausgabedaten mit den erwarteten Ergebnissen Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 6 / 17

Testarten Tests können in zwei Kategorien eingeteilt werden: Black-Box-Tests White-Box-Tests Testdaten werden aus der Spezifikation abgeleitet. Ziel: Übereinstimmung mit Spezifikation prüfen Testdaten werden aus dem Quellcode abgeleitet. Ziel: Auswirkungen aller Code-Abschnitte identifizieren Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 7 / 17

Testarten Tests können in zwei Kategorien eingeteilt werden: Black-Box-Tests White-Box-Tests Testdaten werden aus der Spezifikation abgeleitet. Ziel: Übereinstimmung mit Spezifikation prüfen Testdaten werden aus dem Quellcode abgeleitet. Ziel: Auswirkungen aller Code-Abschnitte identifizieren Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 7 / 17

Black-Box-Tests Werden auch funktionale Tests genannt Tests können bereits vor der Implementation definiert werden. Möglichkeiten, Testdaten abzuleiten: Äquivalenzklassentest Grenzwerttests Error Guessing Zufallsdaten Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 8 / 17

Black-Box-Tests Äquivalenzklassentest Teile die Eingabemenge in Klassen, so dass alle Eingaben einer Klasse»ähnliches Ausgabeverhalten hervorrufen«sollen. Wähle dann aus jeder Klasse Repräsentanten als Testdaten. Grenzwerttests Wähle Testdaten am Rande der Äquivalenzklassen (Voraussetzung: Es ex. Ordnung auf der Menge der Eingabedaten). Error Guessing Spezifikationsbezogener Fehlererwartungstest (aus Erfahrung) Zufallsdaten Wähle Testdaten nach statistischen Verteilungen. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 9 / 17

Black-Box-Tests Äquivalenzklassentest Teile die Eingabemenge in Klassen, so dass alle Eingaben einer Klasse»ähnliches Ausgabeverhalten hervorrufen«sollen. Wähle dann aus jeder Klasse Repräsentanten als Testdaten. Grenzwerttests Wähle Testdaten am Rande der Äquivalenzklassen (Voraussetzung: Es ex. Ordnung auf der Menge der Eingabedaten). Error Guessing Spezifikationsbezogener Fehlererwartungstest (aus Erfahrung) Zufallsdaten Wähle Testdaten nach statistischen Verteilungen. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 9 / 17

Black-Box-Tests Äquivalenzklassentest Teile die Eingabemenge in Klassen, so dass alle Eingaben einer Klasse»ähnliches Ausgabeverhalten hervorrufen«sollen. Wähle dann aus jeder Klasse Repräsentanten als Testdaten. Grenzwerttests Wähle Testdaten am Rande der Äquivalenzklassen (Voraussetzung: Es ex. Ordnung auf der Menge der Eingabedaten). Error Guessing Spezifikationsbezogener Fehlererwartungstest (aus Erfahrung) Zufallsdaten Wähle Testdaten nach statistischen Verteilungen. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 9 / 17

Black-Box-Tests Äquivalenzklassentest Teile die Eingabemenge in Klassen, so dass alle Eingaben einer Klasse»ähnliches Ausgabeverhalten hervorrufen«sollen. Wähle dann aus jeder Klasse Repräsentanten als Testdaten. Grenzwerttests Wähle Testdaten am Rande der Äquivalenzklassen (Voraussetzung: Es ex. Ordnung auf der Menge der Eingabedaten). Error Guessing Spezifikationsbezogener Fehlererwartungstest (aus Erfahrung) Zufallsdaten Wähle Testdaten nach statistischen Verteilungen. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 9 / 17

White-Box-Tests Werden auch strukturelle Tests genannt Kriterien, für die Erzeugung der Testdaten: Kontrollflussabdeckung (Pfadüberdeckung, Anweisungsüberdeckung, Verzweigungsüberdeckung) Datenflussabdeckung Tests können erst nach der Implementation definiert werden. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 10 / 17

White-Box-Tests Werden auch strukturelle Tests genannt Kriterien, für die Erzeugung der Testdaten: Kontrollflussabdeckung (Pfadüberdeckung, Anweisungsüberdeckung, Verzweigungsüberdeckung) Datenflussabdeckung Tests können erst nach der Implementation definiert werden. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 10 / 17

White-Box-Tests Werden auch strukturelle Tests genannt Kriterien, für die Erzeugung der Testdaten: Kontrollflussabdeckung (Pfadüberdeckung, Anweisungsüberdeckung, Verzweigungsüberdeckung) Datenflussabdeckung Tests können erst nach der Implementation definiert werden. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 10 / 17

White-Box-Tests Werden auch strukturelle Tests genannt Kriterien, für die Erzeugung der Testdaten: Kontrollflussabdeckung (Pfadüberdeckung, Anweisungsüberdeckung, Verzweigungsüberdeckung) Datenflussabdeckung Tests können erst nach der Implementation definiert werden. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 10 / 17

JUnit als Framework für funktionale Tests Erhältlich unter www.junit.org Ziele: Normierung der Testimplementierung, damit Vereinfachung der Testdurchführung Auf Java beschränkt Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 11 / 17

JUnit Grobe Vorgehensweise 1 Annotiere Methoden, die Tests durchführen, mit @Test. 2 Formuliere innerhalb dieser Testmethoden die Bedingung für erfolgreiches Testergebnis. 3 Die JUnit-Engine findet per Reflections die annotierten Testmethoden, führt sie aus und zeigt an, ob sie erfolgreich waren oder nicht. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 12 / 17

JUnit Grobe Vorgehensweise 1 Annotiere Methoden, die Tests durchführen, mit @Test. 2 Formuliere innerhalb dieser Testmethoden die Bedingung für erfolgreiches Testergebnis. 3 Die JUnit-Engine findet per Reflections die annotierten Testmethoden, führt sie aus und zeigt an, ob sie erfolgreich waren oder nicht. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 12 / 17

JUnit Grobe Vorgehensweise 1 Annotiere Methoden, die Tests durchführen, mit @Test. 2 Formuliere innerhalb dieser Testmethoden die Bedingung für erfolgreiches Testergebnis. 3 Die JUnit-Engine findet per Reflections die annotierten Testmethoden, führt sie aus und zeigt an, ob sie erfolgreich waren oder nicht. Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 12 / 17

JUnit Beispiel Klasse Calculator public double sum(double a, double b) public double diff(double a, double b) public double mult(double a, double b) public double div(double a, double b) public void setmem(double a) public double getmem() public void clearmem() Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 13 / 17

JUnit Beispiel Testklasse CalculatorTest import static org.junit.assert. ; 2 import org.junit.after; import org.junit.before; 4 import org.junit.test; 6 public class CalculatorTest { private Calculator calculator; 8 @Before public void setup() { 10 calculator = new Calculator(); } 12 @Test public void testsum() { 14 double a = 5.6, b = 6.5; assertequals(12.1, calculator.sum(a, b), 0.1); 16 } Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 14 / 17

JUnit Beispiel Testklasse CalculatorTest (Fortsetzung) @Test(expected = IllegalArgumentException.class) 2 public void testdiv() { double a = 3.0; 4 double b = 0.0; 6 calculator.div(a, b); } Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 15 / 17

Tests starten Aus der Kommandozeile mit: java org.junit.runner.junitcore CalculatorTest Aus der IDE: In Eclipse, das Projekt starten mit»run As.../JUnit Test«Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 16 / 17

JUnit Online-Ressourcen Primärquelle: www.junit.org Javadocs: junit.sourceforge.net/javadoc_40/index.html Meitner, Spisländer FAU Erlangen-Nürnberg Funktionales Testen 17 / 17