Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Zum Abschnitt springen
Parasoft-Blog
Machen Sie mehr als nur Spott und Stubbing. Schöpfen Sie die Vorteile der Service-Virtualisierung voll aus, die eine Anwendung vollständig testet – auch wenn noch nicht alle Komponenten verfügbar sind.
Zum Abschnitt springen
Servicevirtualisierung (SV) ist eine Methode, die DevOps-Teams verwenden, um Komponenten des Anwendungsverhaltens zu simulieren . Zu diesen Komponenten gehören APIs, Datenbanken, Netzwerke, Geräte und vieles mehr. Teams nutzen SV, da einige Projektkomponenten aus verschiedenen Gründen möglicherweise nicht verfügbar sind, unter anderem:
Service-Virtualisierung ist wie ein Flugsimulator für Anwendungen. Ziel ist es, dass Tester während der Entwicklung auf Funktionalität und Mängel testen und potenzielle Probleme erkennen und so früh wie möglich angehen, damit das Flugzeug nicht abstürzt.
Die Auswirkungen und Vorteile der Virtualisierung auf Qualitäts- und Leistungsbenchmarks
Lehren von ING & Bank of America
Die Verwendung von SV spart Zeit, Geld, Ärger und Frust. DevOps-Teams geraten nicht in eine „Wir gegen die“-Haltung, wenn die Entwicklung ins Stocken gerät, während sie darauf warten, dass ihre Teamkollegen ihren Teil erledigen.
Servicevirtualisierungstools können auch nicht-funktionale Aspekte des Systems simulieren, wie beispielsweise hohe Systemauslastung oder langsame Verbindungen und Antwortzeiten. Einige virtuelle Dienste verfügen über eine Gruppe von simulierten Antworten für vorgegebene Anfragekriterien und leiten alle anderen Anfragen an ein operatives Backend-System weiter. Dies wird als partielles Stubbing bezeichnet.
So wählen Sie das richtige Service-Virtualisierungstool aus
Wie Mocks kann auch die Service-Virtualisierung komplexe Request-Matcher beinhalten. Diese ermöglichen es dem Test, eine Antwort für viele Arten von Anforderungen zurückzugeben. Über einfaches Mocking hinaus simuliert die Service-Virtualisierung das Verhalten eines Systems, wenn es Antworten auf der Grundlage von Anforderungsdaten und -attributen erstellt und zurückgibt.
Stubs und Mocks führen einige der gleichen Funktionen aus wie die Service-Virtualisierung, sind aber, wie wir anmerken, nicht so gründlich oder so flexibel.
Ein Stub führt eine Schnittstelle minimal aus und gibt fest codierte Informationen zurück, die eng mit der Testsuite verknüpft sind. Testteams finden Stubs besonders hilfreich, wenn die Testsuite unkompliziert ist und die Beibehaltung der fest codierten Informationen im Stub kein Problem darstellt.
Entwickler schreiben Stubs, normalerweise für den persönlichen Gebrauch, und geben sie normalerweise nicht weiter, weil die Stubs nicht zwischen Plattformen funktionieren können und weil es fest codierte Infrastrukturabhängigkeiten gibt.
Ein Mock ist ein programmierbarer Schnittstellen-„Beobachter“, der überprüft, ob das Entwicklungsergebnis den im Test definierten Erwartungen entspricht. Testtools erstellen Mocks mithilfe einer Drittanbieterbibliothek, beispielsweise JMock, Mockito oder WireMock.
Tester verwenden Mocks, wenn sie über große Testsuiten verfügen, bei denen die Verwendung eines Stubs nicht funktioniert (weil jeder Test eine andere Dateneinrichtung erfordert) oder die Aufbewahrung in einem Stub zu teuer wäre. Entwickler schreiben auch Mocks für ihren eigenen persönlichen Gebrauch und teilen sie normalerweise nicht aus dem gleichen Grund, aus dem sie keine Stubs teilen, wie oben erwähnt.
Zu den vielen Vorteilen der Service-Virtualisierung gehören:
Einige Leute sagen, dass die Verwendung von Service-Virtualisierung zu viele Herausforderungen mit sich bringt. Parasoft bietet Lösungen.
Herausforderung: „Sind SV-Tools nicht teurer als Tester oder Entwickler, die einen Stub oder ein Mock erstellen, um das Projekt zu testen?“
Lösung: Der Verzicht auf SV erschwert das Testen und verursacht zusätzliche Kosten. Erfahren Sie hier, wie Parasoft Komplexität, Kosten und andere potenzielle Probleme angeht.
Herausforderung: „SV-Systeme sind groß und möglicherweise nicht das Richtige für mein kleines Unternehmen.“
Lösung: Das einfache, wertorientierte Lizenzmodell von Parasoft skaliert mit den Bedürfnissen Ihres Unternehmens und unterstützt große wie kleine Implementierungen mit einem Mix aus Angeboten.
Herausforderung: „Wie kann mein Unternehmen sicherstellen, dass das von mir gewählte Servicevirtualisierungspaket meinen Bedürfnissen entspricht, um eine schlechte Benutzererfahrung zu vermeiden?“
Lösung: Die Experten von Parasoft erläutern die wichtigsten Kriterien für die Auswahl des richtigen Servicevirtualisierungstools für die Anforderungen Ihres Unternehmens.
DevOps-Teams verwenden häufig zwei Haupttypen von SV:
Die Wartung und Bereitstellung von Datenbanken ist oft problematisch. Datenbankadministratoren verfügen in Zeiten cloudbasierter Prozesse möglicherweise nicht über die notwendigen Schulungen oder die erforderlichen Fähigkeiten, um effizient und effektiv wiederverwendbare Testdaten zu erstellen . Die Virtualisierung von Datenbankdiensten ermöglicht es Testern, Datenbankebenen zu entkoppeln, wodurch Teammitglieder die Datenbankressourcen bedarfsgerecht teilen und aufteilen können.
Durch die Virtualisierung von Datenbankdiensten können Teams mit dem Erstellen und Testen mit realistischen Datenbeispielen fortfahren, selbst wenn keine Datenquellen verfügbar sind. Sobald der Entwickler die Datenquelle identifiziert hat, gibt er/sie die Attribute an, die die Quelle enthält. Wenn eine Anforderung an das virtuelle Asset übergeben wird, verwendet es die simulierte Datenquelle, um umgebungsspezifische Antworten zu erzeugen, die auf Anforderungsfaktoren basieren. Wenn der Tester die Datensätze modifiziert, werden die simulierten Antworten automatisch aktualisiert.
Die Datenbankvirtualisierung verringert die Reibung im Team, die häufig durch Abhängigkeiten verursacht wird. Die Arbeit an der Entwicklung kann voranschreiten, obwohl die eigentlichen Datenquellen nicht vor Ort sind. Teams können auch eine virtuelle Datenbank verwenden, um ohne Unterbrechung von einem Server auf einen anderen zu migrieren. Dies ist eine Gelegenheit, die hohen Infrastrukturkosten einzusparen, die häufig für die herkömmliche Datenbankverwaltung anfallen.
APIs (Application Programming Interfaces) sind Softwarevermittler, die es zwei Anwendungen ermöglichen, miteinander zu kommunizieren. Wenn Sie auf Ihrem PC mit Facebook interagieren oder auf Ihrem Telefon eine Transaktion auf einer Bank-Website durchführen oder die Nachrichten abrufen, sind APIs am Werk, entweder vor oder hinter den Kulissen. Komplexe Anwendungen können viele verschiedene Arten von APIs verwenden, was die Schwierigkeit gründlicher Tests erhöht.
Wenn Tester Service-Virtualisierung zum Testen von APIs verwenden, schreitet die Entwicklung schnell voran und die Qualität steigt. Leistungstests, Sandboxing von Drittanbietern und Lasttests helfen Entwicklern dabei, die vollen Fähigkeiten einer API während Verzögerungen und Situationen mit hoher Auslastung und starkem Datenverkehr zu verstehen. Tester können die Dienstvirtualisierung verwenden, um verschiedene Nachrichtentypen und verschiedene Protokolle wie JSON, JMS, WADL und REST zu testen. Sie können es für End-to-End-Tests verwenden, die eine mehrschichtige Validierung über eine Vielzahl von Endpunkten hinweg ermöglichen. Andere Möglichkeiten, wie Entwickler API-Service-Virtualisierung verwenden, umfassen die Ermöglichung von Testern zu:
Unternehmen haben festgestellt, dass das Testen von Microservices mithilfe von Servicevirtualisierung sehr wertvoll ist. Microservices sind kleine Teile eines größeren Systems, die Unternehmen unabhängig voneinander veröffentlicht oder zu verschiedenen Zeiten geändert oder implementiert haben. Wenn jeder Dienst von einem anderen Ort und einer anderen Umgebung stammt, ist das Testen schwierig. Mithilfe der API-Microservices-Virtualisierung installieren Tester nur den Microservice, an dem sie gerade arbeiten, und virtualisieren dann den Rest, was Stunden an Zeit spart.
Sehen Sie Parasoft Virtualize in Aktion!
Die Reduzierung von Abhängigkeiten ist ein weiterer Vorteil von SV-API-Tests. Wenn Entwickler die Qualitätssicherung von Beginn der Systementwicklung an einbeziehen, ermöglicht SV-API-Tests der Qualitätssicherung, direkt einzusteigen und laufende Arbeiten in einer exakten Nachbildung der Umgebung zu testen – selbst wenn die Entwickler noch keine Programmdetails veröffentlicht haben. Dies umfasst die Durchführung automatisierter Tests oder kontinuierliches Testen für direktes Feedback.
Es reicht nicht aus, sicherzustellen, dass die Anwendung ordnungsgemäß funktioniert. Es muss auch die Systemanforderungen und die umfassenderen Geschäftsziele des Projekts erfüllen und sicherstellen, dass alle Integrationen kontinuierlich und stabil sind. Die API-Service-Virtualisierung befähigt die QA zum Testen, selbst wenn die Entwickler die API noch erstellen. Außerdem hilft es App-Testern sicherzustellen, dass APIs erfolgreich in APIs von Drittanbietern integriert werden können, selbst wenn diese Apps noch nicht zur Veröffentlichung bereit sind.
Um CI/CD (Continuous Integration/Continuous Delivery) zu realisieren, ist eine Automatisierung von 80 % der Tests optimal. Das Testen von APIs ist enorm wichtig, da es sicherstellt, dass die gesamte Pipeline auch nach der Implementierung neuer Funktionen weiterhin korrekt funktioniert. Dies umfasst sowohl externe als auch interne APIs. Betrieb und Entwicklung verschmelzen zunehmend, wodurch Feedbackschleifen und Releases häufiger werden. Wenn diese Teams jedoch nur UI-Testsuiten ausführen, können die Feedbackschleifen unterbrochen werden. Die API-Servicevirtualisierung ermöglicht es DevOps-Teams, Abhängigkeiten frühzeitig zu simulieren und so automatisierte Tests parallel zum Entwicklungsfortschritt zu implementieren.
Wenn Ihre Designumgebung iterativ ist, ziehen Sie die Dienstvirtualisierung in Betracht. Es ermöglicht Ihnen, schnell mit neuen Ideen und Ansätzen zu experimentieren, ohne die gesamte API zu erstellen. Das Ergebnis ist eine agile Methode, um zu sehen, ob neue Kollaborationen und Funktionen funktionieren – ohne große Investitionen in Zeit und Ressourcen.
Die Servicevirtualisierung ermöglicht es Teams, gemeinsame Benutzeroberflächenintegrationen mit Webpaketen wie SOA und AJAX zu beschreiben. Auf diese Weise können sie UI-Tests jederzeit und überall ohne Unterbrechungen ausführen. Teams können externe Umgebungen simulieren und so mehr Kontrolle über die Daten erhalten, die die Webdienste zurückgeben. Außerdem können Teams sogar UI-Integrationen erstellen und testen, bevor die Webdienste verfügbar werden.
Beim API-Mocking werden Komponenten von Software nachgeahmt, damit Entwickler die Funktionsfähigkeit testen können. Die Funktionen des Spotts sind normalerweise kontextspezifisch. Mit anderen Worten, die Funktionen ahmen eine Verhaltensreaktion nach, um eine bestimmte Entwicklungsanforderung zu erfüllen. Darüber hinaus isoliert das API-Mocking nur einen einzelnen Teil der Anwendung. Es ist zu einfach und zwingt Entwickler, neue Schnittstellen zu erstellen, was kompliziert ist.
Stubs sind ähnlich simpel und umständlich. Die Verwendung von Mocks und Stubs ist im Vergleich zur API-Service-Virtualisierung zeitaufwändiger und in ihrer Effektivität begrenzt.
Die API-Service-Virtualisierung erzeugt eine wesentlich funktionsreichere, realistischere replizierte Umgebung. Zu den Vorteilen gehören:
Beispiel 1. Ihr Team arbeitet an einer großen, komplexen Legacy-Anwendung mit vielen Abhängigkeiten. Die aktuelle Testabdeckung ist gering, insbesondere wenn die Systemabhängigkeiten wiederholt nicht verfügbar sind.
Die Servicevirtualisierung ermöglicht es, den Datenverkehr zu protokollieren, sobald die Abhängigkeiten verfügbar sind. Dadurch kann das Team später mit virtuellen Diensten testen, indem der Datenverkehr wiedergegeben wird. Dies reduziert die Auswirkungen von Ausfallzeiten der Abhängigkeiten auf das Team und die Tester.
Beispiel 2. Ihr Team arbeitet in einer Microservices-Architektur. Eine Abteilung besteht aus 10 Testern und 20 Entwicklern. Die Gruppe ist für die Bereitstellung von 70 kleinen Anwendungen verantwortlich, die ein Produkt bilden.
Arbeitsteams testen die Anwendungen einzeln und isoliert. Während das CI/CD-System Ihres Teams gut funktioniert, ist die Außenumgebung nicht agil. Ihre APIs sind langsam und oft nicht verfügbar, was die Einrichtung von Testdaten erschwert.
Um das Problem zu lösen, verwendet jedes Team, das mit den Drittanbietern kommuniziert, SV-Tools, und die Akzeptanztester verwenden sie während des CI-Builds. Die Entwickler nutzen sie auch für manuelle explorative Tests. Das Team verwendet dann die Tools im primären Integrations-Build, der alle Anwendungen ausführt. Schließlich verwenden die Leistungstestteams die SV-Tools in den Full-Stack-Leistungstests.
Service-Virtualisierung ist besser als Mocks und Stubs und leistet Ihrem Unternehmen gute Dienste, da sie kontinuierliches Testen ermöglicht, gemeinsam nutzbarer und wiederverwendbar ist. Als Ergänzung zu Ihrem CI/CD-Workflow senkt SV die Kosten und verkürzt die Markteinführungszeit.
Beginnen Sie mit der Beseitigung von Einschränkungen in Ihrer Umgebung mit Virtualize
Weiterführende Inhalte