Unit-Tests – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #95
IT-Berufe-Podcast - Ein Podcast von Stefan Macke - Montags
Kategorien:
Nachdem letzte Woche bereits häufige Fragen im Fachgespräch rund um das Thema Softwaretests besprochen wurden, folgen nun einige Detailfragen zum Bereich Unit-Tests in der fünfundneunzigsten Episode des Anwendungsentwickler-Podcasts. Inhalt * Was ist eine Unit? * Die kleinste zu testende Einheit, meist eine Methode. * Wie unterscheiden sich Unit- bzw. Komponenten-, Integrations- und Systemtest? * Unit-Test: Einzelne Komponente wird in Isolation getestet * Integrationstest: Das Zusammenspiel mehrerer Komponenten wird getestet * Systemtest: Das System als Ganzes wird auf Funktionalität getestet * Was ist ein Unit-Test-Framework? * Ein Softwareframework, das den Entwickler beim Schreiben automatischer Tests unterstützt. * Was ist eine Assertion? * Eine konkrete Prüfung in einem Unit-Test (z.B. Gleichheit von Werten). * Was bedeutet AAA? * Arrange, Act, Assert * Was ist Mocking? * Abhängigkeiten werden durch Fake-Objekte ersetzt, um die eigentlich zu testende Komponente in Isolation ausführen zu können. * Was ist Code-Coverage? * Der Grad der Abdeckung des Codes durch die Tests. * Welche Eigenschaften sollten Unit-Tests haben? * Schnell, einfach, isoliert, wiederholbar, verlässlich, keine Infrastruktur verwenden. * Was ist ein Mutationstest? * Ein Test, der den zu testenden Code verändert, um die Testabdeckung durch vorhandene Tests zu prüfen. * Was ist die Testpyramide? * Eine Empfehlung für das Verhältnis zwischen Unit- (viele), Integrations- (mehrere) und Systemtests (wenige). * Wie kann man Oberflächen testen? * Manuell oder mit Hilfe von Frameworks wie Selenium. Literaturempfehlungen Einen sehr schönen Einstieg in das Thema Unit-Testing liefert Jeff Langr in seinem Buch Pragmatic Unit Testing in Java 8 with JUnit*. Er fängt „bei 0“ an und erklärt alle wichtigen Konzepte inkl. Mocking für die Praxis. Außerdem arbeitet er auch mit den neuen Features von Java 8 (Lambdas, Streams) um die Tests zu optimieren. Sehr empfehlenswert! Ich lasse es meine Azubis als Grundlagenbuch lesen und werde bald auch einen Buchclub dazu aufnehmen. * Und wenn du ein Buch lesen möchtest, dass dir noch einmal einen völlig anderen Blick auf das Vorgehen bzgl. der Tests beim Schreiben einer Software ermöglicht, empfehle ich dir wärmstens Growing Object-Oriented Software, Guided by Tests*. Die beiden Autoren zeigen ein komplett testgetriebenes Vorgehen, das mit Integrationstests beginnt. Ein sehr spannender Ansatz, der mit einem großen Praxisbeispiel in Java illustiert wird. Hier habe ich das Buch schon vor einigen Jahren rezensiert: Growing Object-Oriented Software, Guided by Tests (Freeman/Pryce). * Links * Permalink zu dieser Podcast-Epi...