Soll ich Unit-Test

8

Die meiste Logik für meinen Webservice besteht darin, mit den Webservices unserer Lieferanten zu sprechen (Verfügbarkeit prüfen, bestellen usw.). Sie haben keine Testumgebung und die meisten Anrufe können nicht willkürlich ausgeführt werden (zum Beispiel würde eine Unterbrechung einmal und einmal ausgeführt würde tatsächlich einen Dienst stoppen).

Ist es möglich, Unit-Tests in dieser Umgebung durchzuführen? Ich könnte typische Antworten simulieren, befürchte jedoch, dass die hartcodierten Antworten der Lieferanten den Punkt der Komponententests untergraben würden.

Tom Squires
quelle

Antworten:

30

Nein, das wird es nicht. Bei Unit-Tests geht es genau darum, Ihren Code unabhängig von der Außenwelt isoliert zu testen .

Das Testen Ihres gesamten Systems, das mit externen Parteien wie Webdiensten usw. interagiert, ist ein Integrations- / Systemtest . Dies wird auch in den meisten Projekten der realen Welt benötigt, ist jedoch eine andere Stufe als Unit-Tests. Eigentlich klingt es so, als ob Sie in Ihrer Situation, da Sie Schwierigkeiten beim Integrationstest haben, Unit-Tests noch mehr als gewöhnlich benötigen .

Als langfristiges Ziel können Sie erwägen, diese Lieferanten zu schulen und / oder zu belästigen, um eine Testumgebung für sich und ihre Kunden einzurichten. Möglicherweise müssen Sie die Unterstützung Ihres Managements in Anspruch nehmen, um dies zu erreichen. Bereiten Sie sich jedoch auf harte Fakten und Zahlen vor, um sie vom geschäftlichen Wert einer Testumgebung zu überzeugen.

Péter Török
quelle
12
+1: "Sie brauchen Unit-Tests noch mehr als üblich". Und Sie müssen die Lieferantenanforderung / -antwort, das Zeitlimit, den Fehler, die schlechten Anmeldeinformationen und all die anderen kleinen Dinge, die in einer solchen Anwendung "Probleme" verursachen , genau verspotten.
S.Lott
1

Unit-Tests bieten Ihnen auch eine eindeutige, ausführbare Spezifikation des Verhaltens, das Sie von Ihren Lieferanten erwarten. Dies wird wahrscheinlich die Kommunikation mit ihnen viel einfacher machen.

Wenn bei der Interaktion zwischen Ihnen und ihnen ein Problem auftritt, können Sie ihnen Unit-Tests zur Verfügung stellen, um klar anzugeben, welches Verhalten Ihr Code erwartet. Wenn sich ihr Code nicht so verhält wie Ihre Unit-Tests, sind die Unterschiede normalerweise leicht zu erkennen.

Josh Peterson
quelle
Solche Tests sind zwar nützlich, aber die weit verbreitete Terminologie für diese Tests sind eher System- / Abnahmetests als Komponententests.
Péter Török
@ Josh Peterson Ich hatte schon früher Beschwerden von ihren "Entwicklern", weil ich ihnen nur XML gesendet habe, anstatt den XML-Inhalt zu erklären. Ich denke, Unit-Tests würden mich nicht sehr weit bringen :)
Tom Squires
0

ROI

Dies ist wirklich eine Return on Investment-Frage. Glauben Sie, dass die Investition in Unit-Tests das wert ist, was Sie zurückbekommen? Ihr Code wurde nämlich isoliert getestet . Sowie alle anderen Vorteile von Unit-Tests.

Sie können dies beispielsweise einem automatisierten Abnahmetestansatz gegenüberstellen, bei dem Sie von Ihrem Lieferanten ein Testkonto erhalten, mit dem das integrierte System tatsächlich mit den Tests getestet wird. Sind die Kosten für ATDD das wert, was Sie zurückbekommen? Testen des gesamten Systems.

Es liegt an Ihnen, die Analyse durchzuführen und herauszufinden, ob Sie Unit-Tests, automatisierte Abnahmetests, beides oder nichts anderes durchführen sollten.

Dietbuddha
quelle