28
SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Embed Size (px)

Citation preview

Page 1: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

SOFTWARE ENGINEERING 3

TESTVORBEREITUNGEN UND UNIT-TEST

Page 2: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

2

Gliederung

0.

1.

2.

3.

Vorstellung

Testvorbereitungen Planungsphase Definitionsphase Implementierungs-, Abnahme-und Einführungsphase Testphasen nach Pol, Koomen und Spillner

Unit-Test JUnit Python CppUnit

Quellen

Page 3: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

3

0. Vorstellung

Referenten:

Simone WeiglMichael Kaleja

Daniel FussChristian Adler

Page 4: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

4

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

1. Testvorbereitungen

Page 5: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

5

1. Testvorbereitungen

Überblick

[B1]

Page 6: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

6

1.1 Planungsphase [T2]

Netzplan Gehört in den Bereich des Projektmanagement

[B2]

Page 7: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

7

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

1.2 Definitionsphase [T2]

Wird vom Auftraggeber erstellt

Wird vom Auftragnehmer erstellt

Lastenheft Pflichtenheft

Lasten- und Pflichtenheft

Page 8: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

8

1.3 Implementierungs-, Abnahme-und Einführungsphase [T2]

Allgemeines zur Implementierung

Folgende Punkte sollten beachtet werden: Konsistenz Modularisierung Versionsverwaltung Kommentare

Page 9: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

9

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

1.3 Implementierungs-, Abnahme-und Einführungsphase [T2]

Automatisierter Test Verfahren:

Test-first Test-driven-

Development

(= zuerst werden die Testfälle

geschrie- ben und dann der Programmcode.)

Zuerst wird der Programm-code geschrieben und danach wird er erst getestet.

Unit-Test Code Review

Allgemeines zum Testen

Page 10: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

10

1.4 Testphasen nach Pol, Koomen und Spillner [T1]

Testplanung: Allgemeine Abwicklung Strategien Ziele und Kriterien Testverfahren Programmiersprache Beendigung Dokumentation Testdaten

Page 11: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

11

1.4 Testphasen nach Pol, Koomen und Spillner [T1]

Weitere Testphasen Testvorbereitung

Umsetzung der Testplanung Testspezifikation Testdurchführung

Dynamisch Statisch

Testauswertung Fehler Alles in Ordnung

Testabschluss Komplett durchlaufen Abbruch

Page 12: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

12

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

2. Unit-Test

Page 13: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

13

2. Unit-Test [T3]

Ausschnitt aus einer Liste von Unit-Test-Abwandlungen: ABAP: ABAP Unit C: CUnit, cfix, Embedded Unit, uCUnit C++: CppUnit, Boost Java: JUnit JavaScript: JSUnit .NET: NUnit PHP: PHPUnit PL/SQL: utPLSQL Python: PyUnit, DocString MATLAB/Simulink: Simulink Design Verifier Smalltalk: SUnit

CppUnitJUnit

PyUnit, DocString

Page 14: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

14

2.1 JUnit [T4, T5, A1]

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

Was ist JUnit? (1/2) JUnit ist ein Framework zum Testen von Java-

Programmen entwickelt von Kent Beck & Erich Gamma

Kent Beck [B3] Erich Gamma [B4]

Page 15: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

15

2.1 JUnit [T4, T5, A1]

Was ist JUnit? (2/2) JUnit basiert auf der Struktur von Smalltalks SUnit, der

Mutter aller Unit Tests. Kent Beck übernahm die Struktur von SUnit und

benutzte sie für das objektorientiere Modell von Java. Der Arbeitsraum wurde die Klasse, aus Variablen

wurden Instanzvariablen und das zu Testende wurde zu Methoden

Besonderheit: Automatisierte Tests, die es damals unter SUnit noch nicht gab

Page 16: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

16

2.1 JUnit [T4, T5, A1]

Funktionsweise von JUnit Kennt nur zwei Ergebnisse:

grün für „Test gelingt“ rot für „Test gescheitert“

Mögliche Ursachen für das Scheitern sind ein Fehler (Error) oder ein falsches Ergebnis (Failure)

Failures werfen eine sogenannte „AssertionFailedError“-Exception

alle anderen Exceptions werden von JUnit als Error interpretiert

Page 17: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

17

2.1 JUnit [T4, T5, A1]

Vorgehensweise bei JUnit Idee : möglichst fehlerarmen Code Ein Programmierer liefert zu seinen Code immer die

passenden JUnit Tests. Bei Änderung des Codes durch andere Programmierer

können sich diese über die mitgelieferten Unit Tests vergewissern, dass das Programm läuft.

