Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Überwinden Sie Testdatenhindernisse mit Service-Virtualisierung

Überwinden Sie Testdatenhindernisse mit Service-Virtualisierung Lesezeit: 5 Minuten

 


Daten sind ein Kostenproblem

Eine der größten Herausforderungen, denen sich Softwareentwickler und Tester täglich gegenübersehen, ist die Unfähigkeit, realistische Daten zu erhalten. Als Entwickler interagieren Sie häufig mit einem nachgeschalteten Dienst und müssen alle in dieser Umgebung verfügbaren Daten verwenden, da der Prozess zum Abrufen der tatsächlich verwendbaren Daten für Ihr Szenario äußerst zeitaufwändig ist. Oft können Sie die benötigten Daten nicht finden und sie müssen aus der Produktion entnommen werden, was eine Reihe neuer Herausforderungen mit sich bringt.

Um die Angelegenheit zu verkomplizieren, können personenbezogene Daten nicht aus der Produktion verwendet werden, da dies das Risiko eines Unternehmens für Diebstahl, Verlust oder Gefährdung erhöht. Nehmen Sie den jüngsten Verstoß bei Yahoo, bei dem 500 Millionen E-Mail-Konten verletzt wurden, oder die ~ 68 Milliarden LinkedIn-Benutzer, deren Daten kürzlich kompromittiert wurden. Diese Verstöße ereigneten sich auf Produktionsebene, wo die Sicherheit hoch ist. Produktionsdaten, die in Entwicklungsbereichen verwendet werden, sind keine Seltenheit und die Sicherheit ist tendenziell geringer. Auf diese Weise zu arbeiten, birgt ein erhebliches Risiko für den Ruf eines Unternehmens als Marke. Daher müssen vertrauliche Daten gesäubert oder maskiert werden. Dies ist ein zeitaufwändiger Prozess, der Datenexpertise erfordert.


Verwenden der Service-Virtualisierung zur Überwindung von Datenkosten

Unabhängig davon sind Daten ein Kostenproblem, da sie Sie verlangsamen. Mithilfe der Servicevirtualisierung können Sie nicht nur das Verhalten und die Funktionalität einer abhängigen Anwendung steuern, um Ihre Testumgebungen zu stabilisieren, sondern auch die Datenquellen dieser Abhängigkeit vollständig steuern und alle Daten bereitstellen, die Sie an diesem Tag für Ihre Bemühungen benötigen. Zu diesem Zeitpunkt ändern sich die Regeln, da Sie jetzt nicht nur die Kontrolle über die Daten, sondern auch über die Logik haben. Sie können Services erstellen, die sich so verhalten, wie Sie es möchten, anstatt sich strikt an ihre normalen Verhaltensmuster zu halten.

In einem früheren Blog habe ich die Fehlervirtualisierung erörtert, die dieselben Grundprinzipien aufweist. Aber da haben wir über Servicelogik gesprochen. Dieser Blog wird den nächsten Schritt machen und über Datenkontrolle sprechen. Konzentrieren wir uns zu Beginn auf die aktuelle Datenherausforderung, mit der Tester und Entwickler täglich konfrontiert sind.

Ein typischer Tag der Daten im Leben eines Entwicklers

Zu Beginn des Entwicklungsprozesses einer Anwendung sind die zum Testen erforderlichen Daten normalerweise einfach, da die volle Funktionalität des Dienstes noch nicht realisiert wurde. Wenn die Entwicklung weitere Funktionen hinzufügt, steigt die Testreife und damit auch die Datenkomplexität.

Verwenden wir zum Beispiel das Beispiel aus meinem Vorheriger Blogpost - Nehmen wir an, ich bin eine Fluggesellschaft und entwickle Funktionen auf meiner Ticketseite. Ich muss überprüfen, ob Benutzer Tickets für ihre Flüge erhalten können, und je nachdem, wie weit die Flüge in der Zukunft entfernt sind, erhält der Benutzer eine von mehreren Antworten, die sich ändern, wenn die Zeit näher rückt. Zu Beginn des Entwicklungsprozesses konnte ich einfach eine Reihe komplexer Daten mit Flügen in 3 Monaten in der Zukunft generieren, sodass ich alle Tests durchführen konnte, die ich für den Moment benötige. Aber das Problem ist natürlich, dass ich gerade die Zündschnur einer Zeitbombe angezündet habe. In drei Monaten laufen diese schönen Daten ab, und ich habe sie wahrscheinlich vergessen. Plötzlich schlagen alle meine Tests fehl, genau zum falschen Zeitpunkt, da die Veröffentlichung bevorsteht und ich einfach keine Zeit mehr habe, die Daten neu zu generieren.

Einen nachhaltigen Weg beschreiten

Durch die frühzeitige Einführung der Service-Virtualisierung im Entwicklungsprozess können Sie den Grundstein für die Bereitstellung von Lösungen für diese Datenherausforderungen legen. Die Daten eines virtuellen Dienstes können von zahlreichen Standorten abgeleitet werden. Zu Beginn beginnen einfache virtuelle Dienste jedoch mit festen Daten. Sie erstellen diese „Sachanlagen“ oder Verspottungen, um die Testphasen des Was-wäre-wenn-Szenarios anzugehen und die Dinge sehr einfach zu halten. Die Idee dabei ist: "Ich brauche nur einen Dienst, der mit dieser speziellen Nutzlast reagiert."

