ASTQ Summit ist auf Anfrage verfügbar! Hören Sie, wie Branchenführer berichten, wie sie kontinuierliche Qualität liefern. Jetzt ansehen >>

X

Kontinuierlich testen mit Service-Virtualisierung

Die Dienste, die Ihre Anwendung aufruft, stehen möglicherweise nicht für Lasttests zur Verfügung, wenn Sie sie benötigen. Die Dienstvirtualisierung erstellt stabile virtuelle Dienste, die die Realität nachbilden.

Was ist Service-Virtualisierung?

Dienstvirtualisierung ist eine Funktion von Softwaretests, die die Abhängigkeiten einer Anwendung emulieren kann. Es ermöglicht DevOps-Teams, computergenerierte virtuelle Dienste anstelle von echten zu verwenden, sodass sie häufig und frühzeitig testen und die Kosten in verschiedenen Situationen senken können. Dazu gehören wichtige Teile des verteilten Systems, die fehlen: zum Beispiel, wenn auf abhängige Komponenten nicht zugegriffen werden kann, die Skalierung von Schulungsumgebungen und das Erstellen von Partner-Onboarding-Szenarien.

Die Verwendung virtueller Dienste zu Testzwecken ist kostengünstiger als die Verwendung von Produktionsumgebungen für diese Zwecke. API-Tests mit Endpunktsimulation eliminieren das Risiko von Datenverlusten, vermeiden die Verwendung der teuren Server, die das eigentliche Programm für den Betrieb benötigt, und ermöglicht dem Unternehmen, auf überhöhte Lizenzgebühren zu verzichten. Dies führt zu schnellen, genauen und weniger umständlichen Testverfahren.

Integrieren Sie Service-Virtualisierung in automatisierte Testverfahren für die Continuous Integration-Tests, die DevOps-Workflows erfordern.

Die Vorteile der Service-Virtualisierung

Um die Vorteile von Agile- und DevOps-Initiativen zu nutzen, benötigen Teams sofortigen und uneingeschränkten Zugriff auf ihre Testumgebung. Durch die Anwendung von Servicevirtualisierung in Testumgebungen können Unternehmen die Abhängigkeit von nicht verfügbaren, instabilen oder kostspieligen Abhängigkeiten wie Drittanbieterdiensten, Datenbanken und Mainframes reduzieren oder eliminieren.

Erhalten Sie jederzeit Zugriff

Greifen Sie auf die abhängigen Dienste zu, mit denen Ihre Anwendung interagieren muss, um genaue und gründliche Tests durchzuführen, auch wenn diese zum Testzeitpunkt nicht verfügbar oder unvollständig sind.

Service-Abhängigkeiten isolieren

Wenn Sie nicht auf den entsprechenden Dienst zugreifen können, sind die zugehörigen Abhängigkeiten ebenfalls eine Blackbox. Die Dienstvirtualisierung untersucht das tatsächliche Verhalten und repliziert solche gegenseitigen Abhängigkeiten im virtuellen Äquivalent, um genaue Antworten zu liefern.

Stellen Sie die Teststabilität sicher

Unvollständige oder instabile Dienste können zu Fehlern und Verzögerungen beim Testen führen. Ein virtuelles Äquivalent ist stabiler und bietet zuverlässige Automatisierung und Sicherheit beim Testen.

Nutzen Sie skriptfreie Tools

Tester müssen keine komplizierten Skripte schreiben. Skript- und codelose Tools ermöglichen auch unerfahrenen Testern die Teilnahme. Für den gelegentlichen Fall, in dem Skripterstellung erforderlich ist, unterstützt Parasoft eine Vielzahl von Programmiersprachen.

Reproduzieren Sie das Verhalten in der realen Welt genau

Die Service-Virtualisierung von Parasoft untersucht die tatsächlichen Aufrufe der Anwendung an Live-Services, um Anforderungen und Antworten in der virtuellen Version genau zu modellieren. Zur besseren Korrelation kann auch eine Service-Definition angewendet werden.

Führen Sie Negativ- und Kantenfalltests effektiv durch

