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
© Copyright 2024 ExpyDoc