Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering 3 Testvorbereitungen und Unit-Test

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering 3 Testvorbereitungen und Unit-Test"—  Präsentation transkript:

1 Software Engineering 3 Testvorbereitungen und Unit-Test

2 Gliederung 0. Vorstellung 1. Testvorbereitungen Planungsphase
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 Referenten: Simone Weigl Michael Kaleja Daniel Fuss Christian Adler
0. Vorstellung Referenten: Simone Weigl Michael Kaleja Daniel Fuss Christian Adler Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

4 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] Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

7 1.2 Definitionsphase [T2] Lastenheft Pflichtenheft
Lasten- und Pflichtenheft Lastenheft Pflichtenheft Wird vom Auftraggeber erstellt Wird vom Auftragnehmer erstellt 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 Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

9 1.3 Implementierungs-, Abnahme-und Einführungsphase [T2]
Allgemeines zum Testen Unit-Test Code Review 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. 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 Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

12 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 CppUnit JUnit PyUnit, DocString Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

14 2.1 JUnit [T4, T5, A1] 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 Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

18 2.1 JUnit Beispiel zu JUnit
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

19 2.2 Python [T6, T7] Testfälle im DocString Unit-Test PyUnit
Zwei Modul-Tests, die bereits in die Standardbibliothek von Python integriert sind: Testfälle im DocString Unit-Test PyUnit 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() 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 Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

20 2.2 Python [T6, T7] Vorteile Nachteile Vergleich von PyUnit zu doctest
Test getrennt von Quellcode in eigenen Testklassen Vollständig in Python-Code geschrieben Einfacher ausführbar Höherer Arbeitsaufwand Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

21 2.2 Python Beispiele zu PyUnit und DocString
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 Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

24 2.3 CppUnit Beispiel zu CppUnit
Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

25 2.1 Fazit Unit-Tests [T4, T5, A1]
Vorteile von Unit-Test Nachteile von Unit-Test 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 Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

26 3. Quellen Textquellen: [T1]: [T2]: IT-Handbuch für Fachinformatiker, Sascha Kersken, 5. aktualisierte und erweiterte Auflage 2011, Kapitel 11 Software Engineering [T3]: [T4]: [T5]: [T6]: [T7]: [T8]: [T9]: [T10]: Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

27 3. Quellen Bildquellen: Audioquellen:
[B1]: Software Engineering III (SE), Kapitel 1 Einführung, WS 11/12 [B2]: Eigenerstellung [B3]: _no_Workshop_Mapping_XP.jpg/220px-Kent_Beck_no_Workshop_ Mapping_XP.jpg [B4]: 7d256d34d59c/photo [B5]: Audioquellen: [A1]: future-of-testing-with-kent-beck/ Software Engineering 3 - Gruppe 1 - Weigl, Kaleja, Fuss, Adler

28 Vielen Dank für Ihre Aufmerksamkeit


Herunterladen ppt "Software Engineering 3 Testvorbereitungen und Unit-Test"

Ähnliche Präsentationen


Google-Anzeigen