Es ist schwierig, einen abhängigen Dienst absichtlich schlecht zu verhalten, aber diese Extreme müssen für genaue Tests berücksichtigt werden. Parasoft stellt sicher, dass der virtuelle Dienst eine Vielzahl von Testbedingungen für gründlichere Tests erfüllt.

Möglichkeiten zur Nutzung der Service-Virtualisierung

Es gibt mehrere Bereiche, in denen die Servicevirtualisierung zur Verbesserung der Produktivität genutzt werden kann.

Agile/parallele Entwicklung

Bei modernen Softwarepraktiken arbeiten mehrere Betriebsteams getrennt an Teilen der Umgebung und führen sie dann über APIs zusammen, um das Endprodukt zu bilden. Wenn sie auf den Zugriff auf einen Teil der Anwendung warten, können DevOps-Teams Service-Virtualisierung verwenden, um diese fehlenden Teile zu simulieren, damit sie ihre Anwendungsentwicklung fortsetzen können.

Performance Testing

Verwenden Sie Service-Virtualisierung, um sicherzustellen, dass Ihre Anwendung die volle Kapazität verarbeiten kann, die für Reaktionszeiten mit hoher Nachfrage, wie z. B. Weihnachtsverkäufe, benötigt wird. Oftmals entsprechen die Kosten für die Aufrechterhaltung einer Live-Performance-Umgebung fast denen der Produktionsumgebung eines Unternehmens. Durch den Einsatz von Service-Virtualisierung können Unternehmen die Abhängigkeiten der getesteten APIs simulieren und die Kosten für Leistungstests erheblich senken.

Testdatenverwaltung

Unternehmen verfügen über riesige Datenmengen, die einen Großteil ihrer Interaktionen mit ihren Kunden, beispielsweise einer Bank, ausmachen. Diese Informationen können PII (persönlich identifizierbare Informationen) wie Sozialversicherungsnummern enthalten. Es ist nicht angemessen, Testern für ihre Zwecke Zugriff auf echte Produktionsdatenquellen zu gewähren. Die Dienstvirtualisierung gibt Testteams die Möglichkeit, Daten synthetisch zu generieren, beispielsweise richtig formatierte Faksimile-Sozialversicherungsnummern, die sie dann zum Testen von Funktionalitäten verwenden können.

Angestellten Training

Unternehmen können Service-Virtualisierung nutzen, um Mitarbeiter in einer Anwendung zu schulen, die sie täglich verwenden. Dadurch wird verhindert, dass die Auszubildenden in der tatsächlichen Produktionsversion der Software, die mit mehreren komplizierten Anwendungen verbunden sein kann, trainieren müssen, und sie daran hindern, sensible Daten zu ändern oder zu löschen.

Partner-Onboarding

Unternehmen stellen Kunden oder Geschäftspartnern häufig APIs zur Verfügung, einschließlich Testumgebungen, um eine einfache Integration zu ermöglichen. Die Wartung dieser Testumgebungen für Partner ist wie bei jeder anderen Umgebung mit Kosten verbunden. Service-Virtualisierung ist eine hervorragende Technik, um Partnern kostengünstigeren Zugriff auf Sandbox-Umgebungen Ihrer APIs zu bieten.

Best Practices für die Service-Virtualisierung

Beachten Sie die erforderliche Dienstvirtualisierung.

Sie müssen nicht das gesamte oder auch nur einen Großteil des tatsächlichen Systemverhaltens erstellen, das Sie virtualisieren; Sie müssen nur die wesentlichen Transaktionen durchführen. Versuchen Sie nicht, Ad-hoc-Anfragen zu emulieren. Wenn Sie aufgrund einer fehlerhaften Eingabe auf einen fehlerhaften Testfall stoßen, können Sie eine virtualisierte Transaktion generieren, die ihn repliziert.

Erkennen Sie die Testfälle, die Sie unterstützen.

Nehmen Sie Verhaltensweisen nur in Ihren virtuellen Dienst auf, nachdem Sie verstanden haben, wie die Fälle mit ihnen interagieren. Ihr Testplan sollte genau beschreiben, welche Transaktionen in die Virtualisierung einbezogen werden sollen. Lassen Sie den Testplan steuern, welche Transaktionen Sie virtualisieren werden.

