View
135
Download
1
Category
Preview:
Citation preview
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
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
3
0. Vorstellung
Referenten:
Simone WeiglMichael Kaleja
Daniel FussChristian Adler
4
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
1. Testvorbereitungen
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
5
1. Testvorbereitungen
Überblick
[B1]
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
6
1.1 Planungsphase [T2]
Netzplan Gehört in den Bereich des Projektmanagement
[B2]
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
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
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
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
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
12
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
2. 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
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]
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
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
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
18
Beispiel zu JUnit
2.1 JUnit
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
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:
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
21
Beispiele zu PyUnit und DocString
2.2 Python
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
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]
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
24
Beispiel zu CppUnit
2.3 CppUnit
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler
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
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
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/
VIELEN DANK FÜR IHRE AUFMERKSAMKEIT
Recommended