In der Einrichtung eines Multi-step API Monitorings werden Variablen in der Regel verwendet, um Werte aus den HTTP-Antworten zu extrahieren und sie vorübergehend darin zu speichern, sodass sie in einem später folgenden Schritt wiederverwendet werden können. Damit kannst Du im Wesentlichen Schritte miteinander verbinden. Jedes Mal, wenn Du eine Information aus einer HTTP-Antwort nimmst und diese Information verwenden möchtest, um die nächste HTTP-Anfrage auszuführen, benötigst Du eine Variable. Einfacher gesagt: Schritt 1 erhält einen Wert von Deinem Server und speichert ihn in einer Variable. Schritt 2 nimmt dann den soeben gespeicherten Wert und verwendet ihn, um eine neue Anfrage zu erstellen. Du kannst so viele Variablen nutzen, wie Du magst, und in so vielen Schritten verwenden, wie Du benötigst.

Ein zweiter Grund zum Einsatz von Variablen ist, bestimmte Werte nur einmal festzulegen und sie in mehreren Schritten zu verwenden. Normalerweise werden solche Werte im Abschnitt „Predefined variables“ angegeben: Diese Variablen sind bei jedem Schritt in einem mehrstufigen Szenario verfügbar. Weitere Informationen findest Du unter Predefined variables.

Alle in einem Schritt definierten Variablen werden bewertet, sobald die HTTP-Anfrage ausgeführt und die Antwort verarbeitet wurde. Zu diesem Zeitpunkt wird der vorhandene Wert einer bereits bestehenden Variable (entweder aus einem vorherigen Schritt oder weil sie zuvor festgelegt wurde) überschrieben. Andernfalls wird eine neue Variable erstellt und der Liste hinzugefügt. Diese Liste von Variablen und zugehörigen Werten wird dann im nächsten Schritt übernommen.

Festlegen von Variablen

Wenn Du Variablen verwenden möchtest, müssen wir wissen, welchen Wert wir in dieser Variable speichern sollen. Ähnlich dem Muster, wie Prüfpunkte definiert wurden, werden Variablen definiert:

Source property variable name
Zum Beispiel:
Response body as JSON access_token access_token
  • Variable source (Variablenquelle): Dieses Feld bestimmt, welches Attribut der HTTP-Antwort extrahiert wird. Die verfügbaren Optionen werden in diesem Artikel erläutert.
  • Variable property (Variableneigenschaft): Einige Quelloptionen für Variablen (insbesondere Inhaltsextraktion und Optionen in Bezug auf den Header) erfordern weitere Angaben hinsichtlich Inhalt und Header. Dies wird für jeden Quelltyp detaillierter erläutert.
  • Variable name: Dies ist der Identifier mit einer speziellen Notation, der in nachfolgenden Schritten verwendet wird, um sich auf diese Variable zu beziehen.


Wenn bei der Bewertung einer Variable ein Problem auftritt (zum Beispiel, weil Du versuchst, eine Wert zu extrahieren, der in der Antwort nicht vorhanden ist), wird der Schritt nicht erfolgreich ausgeführt und meldet einen Fehler.

Bezugnahme auf Variablen in anderen Schritten

Sobald eine Variable erfolgreich bestimmt wurde, kann ihr Wert in der Anfragedefinition in folgenden Schritten wiederverwendet werden. Beziehe Dich auf die Variable immer, indem Du den Variablennamen in doppelte geschwungene Klammern setzt: {{variable-name}}.

  • In der URL eines Schritts: //myapi.customer.com/ProductInfo/{{ProductId}}
  • In einem Anfrage-Header: Authorization: Bearer {{access_token}}
  • Im Anfrage-Inhalt:

    { "ProductId": "{{ProductId}}", "Code": "P123456" }
  • Im Zielwert einer Assertion (eines Prüfpunkts). Wenn Du beispielsweise eine Variable {{ProductId}} (die in einem vorherigen Schritt mit einem Wert ausgefüllt wurde oder eine vordefinierte Variable ist) hast, kannst Du sie verwenden, um zu prüfen, dass die Antwort tatsächlich den Wert der Variable enthält:

    Response body as JSON Products[0].Id Equals {{ProductId}}
  • Im Eigenschaftswert einer Assertion (eines Prüfpunkts). Hast Du eine Variable  {{ProductId}}, kannst Du Dich auf diese Variable in einem JSON-Ausdruck oder einer XPath-Abfrage beziehen, um den Inhalt auszuwählen, den Du verifizieren möchtest:

    Response body as XML //Product[@Id="{{ProductId}}"]/Name/text() Equals Chocolate chip cookie