Testen Sie das richtige System.

Stellen Sie sicher, dass Sie Testszenarien erstellen, die das zu testende System validieren, nicht die Dienstvirtualisierung. Simulieren Sie ein ideales Replikat der abhängigen Komponente. Gleichzeitig sollte die Virtualisierung intelligent genug sein, damit der Kunde einen Workflow abschließen kann. Beim UI-Testen für eine Bank muss der virtuelle Dienst beispielsweise nur die korrekte Darstellung einer Abhebung oder Einzahlung abdecken; keine Notwendigkeit, den Kontostand zu überprüfen.

Jedes Team sollte seine eigenen virtuellen Dienste entwickeln.

Jedes Team hat seine individuellen Anforderungen und wenn es seine eigenen Versionen von virtuellen Assets erstellt, entsteht kein Schaden, wenn eine gewisse Redundanz auftritt. Der Versuch, Dienstvirtualisierungen zu erstellen, die mehrere Teams verwenden müssen, erzeugt nur einen weiteren eingeschränkten Dienst. Best Practice besteht darin, dass das Team, das den realen Service entwickelt hat, auch den virtuellen Service erstellt, da es über die lokale Expertise verfügt.

Verwenden Sie keine zufälligen Antworten.

Zufällige Antworten führen nicht zu einem duplizierbaren Funktionstest. Wenn Sie die von einer bestimmten Anfrage erhaltenen Daten variieren müssen, erstellen Sie am besten einen sich nicht ändernden Antwortsatz für eine Gruppe vergleichbarer Eingaben. Variieren Sie stattdessen die Verkehrsverteilung mit zufälligen Eingaben.

Vermeiden Sie Datenüberlastungen.

Das Abgleichen mehrerer Transaktionsanforderungen mit exakt derselben Antwort bedeutet einen hohen Wartungsaufwand. Passen Sie beispielsweise nur die letzte Ziffer einer Kontonummer an. Das Zuordnen mehrerer eindeutiger Kontonummern zu einer einzelnen Transaktion behebt das Problem des Cachings von Datenbanken für Leistungstests.

Stellen Sie sicher, dass Ihre Anwendung Fehler behebt.

Die meisten Testpläne haben weniger positive Testabdeckungsszenarien und mehr negative. Dies hilft, wenn Entwickler Ausnahmen erkennen. Sie können Fehlersituationen in einem engen Testfall leichter erkennen als in systemweiten Situationen.

Lassen Sie den Verbraucher die virtuellen Dienste erstellen.

Verbraucher verstehen die Verhaltensweisen, auf die sie sich verlassen. In einer normalen SOA-Umgebung (serviceorientierte Architektur) ist sich der Servicebesitzer nicht bewusst. Daher ist eine enge Beziehung zum Eigentümer des Dienstes nach wie vor unerlässlich, da, wie erwähnt, lokales Know-how intelligentere, skalierbarere Dienste ermöglichen kann.

Beispiel für Datenvirtualisierung

Die meisten Unternehmen speichern Daten an vielen verschiedenen Orten, von der Hardware in ihren Räumlichkeiten bis hin zur Cloud. Diese Informationen werden aus mehreren Anwendungen und Dateiformaten angepasst. Die Servicevirtualisierung ermöglicht es jeder Anwendung, unabhängig von Format, Quelle oder Standort auf relevante Daten zuzugreifen.

Servicevirtualisierung ist in diesem Fall eine Softwareschicht zwischen Anwendungen, die auf Speichersysteme und die darin enthaltenen Daten zugreifen. Die Schicht interpretiert die Abfrage oder Datenanforderung einer App nach Bedarf und liefert Ergebnisse, die mehrere Systeme abdecken.

Hinweis: Fertigungstestdaten können aufgrund all der Softwarekomponenten, die auf ihre Gültigkeit angewiesen sind, schwierig sein. Sobald Testdaten verbraucht sind, können sie nicht wiederverwendet werden, bis der Systemstatus zurückgesetzt wird. Mit der Servicevirtualisierung können virtuelle Testdaten basierend auf einer kleinen Stichprobe und abgeleiteten Einschränkungen „gezüchtet“ werden. Diese Daten können bei Bedarf wiederverwendet und neu generiert werden.

