Erfahren Sie, wie Sie statische Analysen, Komponententests und andere C- und C++-Softwaretestmethoden einfach in Ihre CI/CD-Pipeline integrieren können. Für Demo registrieren >>

Was ist Service-Virtualisierung? Tools & Testbeispiele

Von Jeff Peeples

7. September 2021

4  min lesen

Die Servicevirtualisierung ist zu einem wichtigen Bestandteil des Softwaretestens geworden. Lesen Sie weiter, um zu erfahren, wie Sie Servicevirtualisierung verwenden können, um einfachen Zugriff auf Komponenten zu erhalten, die Entwicklung und Tests behindern.

Definition der Service-Virtualisierung

Als wichtiger Bestandteil der Teststrategien vieler unserer Kunden erhalten wir in der Regel viele Fragen zur Servicevirtualisierung. Hier sind einige Erklärungen.

Testen Sie jederzeit und überall mit der richtigen Service-Virtualisierungslösung

Die Servicevirtualisierung bietet Teams einfachen Zugriff auf die eingeschränkten Komponenten, die Entwicklung und Tests behindern. Dies äußert sich normalerweise in Umgebungsbedingungen, bei denen Komponenten erforderlich sind, die technisch außerhalb des Testbereichs liegen, um eine vollständige End-to-End-Funktionalität zu ermöglichen.

Mit der Service-Virtualisierung können Sie diese Einschränkungen beseitigen, indem Sie diese nachgelagerten Abhängigkeiten simulieren und die reale Funktionalität durch emuliertes Verhalten austauschen. Bei korrekter Ausführung verhält sich das System so, als ob die eigentliche Komponente verfügbar wäre.

Somit können Sie Planungseinschränkungen eliminieren, indem Sie allgegenwärtigen Zugriff auf eine genaue emulierte Testumgebung bereitstellen. Und Sie können Prozessengpässe beseitigen, indem Sie einen schnellen Zugriff auf sich entwickelnde, nicht verfügbare oder anderweitig schwer zugängliche abhängige Systeme bereitstellen. Wie im Wikipedia-Eintrag zur Dienstvirtualisierung angegeben, könnten diese abhängigen Systeme sein:

  • Noch nicht fertig
  • Noch in Entwicklung
  • Von einem Dritten oder Partner kontrolliert
  • Nur zum Testen in begrenzter Kapazität oder zu ungünstigen Zeiten verfügbar
  • In einer Testumgebung schwer bereitzustellen oder zu konfigurieren
  • Erforderlich für den gleichzeitigen Zugriff verschiedener Teams mit unterschiedlichen Testdateneinstellungen und anderen Anforderungen
  • Eingeschränkt oder kostspielig für Last- und Leistungstests

Der Eintrag von Wikipedia beschreibt dies weiterhin gut:

Anstatt ganze Systeme zu virtualisieren, werden nur bestimmte Bereiche des abhängigen Verhaltens virtualisiert, die für die Ausführung von Entwicklungs- und Testaufgaben kritisch sind. Dies bietet gerade genug Anwendungslogik, damit die Entwickler oder Tester das bekommen, was sie brauchen, ohne es zu müssen Warten Sie, bis der eigentliche Service abgeschlossen und verfügbar ist.

Anstatt beispielsweise eine gesamte Datenbank zu virtualisieren (und die gesamte zugehörige Testdatenverwaltung durchzuführen sowie die Datenbank für jede Testsitzung einzurichten), überwachen Sie, wie die Anwendung mit der Datenbank interagiert, und emulieren dann das zugehörige Datenbankverhalten (SQL) Abfragen, die an die Datenbank übergeben werden, die entsprechenden Ergebnismengen, die zurückgegeben werden usw.).

Warum ist Service-Virtualisierung wichtig?

Um Qualität schnell zu erreichen, ist der uneingeschränkte Zugang zu einer vertrauenswürdigen und realistischen Testumgebung unerlässlich. Es ist wichtig zu wissen, dass eine vollständige Testumgebung die zu testende Anwendung (AUT) und alle ihre abhängigen Komponenten wie APIs, Drittanbieterdienste, Datenbanken, Anwendungen und andere Endpunkte umfasst.

Servicevirtualisierung ermöglicht es DevTest-Teams Zugriff bekommen auf eine vollständige Testumgebung, einschließlich aller kritisch abhängigen Systemkomponenten sowie das Verhalten von ändern diese abhängigen Komponenten auf eine Weise, die mit einer gestaffelten Testumgebung unmöglich wäre – so können Sie früher, schneller und vollständiger testen. Außerdem können Sie verschiedene Ebenen der Anwendung für Debugging und Leistungstests isolieren.

So wählen Sie die richtige Service-Virtualisierungslösung aus

Zugang zu einer vollständigen Testumgebung erhalten

Bei den heutigen rasanten iterativen Entwicklungszyklen benötigen DevTest-Teams frühzeitigen Zugriff auf eine vollständige Testumgebung, um:

  • Überprüfen Sie die Funktionalität jeder User Story, sobald sie abgeschlossen ist
  • Überprüfen Sie die Auswirkungen jeder User Story, sobald sie abgeschlossen ist
  • Führen Sie früher im Prozess umfassendere Tests durch
  • Führen Sie ihre eigenen DevTest-Aufgaben aus, auch wenn ein anderes Team eine abhängige Komponente parallel zur aktuellen Iteration implementiert oder weiterentwickelt

