Tutorial im Rahmen des Software(technik)praktikums

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
der Universität Oldenburg
Klassen - Verkettete Liste -
Einführung in die Informatik: Programmierung und Software-Entwicklung
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Einführung in Berechenbarkeit und Formale Sprachen
Design by Contract with JML - Teil 2
Software(technik)praktikum Tutorial: Subversion (SVN)
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Objektorientierte Programmierung JDK-Klassenbibliothek
Das Test-Framework JUnit
Das Test-Framework JUnit
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
4. Design Gliederung: Einführung Anforderungsdefinition Analyse Design
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. Funktionsorientierte Organisation.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. funktionsorientierte Organisation.
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
Bestimmung des ggT zweier Zahlen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Software(technik)praktikum Tutorial: Einführung in GEF
Testing using Mock Obejcts
Stellen Sie sich vor: .....kurz vor der Einführung, ein neues Produktes / eine neue Software.....
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Test Driven Development - Romano Adler-
Automated Software Testing
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
Mahmoud Zoabi Khaled Isa
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
ActionScript 3 (AS3) Workshop für Einsteiger. AS3 WorkshopGregor Sklorz Me Gregor Sklorz o Dipl. Ing. der Medieninformatik o Geb: o Stepstones:
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Equals, Hashcode und CompareTo Micha Kessler
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
Learning By Doing Übungen GPanel Quadratfenster mit pixelunabhängigen Windowkoordinaten (doubles) Zweckmässige Standardwerte (defaults) 01 x 0 1 y // WbzEx5.java.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
TDD mit MSTest Stefan Lieser Web:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
 Präsentation transkript:

Tutorial im Rahmen des Software(technik)praktikums Testen Tutorial im Rahmen des Software(technik)praktikums

Softwaretest wird am häufigsten eingesetzt Grundlagen (1) Softwaretest ist ein fundamentales Element in der Softwarequalitätssicherung Softwaretest wird am häufigsten eingesetzt Viele Organisationen benötigen 40-50 % der Entwicklungszeit für das Testen Software(technik)praktikum - Tutorial Testen Stand: 2010

Testen befasst sich mit dem Auffinden, dass Fehler existieren. Grundlagen (2) Testen befasst sich mit dem Auffinden, dass Fehler existieren. Debuggen befasst sich damit zu finden, wo genau der Fehler enthalten ist (Code, Design, Anforderungen) und den Fehler zu beheben. Auch wenn die besten Review-Methoden eingesetzt werden, ist Testen wichtig. Software(technik)praktikum - Tutorial Testen Stand: 2010

„A successful test in one that breaks the software.“ [McConnell 1993] Grundlagen (3) „A successful test in one that breaks the software.“ [McConnell 1993] Ein guter Test findet also Fehler, die bisher unentdeckt waren. Testen kann nicht die Abwesenheit von Fehlern zeigen! Für komplexe Software ist vollständiges Testen nicht möglich. Software(technik)praktikum - Tutorial Testen Stand: 2010

Statisch, d.h. Code wird nicht ausgeführt: Testtechniken Statisch, d.h. Code wird nicht ausgeführt: Code-Walkthrough Review Dynamisch, d.h. Code wird ausgeführt mit Testdaten: Black-Box Kein Einblick in Code Testfälle werden anhand von Spezifikationen und Schnittstellen erstellt White-Box Analyse des Codes, um Testfälle zu erstellen Software(technik)praktikum - Tutorial Testen Stand: 2010

Testschritte Unit code . Integrated modules Functioning system Integration System Performance Acceptance Installation Unit code . Integrated modules Functioning system Verified, validated software Accepted SYSTEM IN USE! Design specifications functional requirements Other Customer specification User environment [Pfleeger 2001] Software(technik)praktikum - Tutorial Testen Stand: 2010

Unit-Tests werden typischerweise vom Entwickler selbst ausgeführt. Unit-Test testet eine individuelle Programmeinheit auf korrektes Verhalten. Was ist eine Unit? „Kleinste kompilierbare Einheit“ „Stand alone procedure of function“ „Kann von einer einzelnen Person implementiert werden“ Unit-Tests werden typischerweise vom Entwickler selbst ausgeführt. Software(technik)praktikum - Tutorial Testen Stand: 2010

Unit-Testplan am Beispiel Unit zur Errechnung des größten gemeinsamen Teilers (GGT) zweier Integer-Zahlen (nicht beide 0) GGT(a,b) = c c ist ein positiver Integer-Wert c ist gemeinsamer Teiler von a und b c ist größer als alle gemeinsamen Teiler von a und b Beispiele: GGT(45,27) = 9 GGT(7, 13) = 1 GGT(-12, 15) = 3 GGT(13, 0) = 13 GGT(0,0) nicht definiert Software(technik)praktikum - Tutorial Testen Stand: 2010

Finden der Testfälle: Algorithmus schreiben Unit-Testplan GGT Finden der Testfälle: Algorithmus schreiben Pfadgraph erstellen und mit Überdeckungskriterium analysieren (White-Box) Äquivalenzklassen bestimmen Grenzwerte bestimmen Testfälle auswählen Software(technik)praktikum - Tutorial Testen Stand: 2010

