Preview only show first 10 pages with watermark. For full document please download

Unit-tests

   EMBED


Share

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