Screenshot von Parasoft Virtualize in CTP

Erste Schritte mit Service-Virtualisierung

Screenshot von Parasoft Service Virtualization Deployments und Benachrichtigungen zu Ereignissen.

Besprechen Sie zu Beginn am besten mit einem Parasoft-Experten, wie Sie die Anforderungen Ihres Unternehmens mit dem Service-Virtualisierungs-Know-how von Parasoft erfüllen können. Nachdem wir Ihre Anforderungen ermittelt haben, weisen wir ein Service-Virtualisierungsteam zu, um diese Anforderungen zu erfüllen. Das Team arbeitet mit Ihrem Unternehmen zusammen, um einen Gesamtplan und den besten Ansatz zu entwickeln, der Testfälle umfasst, um die zur Lösung von Problemen erforderlichen Daten zu erhalten, bevor sie auftreten, was einer der Hauptvorteile der Servicevirtualisierung ist.

Möchten Sie mehr erfahren? Lesen Sie unseren hilfreichen Leitfaden, um den idealen Ausgangspunkt für die Service-Virtualisierung Ihres Teams zu finden und das beste Bereitstellungsmodell für Ihre Anforderungen zu ermitteln. Und sehen Sie sich unsere Bereitstellungsoptionen an.

Wie hilft Parasoft?

Machen Sie kontinuierliches Testen einfacher und schneller mit Service-Virtualisierung. Die Service-Virtualisierungsplattform von Parasoft ermöglicht es Entwicklern oder Testern, automatisierte Tests frühzeitig in die Softwareentwicklung einzubeziehen und gleichzeitig virtuelle und stabile Dienste bei Bedarf bereitzustellen.

Skalieren Sie mühelos von einem einzelnen Benutzer zu einer vollständigen DevOps-Bereitstellung über Teams hinweg. Reduzieren Sie den Aufwand für Softwareentwicklung und Tests, indem Sie Integrationen früher erstellen und Abhängigkeiten stabilisieren.

Vermeiden Sie den Aufwand für Tests mit Produktionsumgebungen. Simulieren Sie Dienste, die ansonsten in agilen DevOps-Umgebungen nicht zugänglich oder instabil sind.

Häufig gestellte Fragen

Einige Unternehmen tun dies nicht, insbesondere wenn sie nicht unter starkem Termindruck stehen oder bereits Zugriff auf umfassende Testumgebungen haben. Aber große Unternehmen, die über komplexe, voneinander abhängig arbeitende Systeme verfügen, können große Vorteile erzielen, wie zum Beispiel:

  • Reduzierung der Betriebskosten durch Verkürzung von Warte- und Konfigurationszeiten und Eliminierung von Zugangsgebühren.
  • Senkung der Investitionskosten, da Unternehmen weniger Hardware, weniger Laborressourcen und weniger Lizenzen verwenden.
  • Reduzierung des Risikos, da Entwicklungsteams früher, schneller und vollständiger testen.
  • Steigerung des Umsatzes durch Förderung von Innovation und Verkürzung der Markteinführungszeit.

Die Dienstvirtualisierung geht über Stubs und Mocks hinaus, indem sie eine umfassendere Simulation von Diensten und APIs erstellt. Stubs sind nur kleine Systemroutinen, die nicht das gesamte Programm umfassen. Mocks ahmen den tatsächlichen Code nach, aber nicht das gesamte Programm. Die Servicevirtualisierung hingegen bietet die Möglichkeit, eine Anwendung End-to-End zu testen. Es hat auch die Vorteile, echtes Verhalten zu simulieren, ohne echte Daten und große Mengen an Serverspeicherplatz zu verwenden und dennoch gründliche Informationen zu erhalten, die dazu beitragen, Fehler und Fehler zu vermeiden.

Service-Virtualisierungs-Testtools bieten realistische simulierte Antworten für alle Systeme, die über ein normales oder angepasstes Protokoll mit Kommunikation und Messaging verfügen. Dazu gehören große ERPs wie SAP, Mainframes, Datenbanken, mobile Netzwerke, UIs und Apps von Drittanbietern, um nur einige zu nennen.