Parasoft C/C++test 2022.2 unterstützt das neue MISRA C:2012 Amendment 3 und eine Entwurfsversion von MISRA C++ 202x. Erfahren Sie mehr >>

So simulieren Sie Fehler mit Service Virtualization

Von Chris Colosimo

17. März 2017

3  min lesen

In meinem letzter Blogbeitrag In Bezug auf die Servicevirtualisierung habe ich das Testen mithilfe einer virtuellen Antwort erörtert, um das Anwendungsverhalten zu simulieren, das sich noch entwickelt oder noch nicht verfügbar ist. Heute gehe ich auf die nächste Frage ein: Was ist, wenn es zusätzliche Anforderungen oder Bedingungen gibt, die mit der normalen Anwendung nicht erstellt werden können, weil das Verhalten des Backend-Systems einige abnormale Konfigurationen erfordert?

Die Service-Virtualisierung ermöglicht es uns, dieser Herausforderung zu begegnen, indem wir nicht nur uneingeschränkten Zugriff auf Backend-Systeme und -Technologie erhalten, sondern auch die Kontrolle über die von diesen Komponenten bereitgestellten Antworten übernehmen können. In der Regel wird die Servicevirtualisierung verwendet, um das Happy-Path-Verhalten abhängiger Komponenten in einer Umgebung zu simulieren oder um eine Lücke zu schließen, wenn eine Komponente fehlt. Dieser Punkt hat jedoch eine andere Seite. Wir könnten diesen Workflow auf den Kopf stellen und mithilfe der Service-Virtualisierung abnormales Verhalten für eine vorhandene Komponente simulieren.

Simulation abnormalen Verhaltens

Was ist eine Simulation abnormalen Verhaltens? Am einfachsten bezieht es sich auf die Bereitstellung negativer Antworten von Diensten auf vorhersehbare Weise, um das spezifische Anwendungsverhalten zu validieren oder sich dagegen zu schützen. Um dieses Konzept zu veranschaulichen, können wir eine Situation betrachten, in der ein Entwickler seine Anwendung gegen vorgelagerte Ausfälle kugelsicher machen möchte. Dies klingt nach einer wichtigen Aufgabe für jeden Entwickler, aber realistisch gesehen ist dies normalerweise unmöglich.

Stellen Sie sich vor, der Entwickler erstellt eine Warenkorbanwendung, die PayPal nutzt, und möchte einige Funktionen einbauen, die einen Ausfall von PayPal behandeln. Vielleicht möchten sie sicherstellen, dass der Endbenutzer seinen Fortschritt nicht verliert, wenn PayPal plötzlich offline geht oder eine negative Antwort sendet. Das Testen dieser Bedingung wäre eine Herausforderung in einer realen Umgebung. Wie würde ein Entwickler dies ohne Virtualisierung tun? Stellen Sie sich einen Anruf bei PayPal vor: "Könnten Sie Ihren Servern heute ein paar Stunden Zeitüberschreitung geben?" Dies wird nicht nur kein nettes Gespräch sein, sondern würde sich auch auf Ihre gesamte Entwicklungsumgebung auswirken, selbst wenn sie das negative Verhalten zufällig einführen würden. Jeder, der an diesem Tag gegen die PayPal-API testen wollte, würde darunter leiden.

Hier ist die Service-Virtualisierung so leistungsfähig. Da der Entwickler die Kontrolle über den virtuellen Dienst hat, kann er dieses abnormale Verhalten leicht konfigurieren. Sie können eine virtuelle PayPal-Schnittstelle an ihrem eigenen privaten Endpunkt erstellen, indem sie auf die WSDL- oder Swagger-Dokumentation verweisen, die von PayPal oder einem Servicevertrag eines Drittanbieters bereitgestellt wird. Sie würden dann in den virtuellen Dienst gehen und ihn auf „500 Internal Server Error. ” Auf diese Weise kann der Entwickler sehen, was unter diesen Bedingungen mit seinem Code geschehen würde. Wenn sie dies etwas weiter gehen, könnten sie ein „200 OK”Aber antworten Sie mit fehlerhaftem JSON oder stellen Sie den Dienst sogar so ein, dass er mit einer erheblichen Verzögerung reagiert, nur um zu sehen, was passiert. Die Möglichkeiten sind endlos.

Diese Art von abnormalen On-Demand-Tests ist von unschätzbarem Wert. Entwickler können damit ihren Code massieren und gleichzeitig alle Arten von abnormalem Antwortverhalten steuern. Dies beschleunigt den Validierungsprozess und verbessert den Anwendungscode insgesamt. Aber hier hört es nicht auf. Es gibt zusätzliche, normalerweise nicht durchdachte Bereiche, in denen die Simulation eines abnormalen Serviceverhaltens für Entwicklungsorganisationen von großem Vorteil sein kann, und das ist die Idee der Defektvirtualisierung.

Was ist Defektvirtualisierung?

Stellen Sie sich Defect Virtualization als "negative Wiederholung" vor. Was Sie tun, ist, dass Sie eine abnormale Umgebung erstellen, in der eine Anwendung „leben“ kann. Denken Sie an einen Crashtest-Dummy - Sie werden keinen Crashtest-Dummy in ein Auto einbauen, das unter normalen Bedingungen nur die Straße entlang fährt. Wahrscheinlich ist die Umgebung, in der dieser Dummy platziert wurde, speziell konfiguriert, um ihm einen ziemlich schlechten Tag zu ermöglichen.

Dies gilt auch für die Fehlervirtualisierung. Das Simulieren negativer Bedingungen, die extern auftreten können, zwingt eine Anwendung dazu, ein unerwartetes Verhalten aufzudecken. Dies kann sehr leistungsfähig sein, da Sie diese simulierte Umgebung verwenden können, um das Verhalten für QS- oder Entwicklungsteams wiederzugeben. Das Team könnte diese Simulation durchführen und aus erster Hand sehen, worum es geht. Dies würde das negative Verhalten für sie konsistent wiedergeben und während des Fixierens der Anwendung könnten sie das Szenario in der negativen Umgebung „wiedergeben“, um sicherzustellen, dass der neue Code das Problem behoben hat.

Im folgenden Video werde ich zeigen, wie Sie bei Bedarf gegen abnormale Bedingungen testen können. Ich werde auch einen Fehler in meiner Anwendung aufdecken und zeigen, wie ich durch abnormale Tests die Bedingungen, unter denen er auftritt, zuverlässig wiedergeben kann. Ich werde dies innerhalb des neuen freien tun Gemeinschaftsausgabe von Parasoft Virtualize.

Von Chris Colosimo

Als Produktmanager bei Parasoft strategisiert Chris die Produktentwicklung der Funktionstestlösungen von Parasoft. Seine Expertise in der SDLC-Beschleunigung durch Automatisierung hat ihn zu wichtigen Unternehmensbereitstellungen wie Capital One und CareFirst geführt.

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