Vordefinierte Variablen

Unter dem Step-Editor findest Du einen Abschnitt, in dem Du weitere Variablen angeben kannst. Diese Variablen werden direkt zu Beginn eines Szenarios verfügbar sein. Wenn Du einen bestimmten Wert häufiger benötigst, kannst Du diesen Wert vorher definieren und in anderen Schritten verwenden. Dabei kann es sich um eine Produkt-ID handeln, die durchgehend in einem Szenario verwendet werden soll, oder um besondere Werte, die Deine API benötigt.

Ein besonderer Fall ist eine Variable, die den Domainnamen für jede API speichert. Durch Einsatz dieser Variable als Teil jeder URL musst Du sie nicht bei jedem Schritt wiederholen und kannst sie ganz einfach für das gesamte Szenario ändern.

Dafür erstellst Du eine Variable namens BaseURL mit dem Wert https://test.yourapi.com. Anhand einer Referenz zu dieser Variable könnte die URL für jeden API-Schritt die Form {{BaseURL}}/UserService/GetUserInfo. annehmen. Mit dieser Herangehensweise kannst Du ein mehrstufiges Szenario für eine andere Umgebung anpassen (zum Beispiel Testumgebung – Produktionsumgebung), ohne jeden Schritt ändern zu müssen.

Dabei ist es wichtig, den Namen BaseURL zu verwenden, da wir ihn etwas anders als die übrigen Variablen behandeln. Mehr dazu im Folgenden.

Codierung von Variablenwerten

Abhängig vom „Einsatzort“ der Variablen müssen einige Codierungsregeln zu den zugehörigen Werten eingehalten werden. Codierung bedeutet, dass wir Sonderzeichen in ein Format konvertieren müssen, das für HTTP-Anfragen geeignet ist. Beispielsweise bei einer Variable namens CompanyName mit dem Wert Ben & Jerry's werden wir dies im Bedarfsfall automatisch zu Ben+%26+Jerry's konvertieren.

Wir folgen diesen Regeln:

  • Variablen, die im URL-Feld eines Schrittes verwendet werden, werden URL-kodiert.
  • Variablen, die im Feld Anfrageinhalt (Request Body) verwendet werden, werden nur URL-kodiert, wenn ein Content-Type Header mit dem Wert application/x-www-form-urlencoded angegeben wurde.
  • Die Variable namens BaseURL wird NICHT URL-kodiert, da der Domainnamensteil einer URL nicht kodiert werden sollte.

Die letzte Regel zeigt, weshalb das Beispiel BaseURL ein Spezialfall ist: Die Sonderzeichen Doppelpunkt und Schrägstrich im Wert https://test.yourapi.com/Products sollten niemals kodiert werden.

Automatische Variablen

Abgesehen von den Variablen, die in der Prüfobjekteinrichtung definiert werden, hast Du auch Zugang zu einer Anzahl automatischer Variablen, die wir für Dich erzeugt haben. Die meisten sind tatsächlich Funktionen, die einen Wert generieren, den Du in den HTTP-Anfragen und während der Bewertung von HTTP-Antworten anhand von Assertions nutzen kannst.

