Transcript
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