Interviewfrage für QA Engineer

Was ist der Unterschied zwischen einem Mock, einem Stub und einem Fake, und wann nimmst du stattdessen eine echte Abhängigkeit?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Ein Stub liefert vorgefertigte Antworten, damit der zu testende Code weiterlaufen kann. Ein Mock zeichnet zusätzlich Interaktionen auf, sodass du prüfen kannst, dass sie stattfanden, also Verhalten statt Zustand. Ein Fake ist eine leichtgewichtige funktionierende Implementierung, etwa ein In-Memory-Repository. Nimm echte Abhängigkeiten, wenn die Integration selbst das Risiko ist, und Test Doubles, wenn die Abhängigkeit langsam, teuer oder schwer in einen bestimmten Zustand zu zwingen ist.

Warum Interviewer das fragen

Die Begriffe werden austauschbar benutzt, präzise Definitionen signalisieren also Tiefe. Wichtiger noch: der Interviewer will dein Urteil, wann ein Double die falsche Wahl ist, denn Over-Mocking produziert Tests, die fröhlich grün sind, während das System kaputt ist. Containerisierte echte Abhängigkeiten für Integrationstests zu nennen zeigt, dass du die moderne Zwischenoption kennst statt alles oder nichts zu mocken.

So baust du deine Antwort auf

  • Definiere alle drei knackig, je eine Zeile.
  • Erklär Zustandsprüfung gegen Interaktionsprüfung.
  • Nenn den Fall, in dem eine echte Abhängigkeit richtig ist.
  • Warn vor Over-Mocking und Tests, die nur die Mocks testen.
  • Erwähn Container für realistische Integrationsabhängigkeiten.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ein Stub ist passiv, er gibt einfach zurück, was du ihm gesagt hast, damit der Code weiterlaufen kann. Ein Mock ist ein Stub, der sich zusätzlich merkt, was mit ihm passiert ist, sodass du prüfen kannst, dass der Payment-Service genau einmal mit diesen Argumenten aufgerufen wurde. Ein Fake ist eine echte, aber vereinfachte Implementierung, etwa eine In-Memory-Variante eines Repositories, die sich korrekt verhält, aber nicht produktionsreif ist. Der praktisch wichtige Unterschied ist, dass Stubs und Fakes Zustandsprüfung unterstützen, also Prüfen auf das Ergebnis, während Mocks Interaktionsprüfung unterstützen, also Prüfen auf das Gespräch. Ich neige zum Ersteren, denn auf Interaktionen zu prüfen koppelt den Test an Implementierungsdetails, und dann bricht ein Refactoring hundert Tests, ohne dass sich ein einziges Verhalten geändert hat. Echte Abhängigkeiten nehme ich überall dort, wo die Integration das Risiko ist. Lautet die Frage, ob unsere Query tatsächlich gegen Postgres funktioniert, beantwortet eine gemockte Datenbank gar nichts, also fahre ich das echte Ding im Container. Das ist inzwischen mein Default für die Integrationsschicht, seit Container das billig gemacht haben. Drittanbieter-Services, die ich nicht kontrolliere, mocke ich und sichere das mit geplanten Contract-Tests gegen deren Sandbox ab.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Woran erkennst du, dass eine Testsuite over-mocked ist?
  • Wie würdest du Fehlerbehandlung für einen Drittanbieter testen, den du nicht zum Scheitern zwingen kannst?
  • Wann ist ein Spy das richtige Werkzeug statt eines vollen Mocks?

Weitere Fragen für QA Engineer

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen