UNIT-TESTS
Applied Programming for NLP (SS2015)
Daniel Weber
1
WAS VERSTEHT MAN
UNTER UNIT-TEST?
 Unit-Tests (=Komponententests/Modultests)
 Überprüfung der korrekten Funktionalität des Codes
 Frequentierte Wiederholung der Tests nötig um die
Qualitätssicherung zu gewährleisten
• Tests bilden selbst ein Programm
(schnelle Ausführung der Tests möglich)
"a successful test is one that finds a bug“ - Glenford Myers 1979
2
WARUM SIND UNIT-TESTS
SINNVOLL?
 Schnelleres Debugging / Development
 Besseres Design
 Wichtige Voraussetzung für problemloses Refactoring
 Vereinfacht Abhängigkeiten mit neuen Features
 Dokumentation (angestrebte Funktionsweise)
3
BEISPIELE IN PYTHON MIT
UNITTEST
4
BEISPIELE IN PYTHON MIT
UNITTEST
5
BEISPIELE IN PYTHON MIT
UNITTEST
 In der Methode „test_upper“ upper() durch lower() ersetzt:
6
ÜBERBLICK AN METHODEN
(PYTHON)
7
ÜBERBLICK AN METHODEN
(PYTHON)
8
GUIDLINES FÜR UNITTESTS:
 Isolation (Tests sind voneinander unabhängig)
 Vollständig automatisiert (nicht interaktiv)
 So kurz und verständlich wie möglich
 Aussagekräftige Benennung der Testmethoden
•
test[Name] e.g.: test_send_message() [python], testSaveAs() [java]
 Tests werden vor dem zu testenden Code geschrieben
 Pro Klasse eine Testklasse
 Pro Test ein Problem und bei Bedarf mehrere Tests pro Funktion
 „Triviale Fälle“ ebenfalls testen (copy-paste error)
 Schnelle Durchlaufzeiten (Sonst verlängerte Developmentphase)
9
ARTEN VON UNIT-TESTS
 Entwicklertest
• Mit Testversion der Software (Eingaben simulieren)
 White-Box-Test
• Zu testende Elemente werden aus dem Quellcode abgeleitet
 Black-Box-Test
- Tests werden vor dem Code geschrieben
10
INTEGRATIONSTEST
 Ziel: Fehler finden die Unit-Tests alleine nicht finden können
 Elementar für die Sicherstellung der korrekten Kommunikation
zwischen verschiedenen Modulen
 Nachrichten- & Datenaustausch der verschiedenen Komponenten
wird überprüft (z.b. ungültige Ein- und Ausgabeparameter)
 Notwendig für Anbindung an externe Dienste
11
QUELLEN UND
LITERATURVERZEICHNIS
 https://docs.python.org/2/library/unittest.html
 https://docs.python.org/3/library/unittest.html
 http://www.it-agile.de/wissen/praktiken/agiles-testen/unit-tests
 http://www.python-kurs.eu/python3_tests.php
 Myers, Glenford J. (1979). The Art of Software Testing. John
Wiley and Sons.
12