Es gibt die folgenden automatischen Variablen:

  • @DateTime(format,offset): Die @DateTime Variable erzeugt dynamische Datums- und/oder Zeitwerte, je nach Format, dass du angegeben hast. Datum/Zeit ist immer die aktuelle Zeit, wie sie in der UTC-Zeitzone erscheint. Es ist möglich, Daten/Zeiten/Zeitzonen zu generieren, indem du die optionalen Offset-Parameter angibst, die die vorbestimmte Anzahl von Sekunden addiert oder subtrahiert. Um beispielsweise die aktuelle UTC-Zeit in Eastern Standard Time (UTC-5) zu konvertieren, gib -18000 (-5 * 60 * 60) als Offset an. Um dementsprechend „diese Uhrzeit morgen“ in UTC zu berechnen, gib 86400 (24 * 60 * 60) an. Wenn Du keinen Offset-Wert eingibst, wird dementsprechend kein Offset angewendet. Zum Beispiel: Wenn jetzt gerade der 24. Februar 2018 22:30 UTC wäre, würden die folgenden Ausdrücke diese Ergebnisse liefern:
    {{@DateTime(dd-MM-yyyy HH:mm)}} 24-02-2018 22:30
    Jetzt
    {{@DateTime(ISO)}} 2018-02-24T22:30:00.0000000Z
    ISO 8601 format
    {{@DateTime(UNIX)}} 1519511400
    Unix-Epochenzeit
    {{@DateTime(MM/dd/yyyy,-86400)}} 02/23/2018
    Gestern
    {{@DateTime(MM/dd/yyyy,86400)}} 02/25/2018
    Morgen
  • Random-Guid: Diese Variable erzeugt einen Zufallswert in der Form AB0AD14D-9611-41A8-9C25-7D94B895CFF1. Du kannst diese Variable nutzen, wenn Du einen zufälligen Wert in URL, POST-Daten oder HTTP-Header benötigst.
    Wenn Du die Variable Random-Guid in mehreren Schritten nutzt, wird jeder Schritt einen anderen Wert erhalten. Jedes Mal, wenn das Monitoring ausgeführt wird, wird ein komplett neuer zufälliger Wert eingesetzt.
  • Checkpoint-Server-Id: Bei der Ausführung eines Prüfobjekts des Multi-step API Monitorings gibt diese Variable einen numerischen Wert aus, der den Standort von Uptrends‘ Checkpoint identifiziert, der diesen Test durchführt.
    Wenn der Test zum Beispiel von unserem Checkpoint in Sydney, Australien, ausgeführt wird, gibt die Variable den Wert 30 aus. Die Liste der Checkpoint-Server und ihre zugehörigen Server IDs ist über die Uptrends API bei Checkpointservers Endpoint verfügbar.
  • RedirectUrl: Falls einer der Schritte bei dem Monitoring einen Redirect-Code zurückgeben sollte und Du diese Redirect-Antwort erfassen und testen möchtest, wird diese automatische Variable die URL enthalten, auf die sich die Weiterleitung bezieht, statt ihr automatisch zu folgen.
    Das passiert jedoch nur, wenn Du festlegst, Weiterleitungen nicht automatisch zu folgen, sondern einen Prüfpunkt einrichtest, der auf den richtigen Redirect-Code prüft. Dieses Verfahren wird hier detaillierter erläutert: Handhabung von Redirects beim Multi-step Monitoring.

Mehrfaches Verwenden eines automatisch erzeugten Werts

Einige dieser Variablen-Funktionen (insbesondere solche, die einen Zufalls- oder Datum-/Zeit-Werte erzeugen) werden jedes Mal neu bewertet, wenn Du sie einsetzt, und erzeugen jedes Mal einen neuen Wert. Wenn Du einen bestimmten Wert generieren und mehrfach in einem mehrstufigen Szenario verwenden möchtest, kannst Du (wie in einem der vorherigen Abschnitte erläutert) eine Variable vordefinieren und eine automatische Variable als Wert nutzen.

Beispiele vordefinierter Variablen, die automatische Variablen nutzen

Name Wert Einsatz
SearchDate {{@DateTime(dd-MM-yyyy)}} Ein Datums-Wert, der als Eingabe einer Suchabfrage eingesetzt wird.
UniqueEmail {{@RandomGuid}}@mycompany.com Ein zufälliger Guid-Wert zusammen mit festgelegtem Text, um eine E-Mail-Adresse zu erzeugen, die sich jedes Mal unterscheidet.
OrderAmount {{@RandomInt(1, 10)}} Eine zufällige Zahl zwischen 1 und 10, die als zu bestellende Anzahl von Produkten verwendet wird. Bei einem nachfolgenden Aufruf kann diese Variable nochmals verwendet werden, um den Inhalt eines Einkaufswagens zu prüfen und zu bestätigen, dass dieser tatsächlich diese Menge enthält.