• Unit testing
  • Was ist ein Unit?
    • Einheit: Übereinkunft im Team
    • Unit Testing deutsch: Modultest, Komponententest → keine Aussage über die Größe eines Units
    • Wikipeda unit testing: A unit is the smallest testable part of an application
    • Nützlich?
  • Abgrenzungen
    • Akzeptanztests - Erfüllt das Programm die Anforderungen
    • Funktionale Anforderungen
    • Nichtfunktionale Anforderungen
      • ⇒ Concordion
    • Integrationstest - Zusammenspiel von Komponenten
    • Teile des Systems
    • Ganzes System
    • Unit Test
    • Testbare Teile in isolation
    • Typisch in OO: Klassentest
    • Auch Integrationstests und Akzeptanztests können mit xUnit geschrieben sein!
  • Was finden wir oft in existierender Software vor?
    • Ein paar mit xUnit geschriebene Tests
    • Tests prüfen eine Hand voll Probleme, oftmals mehrere Komponenten im Zusammenspiel.
    • Manchmal unter Einbeziehung der Umwelt
    • –> Das sind keine Unit-Tests
  • Was leistet eigentlich Unit-Testing?
  • Beobachtungen:
    • Programm und Test ist fertig, können wir Bugs finden?
    • Was soll das ganze dann?
  • Aufgaben von Unit-Tests
    • Test von Entwicklerannahmen
    • Die Tests stellen sicher, dass die Klassen das Interface erfüllen, das wir als Entwickler festegelegt haben.
    • Umfangeiche Interfaces machen mehr Mühe beim Testen: Interfaces werden kleiner
    • Hauptnutzen: Ich kann die Implementaton ändern und merke ob die neue Implementation noch das alte Interface erfüllt (Regression)
    • Aber: Unit-Tests sind kein Ersatz für weiteres Testing (siehe Abgrenzung)
    • Aber: Unit-Tests finden keine neuen Bugs
    • Nach der Entwicklung ist der Test OK
  • Non-Functional:
    • Tests müssen ohne Aufwand durchzuführen sein
    • Test müssen schnell sein
  • Ergebnis: Höheres Vertrauen des Entwicklers in den Code
  • Ergebnis: Verhindert „ich traue mich nicht das zu ändern“