Treten nach der Änderung Fehler im Unit Test auf, ist klar, dass der Dritte dafür verantwortlich ist.

=> Korrektur bis Unit Tests wieder „grün“ zeigen

Page 18: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

18

Beispiel zu JUnit

2.1 JUnit

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

Page 19: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

19

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

Im Paket unittest Aus der Idee von JUnit

entstanden und für Python umgesetzt

Autor: Steve Purcell Seit Python 2.1 Eigenständige Python-

module für die Testfälle

2.2 Python [T6, T7]

Im Paket doctest Seit Python 2.1 Testfälle werden in

Docstrings geschrieben Testfälle können aus

dem Interaktivmodus kopiert werden

Ausführbar mit doctest.testmod()

Testfälle im DocString Unit-Test PyUnit

Zwei Modul-Tests, die bereits in die Standardbibliothek von Python integriert sind:

Page 20: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

20

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

Höherer Arbeitsaufwand

2.2 Python [T6, T7]

Test getrennt von Quellcode in eigenen Testklassen

Vollständig in Python-Code geschrieben

Einfacher ausführbar

Vorteile Nachteile

Vergleich von PyUnit zu doctest

Page 21: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

21

Beispiele zu PyUnit und DocString

2.2 Python

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

Page 22: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

22

2.3 CppUnit [T8, T9, T10]

Was ist CppUnit? (1/2) CppUnit ist eine Portierung von JUnit zu C++. Das CppUnit-Projekt basiert auf den ersten

Portierungen von Michael Feathers und Jerome Lacoste

Michael Feathers [B5]

Page 23: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

23

2.3 CppUnit [T8, T9, T10]

Was ist CppUnit? (2/2) Die Community um CppUnit setzt auf beiden Arbeiten

auf und kombinierte sie zu einem Framework, welches auf Solaris/Unix- und Windows-Rechnern läuft.

CppUnit unterstützt Unix Compiler (z.B. GNU C++ Compiler), Microsoft Visual C++ und Borland C++

Besitz u.a. folgende Eigenschaften: XML-Ausgabe mit Elementen für zusätzliche

Angaben Compiler-ähnliche Ausgabe für Integration in IDE Makros zur Realisierung von Test-Suiten Unterstützung von GUI-basierten Test-Runnern

Page 24: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

24

Beispiel zu CppUnit

2.3 CppUnit

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

Page 25: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

25

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

2.1 Fazit Unit-Tests [T4, T5, A1]

Schnelle Überprüfung des Codes

Wiederverwendbarkeit der Tests

Trennung von Code und Tests

Übersichtlichkeit beim Testen

Zusätzliche Methoden und Klassen für das Testen

Unterbricht den Programmier-fluss

Gefahr, zu wenig zu testen, da man davon ausgeht, dass bei grünem Balken der Code fehlerfrei ist

Es können nur solche Fehler entdeckt werden, auf die die Tests ausgelegt sind.

=> grüner Balken ungleich fehlerfreier Code

Vorteile von Unit-Test Nachteile von Unit-Test

Page 26: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

26

3. Quellen

Textquellen:[T1]: http://de.wikipedia.org/wiki/Softwaretest

[T2]: IT-Handbuch für Fachinformatiker, Sascha Kersken, 5. aktualisierte und erweiterte Auflage 2011, Kapitel 11 Software Engineering

[T3]: http://de.wikipedia.org/wiki/Liste_von_Modultest-Software

[T4]: http://de.wikipedia.org/wiki/JUnit

[T5]: http://www.junit.org/

[T6]: http://docs.python.org/library/

[T7]: http://openbook.galileocomputing.de/python/

[T8]: http://cppunit.sourceforge.net/doc/1.11.6/

[T9]: http://de.inforapid.org/

[T10]: http://de.wikipedia.org/wiki/CppUnit

Page 27: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

27

3. Quellen

Bildquellen:[B1]: Software Engineering III (SE), Kapitel 1 Einführung, WS 11/12

[B2]: Eigenerstellung

[B3]: http://upload.wikimedia.org/wikipedia/commons/thumb/5/55/Kent_Beck _no_Workshop_Mapping_XP.jpg/220px-Kent_Beck_no_Workshop_ Mapping_XP.jpg

[B4]: http://javazone.no/incogito/speaker/d5503464-a8c7-41c1-aade-7d256d34d59c/photo

[B5]: http://www.chicagotribune.com/media/photo/2011-03/60045270.jpg

Audioquellen:[A1]: http://www.se-radio.net/2010/09/episode-167-the-history-of-junit-and-the-future-of-testing-with-kent-beck/

Page 28: SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

VIELEN DANK FÜR IHRE AUFMERKSAMKEIT