Wenn virtuelle Dienste ausgereift sind, müssen die Daten vom Dienst getrennt werden, damit Sie den virtuellen Dienst nicht öffnen müssen, um die Daten zu bearbeiten, wenn Sie der Simulation Logik hinzufügen möchten. In der Tat erstellen ältere Benutzer einen virtuellen Dienst so, dass die Datenquelle den Großteil der Logik verarbeitet. Sie können die Datenquelle dann an einen Tester oder ein Testdatenverwaltungsteam weitergeben, um alle Daten einzufügen, die dieser Service möglicherweise in Zukunft benötigt. Das Hinzufügen neuer Funktionen zum Dienst ist so einfach wie das Hinzufügen einer Zeile zur Datenquelle. Auf diese Weise kann der Virtualisierungsaufwand gemeinsam genutzt werden, und ein virtueller Dienst kann mehrere Teams aufnehmen. Virtuelle Dienste werden zu lebenden Organismen, die nach Bedarf wachsen und sich verändern.

Woher kommen diese Daten?

Sobald die Entwicklung den ersten einfachen Service erstellt hat, ist es Zeit für das Testteam, diese zu übernehmen. Testteams haben komplexere Datenanforderungen. Woher kommen diese Daten? Normalerweise leiten Sie diese Daten aus Aufnahme und Wiedergabe ab. Dies ist häufig der erste Schritt beim Erstellen eines virtuellen Dienstes. Sie zeichnen die Transaktionen zwischen einer Anwendung und den abhängigen Backend-Systemen auf und verwenden diese Aufzeichnung, um Ihren virtuellen Dienst zu erstellen. Auf diese Weise können Sie eine sehr benutzerfreundliche Basisdatenquelle erstellen, die bei Bedarf erweitert werden kann. In meinem Airline-Beispiel könnten wir so realistische Flugnummern und Ziele erhalten. Die Daten hätten die erforderliche Komplexität, einschließlich Flüge mit mehreren Segmenten und internationalen Flügen. Die Datenquellenkorrelation behandelt alle komplexen Anforderungs- / Antwortbeziehungen. Da nachfolgende Änderungen an den „realen“ Daten einfach neu aufgezeichnet und mit dem vorhandenen virtuellen Dienst zusammengeführt werden können, ist das Abrufen neuer Daten trivial.

Die Daten, die wir aufzeichnen, stammen nicht aus der Produktion, und dies schützt uns vor einer Datenpanne in den unteren Umgebungen. Die Herausforderung bei diesen Daten besteht darin, dass sie nicht so vollständig oder aktuell sind, da sie nicht aus der Produktion stammen. Hier wird die Datengenerierung und -manipulation zu einem mächtigen Werkzeug Funktion der Service-Virtualisierung.

Nicht vorhandene Daten können durch einfach generierte Daten ergänzt werden, um genau das zu erreichen, was wir benötigen. In meinem Airline-Beispiel können die Flugdaten in den Antworten immer um das heutige Datum um 3 Monate versetzt sein. Durch die Verwendung der Datengenerierung wird diese Aufgabe trivial.

Wir können die Daten weiterhin massieren und bearbeiten, indem wir dynamische Daten bereitstellen, um alle nicht definierten Anforderungs- / Antwortbeziehungen zu verwalten. Dies sind die Arten von Beziehungen, die in einem statischen Dataset niemals existieren könnten. Nehmen wir im Beispiel einer Fluggesellschaft an, dass bei einer Anforderung an die nachgeschaltete Komponente der aktuelle Standort des Benutzers angegeben wird und dieser in der Antwort als Abflug verwendet wird. Da sich unsere Testfälle ständig ändern würden, müsste ein echter Service alle aktuellen Standorte warten, damit sie in der Antwort bereitgestellt werden können. Wenn Sie einen virtuellen Dienst verwenden, müssen Sie nicht alle Standorte verwalten. Sie können den aktuellen Standort des Benutzers einfach dynamisch als Abflugort zurückgeben.

Schließlich kann die Verwendung negativer Daten entweder statisch bereitgestellt oder in die Datenquelle eingefügt werden, um negative oder abnormale Tests zu erleichtern. In meinem Beispiel einer Fluggesellschaft würde dies beispielsweise das Einfügen eines zufällig stornierten oder verspäteten Flugs bedeuten, um zu bestätigen, dass der Benutzer benachrichtigt wird, bevor er zum Flughafen fliegt.


Im folgenden Video beschreibe ich einige dieser typischen Herausforderungen, denen Entwickler bei der Arbeit mit Daten gegenüberstehen, und zeige Ihnen, wie Sie sie auf eine meiner Meinung nach ziemlich coole Art und Weise mit der Service-Virtualisierung bewältigen können.

 

Geschrieben 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.