1373 Stimmen

Was ist der Unterschied zwischen einer Attrappe und einem Stummel?

Ich habe verschiedene Artikel über Mocking vs Stubbing in Tests gelesen, einschließlich Martin Fowlers Spötteleien sind keine Spötteleien aber ich verstehe den Unterschied immer noch nicht.

1voto

simon.denel Punkte 750

Ein Stub ist ein unechtes Objekt, das zu Testzwecken erstellt wird. Ein Mock ist ein Stub, der aufzeichnet, ob erwartete Aufrufe tatsächlich erfolgt sind.

1voto

William Entriken Punkte 33360

Eine Testperson führt als Reaktion auf bestimmte Aufforderungen (Funktionsaufrufe) oder andere Stimuli Aktionen aus. Hier finden Sie konkrete Beispiele für Testsituationen.

Szenario - EMT-Studentenprüfung

Ein Student hat eine Ausbildung zum Notfallsanitäter absolviert. Schauen Sie sich Ian Gallagher in Schamlos Staffel 6, Folge 10, wenn Sie mit dieser Prüfungssituation nicht vertraut sind.

Es ist zu teuer, Patienten mit verschiedenen Krankheiten für Testzwecke zu finden. Stattdessen benutzen wir Schauspieler. Wir fragen die Testperson (Ian): "Sie kommen am Unfallort an und der Patient ist bewegungsunfähig und bewusstlos, was tun Sie als erstes?" Ian antwortet: "Ich prüfe, ob der Schauplatz sicher ist". Und der Testleiter sagt: "Der Schauplatz ist sicher".

Der Ausbilder (und der Schauspieler) können beliebige Antworten auf die Fragen der Testperson geben.

Hier ist der Ausbilder (und Schauspieler) eine Attrappe. In der medizinischen Ausbildung wird diese Terminologie (z. B. Mockcode-Simulation) genauso verwendet wie in der Informatik.

Szenario - Registrierung für eine Website

Sie testen Yahoo, einen neuen E-Mail-Dienst, von dem Sie gehört haben. Um sich anzumelden, müssen Sie Ihr Geburtsdatum angeben und andere aufdringliche Fragen beantworten.

Die Website setzt voraus, dass Sie 21 Jahre oder älter sind. Sie geben also den Wert 1. Januar 1970 ein. Das erfüllt die Anforderungen und erspart Ihnen den mühsamen Prozess der Implementierung eines Arbeitsablaufs zum Erinnern an meinen Geburtstag und zum Eintippen.

Dieses Datum ist ein Stummel. Dieser Wortgebrauch ist spezifisch für die Informatik.

1voto

M_ Fa Punkte 457

A Stummel ist ein Objekt, das eine Schnittstelle einer Komponente implementiert, aber anstatt das zurückzugeben, was die Komponente beim Aufruf zurückgeben würde, kann der Stub so konfiguriert werden, dass er einen für den Test geeigneten Wert zurückgibt. Mit Hilfe von Stubs kann ein Unit-Test testen, ob eine Unit verschiedene Rückgabewerte von ihrem Kollaborateur verarbeiten kann. Die Verwendung eines Stubs anstelle eines echten Kollaborators in einem Unit-Test könnte folgendermaßen ausgedrückt werden:

Unit-Test --> Stub

Einheitstest --> Einheit --> Stub

Einheitstest bestätigt Ergebnisse und Zustand der Einheit

Zunächst erstellt der Einheitstest den Stub und konfiguriert seine Rückgabewerte. Dann erstellt der Unit-Test die Unit und setzt den Stub auf sie. Nun ruft der Unit-Test die Unit auf, die ihrerseits den Stub aufruft. Schließlich macht der Unit-Test Aussagen über die Ergebnisse der Methodenaufrufe in der Unit.

Eine Attrappe ist wie ein Stub, nur dass es auch Methoden hat, die es ermöglichen, festzustellen, welche Methoden auf dem Mock aufgerufen wurden . Mit einem Mock ist es also möglich, sowohl zu testen, ob die Unit verschiedene Rückgabewerte korrekt verarbeiten kann, als auch, ob die Unit den Collaborator korrekt verwendet. So kann man z.B. an dem von einem dao-Objekt zurückgegebenen Wert nicht erkennen, ob die Daten mit einem Statement oder einem PreparedStatement aus der Datenbank gelesen wurden. Sie können auch nicht sehen, ob die Methode connection.close() vor der Rückgabe des Wertes aufgerufen wurde. Dies ist mit Mocks möglich. Mit anderen Worten: Mocks ermöglichen es, die gesamte Interaktion einer Einheit mit einem Kollaborator zu testen. Nicht nur die Methoden des Kollaborators, die von der Einheit verwendete Werte zurückgeben. Die Verwendung eines Mocks in einem Unit-Test könnte folgendermaßen ausgedrückt werden:

Unit-Test --> Mock

Einheitstest --> Einheit --> Mock

Einheitstest überprüft das Ergebnis und den Zustand der Einheit

Unit Test prüft die Methoden, die von Mocks aufgerufen werden

Mehr Detail >> Ici

1voto

Didier A. Punkte 4211

Mock - Ein Mock fängt den Aufruf einer Methode oder Funktion (oder einer Gruppe von Methoden und Funktionen wie im Fall einer Mocked-Klasse) ab. Er ist keine Alternative zu dieser Methode oder Funktion. Bei diesem Abfangen kann das Mock tun, was es will, z. B. die Ein- und Ausgabe aufzeichnen, den Aufruf kurzschließen, den Rückgabewert ändern usw.

Stummel - Ein Stub ist eine gültige, voll funktionsfähige Implementierung einer Methode oder Funktion (oder einer Gruppe von Methoden und Funktionen wie im Fall einer Stubbed-Klasse), die eine identische Schnittstelle/Signatur wie die Methode, Funktion oder Gruppe von Methoden und Funktionen hat, für die sie als Stub dient. Die Stubbed-Implementierung wird in der Regel nur Dinge tun, die im Kontext eines Unit-Tests akzeptabel sind, d.h. sie wird z.B. keine IO ausführen, während sie das Verhalten der Sache nachahmt, die sie stubbt.

0voto

Elisabeth Punkte 19382

Stubs werden für Methoden mit einem erwarteten Rückgabewert verwendet, den Sie in Ihrem Test einrichten. Mocks werden für ungültige Methoden verwendet, die im Assert verifiziert werden, dass sie aufgerufen werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X