Die Dienstvirtualisierung kann den Zugriff auf alle abhängigen Komponenten ermöglichen, die in Ihrer Testumgebung fehlen oder eingeschränkt sind: Dienste von Drittanbietern, APIs, Datenbanken, Mainframes, ESBs und andere Komponenten, die über gängige Messaging-Protokolle kommunizieren. Zu den Hauptkandidaten für die Servicevirtualisierung gehören abhängige Komponenten, die beide:

  • Mäßig (oder mehr) schwer zugänglich für Tests - zum Beispiel aufgrund von Planungskonflikten, Zugriffsgebühren, Lizenzen, geopolitischen Grenzen usw.
  • Mäßig (oder komplexer) zum Testen zu konfigurieren

Beispielsweise kann ein interner Dienst von einer gestaffelten Testumgebung aus leicht zugänglich und einfach zu konfigurieren sein. Auf der anderen Seite ist es wahrscheinlich schwieriger, eine komplexe Nachrichtenwarteschlange in einer gestuften Testumgebung aufrechtzuerhalten und erheblich schwieriger für den Test zu konfigurieren. Am äußersten Ende des Spektrums weist ein Mainframe- oder ERP-System mehrere Einschränkungen im Zusammenhang mit dem DevTest-Zugriff sowie deutliche Einschränkungen bei der Konfiguration für Tests auf. Durch die Nutzung der Servicevirtualisierung wird sichergestellt, dass eine Testumgebung bei Bedarf zugänglich ist. Es beseitigt die Zugriffsbeschränkungen und reduziert den mit wiederholter Konfiguration verbundenen Overhead. Teams können virtuell ohne Grenzen testen.

Ändern des Verhaltens abhängiger Komponenten

Durch die Servicevirtualisierung können Sie auch das Verhalten der abhängigen Komponenten steuern. Es ist sehr schwierig, die Konfiguration des Netzwerks oder der Hardware zu ändern, die jeder abhängigen Komponente des AUT zugeordnet ist. Es ist auch durchaus üblich, gestufte Testumgebungen zu verwenden, die eine langsamere Leistung aufweisen als in der Produktion.

Mithilfe der Servicevirtualisierung haben Sie eine bessere Kontrolle darüber, wie Abhängigkeiten reagieren. Auf diese Weise erhalten Sie bei Bedarf Zugriff auf ein viel breiteres Spektrum von Abhängigkeitsverhalten (genau wie bei einem Flugsimulator). Auf diese Weise können Sie das Risiko eines Release-Kandidaten schneller und genauer einschätzen.

Sie können beispielsweise ein anderes Abhängigkeitsverhalten simulieren, um:

  • Überprüfen Sie, wie Ihr AUT auf Leistungsschwankungen in Abhängigkeiten reagiert. Können Benutzer Kerntransaktionen auch dann abschließen, wenn eine Abhängigkeit eine hohe Latenz aufweist? Legen Szenarien mit niedriger Latenz Nebenläufigkeitsprobleme offen?
  • Isolieren Sie die zu testende Komponente, um zu verstehen, ob unerwartetes Verhalten auf Probleme mit Abhängigkeiten oder auf Ihren AUT zurückzuführen ist
  • Versetzen Sie die gesamte Testumgebung in verschiedene Zustände und überprüfen Sie die Sicherheit und Ausfallsicherheit Ihres AUT in diesen Kontexten
So übernehmen und skalieren Sie Service-Virtualisierung

Ändern der Daten abhängiger Komponenten

Virtuelle Dienste müssen nicht immer mit den tatsächlichen Daten im realen System antworten. Tatsächlich bietet die Bereitstellung unerwarteter Daten aus Ihren virtuellen Diensten viele Vorteile. Virtuelle Dienste werden von ihren Datenquellen getrennt, was eine viel größere Flexibilität bei der Generierung von Antwortdaten ermöglicht, die den unterschiedlichen Teamanforderungen entsprechen, z.

  • Entwicklungsteams, die sich vor fehlerhaften Antworten oder negativem Verhalten in ihrer Anwendung schützen möchten, können Serviceantworten generieren, die negatives Verhalten liefern.
  • Testteams, die überprüfen möchten, wie nicht nominelle Antworten vom Dienst behandelt werden, können unzulässige Zeichen in der Antwort zurückgeben.
  • Leistungsteams, die die Auswirkungen großer Nutzlastantworten verstehen möchten, können überdurchschnittliche Antworten von abhängigen Komponenten bereitstellen.

Durch die Simulation der verschiedenen Servicedaten in solchen Situationen können Sie Ihre Tests wesentlich flexibler gestalten.

Praktische Vorteile der Service-Virtualisierung

Natürlich haben wir hier nur an der Oberfläche gekratzt. Die Bereitstellung von Servicevirtualisierung in Ihrem Unternehmen bietet viele Vorteile. Unternehmen, die die hochmoderne Testpraxis der Service-Virtualisierung übernommen haben, berichten von weniger Fehlern, einer besseren Testabdeckung, höheren Testausführungsraten und einem erheblich geringeren Zeitaufwand für das Testen.

Sehen Sie, wie Ihr Team mit Parasoft Virtualize zuverlässige und vorhersehbare Service-Simulationen erstellen kann.

Von Jeff Peeples

Jeff Peeples ist Senior Product Manager bei Parasoft und leitet die funktionale Plattformausrichtung für SOAtest, Virtualize und CTP. Jeff verfügt über umfangreiche Erfahrung in der Definition von Lösungen und der Entwicklung von Roadmaps für Unternehmensbranchen wie Energie, Finanztechnologien und Reise-/Gastgewerbe.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.