Testfälle für GGT (1. Algorithmus) note: Based on Euclid’s algorithm function gcd (int a, int b) { int temp, value; a := abs(a); b := abs(b); if (a = 0) then value := b; // b is the GCD else if (b = 0) then raise exception; else loop temp := b; b := a mod b; a := temp; until (b = 0) value := a; end if; return value; end gcd Software(technik)praktikum - Tutorial Testen Stand: 2010

Testfälle für GGT (1. Graph) note: Based on Euclid’s algorithm function gcd (int a, int b) { int temp, value; a := abs(a); b := abs(b); if (a = 0) then value := b; // b is the GCD else if (b = 0) then raise exception; else loop temp := b; b := a mod b; a := temp; until (b = 0) value := a; end if; return value; end gcd 1 5 7 6 9 Basic Path Set 4 Pfade (1,5,6,17,18), (1,5,7,18), (1,5,7,9,10,17,18), (1,5,7,9,10,9,10,17,18) 10 17 18 Software(technik)praktikum - Tutorial Testen Stand: 2010

Äquivalenzklassen Grenzwerte Testfälle für GGT (3. + 4.) Äquivalenzklassen Negative Werte, positive Werte und 0 a < 0 and b < 0, a < 0 and b > 0, a > 0 and b < 0 a > 0 and b > 0, a = 0 and b < 0, a = 0 and b > 0 a > 0 and b = 0, a > 0 and b = 0, a = 0 and b = 0 Grenzwerte a = -231, -1, 0, 1, 231-1 and b = -231, -1, 0, 1, 231-1 Software(technik)praktikum - Tutorial Testen Stand: 2010

Testfälle für GGT (5. Testfälle wählen) Software(technik)praktikum - Tutorial Testen Stand: 2010

Jetzt haben wir die Testfälle, aber wie testen wir sie? Testautomatisierung Jetzt haben wir die Testfälle, aber wie testen wir sie? JUnit-Framework (Plugin für Eclipse) Trennung von Programm-Code und Test-Code Bequemes Schreiben der Unit-Tests Automatische Ausführung Software(technik)praktikum - Tutorial Testen Stand: 2010

JUnit Software(technik)praktikum - Tutorial Testen Stand: 2010

Test Case Method: test[methodname] JUnit TestCase import junit.framework.TestCase; public class MultiPurposeCalculatorTest extends TestCase { private MultiPurposeCalculator cal; public void setUp() { cal = new MultiPurposeCalculator(); } @Test public void testGCD() int expected=1; assertEquals(expected, cal.gcd(17,23)); expected=4; assertEquals(expected, cal.gcd(12, 4)); expected=3; assertEquals(expected, cal.gcd(51,57)); expected=17; assertEquals(expected, cal.gcd(17,34)); Namenskonventionen: Test Case Class: [classname]Test.java Test Case Method: test[methodname] Inzwischen wird statt JUnit 3 die neue Version JUnit 4 verwendet, in der sich einiges geändert hat Gutes Tutorial: http://www.vogella.de/articles/JUnit/article.html http://www4.comp.polyu.edu.hk/~cskwyung/labs/lab4.html Software(technik)praktikum - Tutorial Testen Stand: 2010

assertArrayEquals(byte[] expecteds, byte[] actuals) Asserts (Auszug) http://junit.org/apidocs/org/junit/Assert.html assertArrayEquals(byte[] expecteds, byte[] actuals) assertArrayEquals(char[] expecteds, char[] actuals) assertFalse(boolean condition): Asserts that a condition is false. assertNull(java.lang.Object object): Asserts that an object is null. assertTrue(java.lang.String message, boolean condition): Asserts that a condition is true. … Software(technik)praktikum - Tutorial Testen Stand: 2010

Sammeln der TestCases und automatisches Ausführen aller TestCases JUnit TestSuite import junit.framework.Test; import junit.framework.TestSuite; public class SampleTestSuite extends TestSuite { public static Test suite() { TestSuite suite = new TestSuite("Sample Tests"); // Add one entry for each test class // or test suite. suite.addTestSuite(MultiPurposeCalculatorTest.class); suite.addTestSuite(MultiPurposeCalculatorTest2.class); // For a master test suite, use this pattern. // (Note that here, it's recursive!) suite.addTest(SampleTestSuite2.suite()); return suite; } Sammeln der TestCases und automatisches Ausführen aller TestCases Rechtsklick auf TestSuite oder TestCase und Run As > Junit Test Software(technik)praktikum - Tutorial Testen Stand: 2010

JUnit Failure Trace Software(technik)praktikum - Tutorial Testen Stand: 2010

Units mit Schnittstellen GGT-Unit interagiert nicht mit anderen Units. Andere Units können nicht so isoliert betrachtet werden.  Test Stub Ein temporäre, minimale Implementierung einer Unit Beim Integrieren (Bottom-up) können die Stubs dann durch die getesteten Units ersetzt werden. Software(technik)praktikum - Tutorial Testen Stand: 2010

Testschritte Unit code . Integrated modules Functioning system Integration System Performance Acceptance Installation Unit code . Integrated modules Functioning system Verified, validated software Accepted SYSTEM IN USE! Design specifications functional requirements Other Customer specification User environment [Pfleeger 2001] Software(technik)praktikum - Tutorial Testen Stand: 2010

Testen der funktionalen Anforderungen Systemtest Integriertes System Testen der funktionalen Anforderungen Use Cases als Basis für die Testfallerstellung nehmen Software(technik)praktikum - Tutorial Testen Stand: 2010

Bugtracker: https://trac.cs.upb.de/swtpra2012-XY Bug gefunden – und nun? Bugtracker: https://trac.cs.upb.de/swtpra2012-XY Software(technik)praktikum - Tutorial Testen Stand: 2010

Wir geben für das Praktikum folgende Werkzeuge vor: Testwerkzeuge Wir geben für das Praktikum folgende Werkzeuge vor: JUnit (http://www.junit.org/index.htm) EMMA (http://emma.sourceforge.net/index.html): ein Open-source Testwerkzeug zur Messung von Anweisungsüberdeckungen. Bzw. EclEmma (http://www.eclemma.org/userdoc/index.html): Emma für Eclipse Software(technik)praktikum - Tutorial Testen Stand: 2010

Software(technik)praktikum - Tutorial Testen Stand: 2010