- Häufige Fragen im Fachgespräch – Objektorientierung – Anwendungsentwickler-Podcast #2
- Häufige Fragen im Fachgespräch – Kapselung – Anwendungsentwickler-Podcast #6
- Häufige Fragen im Fachgespräch – Vererbung – Anwendungsentwickler-Podcast #8
- Häufige Fragen im Fachgespräch – Polymorphie – Anwendungsentwickler-Podcast #10
- Häufige Fragen im Fachgespräch – Programmierung (Teil 1) – Anwendungsentwickler-Podcast #12
- Häufige Fragen im Fachgespräch – Programmierung (Teil 2) – Anwendungsentwickler-Podcast #13
- Relationale Datenbanken – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #17
- Normalisierung – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #18
- SQL – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #19
- Erläuterung der Gehaltsabrechnung – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #46
- Zusammensetzung des Stundensatzes – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #47
- Testverfahren für Software – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #94
- Unit-Tests – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #95
- Rückblick auf die Fachgespräche der Sommerprüfung 2022 (Fachinformatiker:in Anwendungsentwicklung) – IT-Berufe-Podcast #177
- Handelskalkulation, Skonto und Rabatt – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #148
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.
Podcast: Play in new window | Download (Duration: 38:16 — 14.5MB)
Abonnieren: Apple Podcasts | Spotify | RSS
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).
Moin Stefan,
war wieder mal ein sehr guter Podcast. Mit Tests muss ich mich gerade intensiver beschäftigen. Da kam der Podcast wie gerufen.
Gibt es einen Plan für die nächste Folgen – bezogen auf das Fachgespräch? Wir hören von unseren Jahresvorgängern (Bremen) immer wieder, dass es viele Fragen zum Thema Datenschutz gab. Würde mich freuen, dazu was auf die Ohren zu bekommen.
Grüße
André
Hallo André,
freut mich, dass ich helfen kann 🙂
Datenschutz ist natürlich ein sehr wichtiges Thema. Bringen viele Prüflinge leider immer noch mit Datensicherheit und Datensicherung durcheinander. Guter Vorschlag für eine Podcast-Episode! Nehme ich auf die Liste. Kann aber noch ein wenig dauern…
Viele Grüße!
Stefan
Hallo Stefan,
mein Fachgespräch steht quasi kurz bevor und ich habe vorher noch einmal deine Podcasts durchgehört. Respekt für deine Podcasts! Echt sehr gut komprimiertes Wissen ohne dabei an Qualität zu sparen.
Schöne Grüße und vielen Dank für die tollen Podcasts!
Julian
Hallo Julian,
freut mich, dass ich helfen kann! 🙂 Dann hoffe ich mal, dass du auch nach Unit-Tests gefragt wirst! 😉
Viel Erfolg beim Fachgespräch! Sag mir gerne bescheid, wie es ausgegangen ist.
Viele Grüße!
Stefan
Selenium WebDriver heißt jetzt einfach WebDriver und ist eine W3C Recommendation.
Ein Mock-Objekt ersetzt das „echte“ Objekt. Stubbing gibt den gewünschten Rückgabewert beim Aufruf einer Methode des Mock-Objekts an (Objekte geben keine Werte zurück). Außerdem gibt es noch Spy, das ist ein „echtes“ Objekt, bei dem einzelne Methoden gestubbt werden können, während der Rest der Methoden vom Original verwendet werden. Außerdem kann man bei einem Spy wie bei einem Mock Abfragen über aufgerufene Methoden etc. machen.
Die Reihenfolge der Ausführung von Testmethoden in einer Testklasse liegt nicht fest (es ist zwar möglich, sie alphabetisch sortiert auszuführen, aber es sollte sowieso keine Abhängigkeiten geben, so dass die Reihenfolge egal ist).
4 thoughts on “Unit-Tests – Häufige Fragen im Fachgespräch – Anwendungsentwickler-Podcast #95”
Kann man das Denglisch nicht ganz auf Deutsch umstellen?
Hallo Stefan,
danke für die Informationen in diesem Podcast, das ist alles sehr nützlich.
Aber ich habe eine Anmerkung zu machen: auch die Methoden, die void zurückgeben, können mit Unit Tests getestet werden.
Nehmen wir ein Beispiel:
eine Methode, die void zurückgibt und als Parameter ein Objekt vom Typ Customer nimmt und es zu einer gegebenen Liste von Customers hinzufügt.
Wir können die Funktionalität der Methode testen und behaupten, dass das Objekt Customer der Liste der Kunden hinzugefügt wurde. Oder eben nicht. 🙂
Bitte korrigieren Sie mich, wenn ich falsch liege,
Vielen Dank und noch einen schönen Tag!
Ramona
Hallo Ramona, das stimmt! Aber würdest du die Methode wirklich so bauen? Sollte sie nicht besser so aussehen:
List<Customer> addToCustomerList(List<Customer> existingCustomers, Customer newCustomer)
Dadurch würde explizit, was passiert, und die Liste wird nicht manipuliert, sondern eine neue zurückgegeben (Stichwort Immutability). Diese Methode kannst du dann ganz klassisch testen.