42.11 WebAPI

Dieser Abschnitt beschreibt detailliert die WebAPI-Knoten für die Interaktion mit Webservices auf API-Ebene. Unter "WebAPI – Webdienste testen" finden Sie eine Beschreibung der Ideen und Konzepte, auf denen die folgenden Knoten beruhen.

WebAPI42.11.1 Web-Request

Dieser Knoten verschickt einen HTTP(S)-Request und empfängt die Anwort.

Enthalten in: Alle Arten von Sequenzen außer Pre-Request-Handler und Post-Request-Handler oder deren Kinder.

Kinder: Pre-Request-Handler, Post-Request-Handler

Ausführung: Es wird ein WebRequest-Objekt initialisiert und für Skripting während der Pre-Request-Phase bereitgestellt. Der Request wird verschickt, die Antwort empfangen und als WebResponse-Objekt während der Post-Request-Phase für das Skripting gebunden. Details zur Skripting-API für Web-Requests finden Sie in "WebAPI Skripting-API".

Attribute:

Web Request Attributes
Abbildung 42.73:  Web-Request-Attribute
Name

Der Name eines Web-Requests ist eine Art Kurzkommentar. Er wird in der Baumdarstellung der Testsuite angegeben und sollte etwas über die Funktion des Requests aussagen.

Variabel: Ja

Einschränkungen: Keine

URL

Die URL, an die der Request gesendet werden soll, exklusive der Parameter. Als Protokoll sind sowohl HTTP als auch HTTPS zulässig. Internationalisierte Domainnamen (IDN) werden in der URL ebenso wie Pfade beginnend mit 'file://' nicht unterstützt.

Variabel: Ja

Einschränkungen: Darf nicht leer sein und muss eine gültige URL darstellen.

Methode

Über dieses Attribut legen Sie die Methode des Requests fest: GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE oder PATCH. Kann beliebige Verweise auf Variablen enthalten - die Auswahlmöglichkeit "$(requestMethod)" ist nur ein unverbindlicher Vorschlag.

Variabel: Ja

Einschränkungen: Keine

Parameter

Hier können Sie die Parameter für den Request definieren. Die Parameter werden bei der Ausführung automatisch URL-kodiert und an die oben angegebe URL angehängt. Näheres zur Arbeit mit der Tabelle finden Sie in "Tabellen".

Variabel: Ja

Einschränkungen: Keine

Header

Mit dieser Tabelle können benutzerdefinierte Header spezifiziert werden. Jede Zeile entspricht einem Header mit Name und Wert. Näheres zur Arbeit mit der Tabelle finden Sie in "Tabellen".

Variabel: Ja

Einschränkungen: Keine

Zusätzliche Header

Alternativ oder in Ergänzung zur "Header"-Tabelle, können hier weitere Header als Text definiert werden. Damit ist es einfacher, Variablen zu nutzen und ggf. auch Header wegzulassen. Anzugeben ist jeweils ein Header pro Zeile im Format Header: Wert.

Variabel: Ja

Einschränkungen: Korrekt formatierte Header, durch Zeilenumbruch getrennt.

Payload-Datei

Für Methoden wie POST oder PUT, welche Daten an den Server schicken, kann eine Datei als Payload verwendet werden. Um den Empfänger des Requests über das spezifische Format der Datei zu informieren, sollte der Header "Content-Type" auf den entsprechenden Wert gesetzt werden. Weitere Informationen zu "Content-Type" finden Sie auf developer.mozilla.org.

Variabel: Ja

Einschränkungen: Ein Pfad zu einer existierenden und lesbaren Datei.

Body

Wird keine Payload-Datei verwendet, kann der Body eines Requests direkt in diesem Feld angegeben werden. Für gängige Content-Types wie Text, JSON, XML/HTML oder YAML wird Syntaxhervorhebung unterstützt. Das enthaltene Format legen Sie über die "Format:"-ComboBox fest. Beachten Sie dabei, dass dieses Format keine Auswirkungen auf den "Content-Type" Header hat.

Um den Empfänger des Requests über das spezifische Format des Body zu informieren, sollte der Header "Content-Type" auf den entsprechenden Wert gesetzt werden. Weitere Informationen zu "Content-Type" finden Sie unter: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type.

Variabel: Ja

Einschränkungen: Keine

Erwarteter Statuscode

Der erwartete Statuscode bzw. -codes. Kann eine einzelne Zahl "X", ein Bereich "X-Y" oder eine durch Komma getrennte Liste von Zahlen und oder Bereichen sein.

Variabel: Ja

Einschränkungen: Keine

Fehlerstufe bei unerwartetem Statuscode

Die Fehlerstufe für einen unerwarteten Statuscode bestimmt, wie dieser im Testlaufprotokoll angezeigt und wie anschließend weiter verfahren wird. Bei Fehlerstufe "Exception" wird eine "UnexpectedStatusCodeException" geworfen und der Request damit sofort abgebrochen. Auch bei der Stufe "Fehler" werden keine Post-Request-Handler-Knoten ausgeführt, sondern der Test nach dem Request fortgesetzt. Wenn Sie einen Fehler im Protokoll sehen und trotzdem Post-Request-Handler ausführen möchten, ignorieren Sie hier den Statuscode und prüfen Sie ihn stattdessen in Ihrem Handler.

Variabel: Nein

Einschränkungen: Keine

Antwort in Datei speichern

Hier kann eine Datei angegeben werden, in welche die Antwort des Servers geschrieben wird. Dadurch können Dateien heruntergeladen werden. Bereits vorhandene Dateien werden dabei überschrieben, seien Sie daher vorsichtig mit diesem Attribut.

Variabel: Ja

Einschränkungen: Ein Pfad zu einer beschreibbaren Datei.

Wartezeit

Zeit in Millisekunden, die maximal verstreichen darf, bis der HTTP-Request erfolgreich durchgeführt wurde. Lassen Sie das Attribut leer, wenn Sie unbegrenzt auf die Durchführung warten wollen.

Variabel: Ja

Einschränkungen: Darf nicht negativ sein.

Fehlerstufe bei Zeitüberschreitung

Dieses Attribut legt fest, was bei Überschreitung des Zeitlimits passiert. Ist der Wert "Exception", wird eine CheckFailedException geworfen. Andernfalls wird eine Meldung mit der entsprechenden Fehlerstufe in das Protokoll geschrieben.

Variabel: Nein

Einschränkungen: Keine

QF-Test ID

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

Verzögerung vorher/nachher

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder > 0

Bemerkung

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von Testfallsatz, Testfall oder Prozedur Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von Alt⁠+⁠Eingabe oder Klicken des Externer Editor Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Falls bei Komponenten Knoten in dem Bemerkungsfeld eine Eintragung gemacht wurde, wird der Knoten bei der Suche bzw. dem Löschen von ungenutzten Komponenten übersprungen.

Variabel: Ja

Einschränkungen: Keine

WebAPI42.11.2 Pre-Request-Handler

Pre-Request-Handler werden beim Betreten ihres Parent-Knotens registriert und beim Verlassen deregistriert. Bei Ausführung eines Web-Request-Knotens wird zunächst der Request mit den Daten aus dem Web-Request vorbereitet. Dann werden die registrierten Pre-Request-Handler-Knoten ausgeführt, wobei die Ausführungsreihenfolge von den allgemeineren zu den spezifischeren Knoten geht. Somit können Kindknoten die Daten des Web-Request-Knotens modifizieren, zum Beispiel spezifische Kopfdaten hinzufügen. Nach Ausführung des letzten Pre-Request-Handler-Knotens wird der Request abgeschickt. Weitere Informationen finden Sie unter "Struktur der WebAPI-Tests".

Enthalten in: Testfallsatz, Testfall und Web-Request-Knoten

Kinder: Server-Skript, Kommentar, Prozeduraufruf, Request-Einstellungen, Request-Anmeldedaten sowie allgemeine Kontrollelemente.

Ausführung: Wenn die Ausführung im Rahmen der Verarbeitung einer Anfrage angestoßen wird, werden die Kindknoten des Handlers nacheinander ausgeführt.

Attribute:

Web Request Attributes
Abbildung 42.74:  Web-Request Attribute
Name

Der Name eines Pre-Request-Handlers ist eine Art Kurzkommentar. Er wird in der Baumdarstellung der Testsuite angegeben und sollte etwas über die Funktion des Handlers aussagen.

Variabel: Ja

Einschränkungen: Keine

QF-Test ID

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

Verzögerung vorher/nachher

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder > 0

Bemerkung

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von Testfallsatz, Testfall oder Prozedur Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von Alt⁠+⁠Eingabe oder Klicken des Externer Editor Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Falls bei Komponenten Knoten in dem Bemerkungsfeld eine Eintragung gemacht wurde, wird der Knoten bei der Suche bzw. dem Löschen von ungenutzten Komponenten übersprungen.

Variabel: Ja

Einschränkungen: Keine

WebAPI42.11.3 Post-Request-Handler

Post-Request-Handler werden während der Ausführung eines Web-Request-Knotens ausgeführt. Nachdem die Anfrage verschickt und eine Antwort einging, werden die Post-Request-Handler, die in den übergeordneten Knoten eines Web-Request-Knotens oder im Knoten selbst liegen, ausgeführt. Hierbei kommen die allgemeineren zuerst, dann die spezifischeren. In den Kindknoten eines Post-Request-Handler-Knotens können Daten geprüft oder über QF-Test Variablen verfügbar gemacht werden. Weitere Informationen finden Sie unter "Struktur der WebAPI-Tests".

Enthalten in: Testfallsatz, Testfall und Web-Request-Knoten

Kinder: Server-Skript, Kommentar, Prozeduraufruf sowie allgemeine Kontrollelemente.

Ausführung: Wenn die Ausführung im Rahmen der Verarbeitung eines Requests angestoßen wird, werden die Kindknoten des Handlers nacheinander ausgeführt.

Attribute:

Post-Request-Handler Attribute
Abbildung 42.75:  Post-Request-Handler Attribute
Name

Der Name eines Pre-Request-Handlers ist eine Art Kurzkommentar. Er wird in der Baumdarstellung der Testsuite angegeben und sollte etwas über die Funktion des Handlers aussagen.

Variabel: Ja

Einschränkungen: Keine

QF-Test ID

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

Verzögerung vorher/nachher

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder > 0

Bemerkung

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von Testfallsatz, Testfall oder Prozedur Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von Alt⁠+⁠Eingabe oder Klicken des Externer Editor Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Falls bei Komponenten Knoten in dem Bemerkungsfeld eine Eintragung gemacht wurde, wird der Knoten bei der Suche bzw. dem Löschen von ungenutzten Komponenten übersprungen.

Variabel: Ja

Einschränkungen: Keine

WebAPI42.11.4 Request-Anmeldedaten

Dieser Knoten stellt mehrere Authentifizierungsverfahren zur Verfügung, aktuell Bearer, Basic Auth und API Key. Wenn er in einem Pre-Request-Handler-Knoten liegt, wird das angegebene Authentifizierungsverfahren bei der Ausführung der Anfrage, zu der der Pre-Request-Handler-Knoten gehört, angewendet. Wenn er außerhalb eines Pre-Request-Handler-Knotens liegt, wird eine Objektvariable definiert, die die entsprechenden Anmeldedaten enthält. Sie kann dann in einem anderen Request-Anmeldedaten-Knoten genutzt werden. So können Anmeldedaten zum Beispiel für die spätere Verwendung in der Abhängigkeit eines Tests bereitgestellt werden.

Enthalten in: Pre-Request-Handler zur Ausführung, an anderer Stelle zur Definition einer Variablen.

Kinder: Keine

Ausführung: Wenn der Knoten im Rahmen einer Pre-Request-Handler ausgeführt wird, gelten die Anmeldedaten für den aktuellen Request (siehe "Struktur der WebAPI-Tests"). Ansonsten wird eine Objektvariable erstellt, die die Daten kapselt.

Attribute:

Authentication data attributes
Abbildung 42.76:  Request-Anmeldedaten Attribute
Typ

Das zu verwendende Authentifizierungsverfahren. Die Attribute Token, Benutzername, Passwort, Name des API-Keys, Als URL-Parameter und Variable mit Anmeldedaten hängen von dieser Auswahl ab und werden für den jeweiligen Typ beschrieben. Gültige Werte sind:

Keine Authentifizierung
Kann verwendet werden, um die in einem vorhergehenden Pre-Request-Handler Knoten gesetzte Authentifizierung auszuschalten.
Bearer
Standardverfahren zur Anmeldung mit einem Bearer Token. Das Token Attribut wird in einen Request-Header mit dem Namen "Authorization" und dem Präfix "Bearer " eingefügt.
Basic Auth
Standardverfahren zur Anmeldung mit Basic Auth, basierend auf Benutzername und Passwort.
API-Key
Standardverfahren zur Anmeldung mit API-Key, basierend auf dem Name des API-Keys und einem Token. Die Anmeldedaten werden entweder als Request-Header eingefügt oder der URL als Parameter hinzugefügt, abhängig vom Attribut Als URL-Parameter.
Aus einer Variablen
Verwendung der in Variable mit Anmeldedaten angegebenen Objektvariablen, welche die Anmeldedaten enthält.

Variabel: Nein

Einschränkungen: Keine

Variable für Anmeldedaten

Der Name der zu setzenden Variablen. Das Attribut wird nur angezeigt, wenn der Knoten außerhalb eines Pre-Request-Handler-Knotens verwendet wird.

Variabel: Ja

Einschränkungen: Darf nicht leer sein

Lokale Variable

Ist dieses Attribut nicht gesetzt, wird die Variable in den globalen Definitionen gebunden. Andernfalls wird – sofern vorhanden – die oberste aktuelle Definition der Variablen überschrieben, sofern diese innerhalb des aktuellen Prozedur, Abhängigkeit oder Testfall Knotens liegt. Gibt es keine solche Definition, wird eine neue Definition im aktuellen Prozedur, Abhängigkeit oder Testfall Knoten angelegt, oder, falls kein solcher existiert, im obersten Knoten auf dem Variablen-Stapel mit Fallback auf die globalen Definitionen. Eine Erläuterung dieser Begriffe und weitere Details zu Variablen finden Sie in "Variablen".

Über die Option Attribut 'Lokale Variable' standardmäßig aktivieren kann der Wert voreingestellt werden.

Variabel: Nein

Einschränkungen: Keine

QF-Test ID

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

Verzögerung vorher/nachher

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder > 0

Bemerkung

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von Testfallsatz, Testfall oder Prozedur Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von Alt⁠+⁠Eingabe oder Klicken des Externer Editor Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Falls bei Komponenten Knoten in dem Bemerkungsfeld eine Eintragung gemacht wurde, wird der Knoten bei der Suche bzw. dem Löschen von ungenutzten Komponenten übersprungen.

Variabel: Ja

Einschränkungen: Keine

WebAPI42.11.5 Request-Einstellungen

Dieser Knoten setzt einige Einstellungen für Web-Requests, die technisch gesehen zu dem HttpClient gehören, der die Anfrage versendet. Wenn dieser Knoten innerhalb eines Pre-Request-Handler-Knotens liegt, werden die Einstellungen bei dessen Ausführung angewendet. Außerhalb eines Pre-Request-Handler-Knotens erstellt er eine Objektvariable mit den entsprechenden Einstellungen, um diese später in einem anderen Request-Anmeldedaten-Knoten zu verwenden, zum Beispiel einer Abhängigkeit.

Enthalten in: Pre-Request-Handler zur Ausführung, an anderer Stelle zur Definition einer Variablen.

Kinder: Keine

Ausführung: Wenn der Knoten im Rahmen eines Pre-Request-Handler-Knotens ausgeführt wird, gelten die Einstellungen für die aktuelle Anfrage (siehe "Struktur der WebAPI-Tests"). Ansonsten wird eine Objektvariable erstellt, welche die Daten kapselt.

Attribute:

Request Einstellungen Attribute
Abbildung 42.77:  Request-Einstellungen Attribute
Typ

Auswahl des Einstellungstyps. Das Attribut Variable mit Einstellungen hängt von dieser Auswahl ab und wird für den entprechenden Typ beschrieben. Gültige Werte:

Keine Einstellungen
Kann verwendet werden, um die in einem vorhergehenden Pre-Request-Handler-Knoten gesetzten Einstellungen auszuschalten.
Explizite Einstellungen
Legt die Einstellungen für eine Weiterleitung und die Standardwartezeit für den HttpClient fest.
Aus einer Variablen
Verwendung der in Variable mit Einstellungen angegebenen Objektvariablen, welche die Einstellungen enthält.

Variabel: Nein

Einschränkungen: Keine.

Weiterleitung der Anfrage

Legt fest, wie Weiterleitungen in der Anfrage behandelt werden sollen. Gültige Werte (diese entsprechen den Werten in der Enum HttpClient.Redirect):

NEVER
Nicht weiterleiten.
ALWAYS
Immer weiterleiten.
NORMAL
Immer weiterleiten, außer von HTTPS-URLs zu HTTP-URLs.

Variabel: Nein

Einschränkungen: Keine

Timeout für Verbindung (ms)

Legt die maximale Standardwartezeit für einen Request fest, falls dieser nicht selbst eine Wartezeit definiert.

Variabel: Ja

Einschränkungen: Leer oder eine Zahl

Variable für Einstellungen

Der Name der Variablen, die gesetzt werden soll. Das Attribut wird nur angezeigt, wenn sich der Knoten außerhalb eines Pre-Request-Handler-Knotens befindet.

Variabel: Ja

Einschränkungen: Darf nicht leer sein

Lokale Variable

Ist dieses Attribut nicht gesetzt, wird die Variable in den globalen Definitionen gebunden. Andernfalls wird – sofern vorhanden – die oberste aktuelle Definition der Variablen überschrieben, sofern diese innerhalb des aktuellen Prozedur, Abhängigkeit oder Testfall Knotens liegt. Gibt es keine solche Definition, wird eine neue Definition im aktuellen Prozedur, Abhängigkeit oder Testfall Knoten angelegt, oder, falls kein solcher existiert, im obersten Knoten auf dem Variablen-Stapel mit Fallback auf die globalen Definitionen. Eine Erläuterung dieser Begriffe und weitere Details zu Variablen finden Sie in "Variablen".

Über die Option Attribut 'Lokale Variable' standardmäßig aktivieren kann der Wert voreingestellt werden.

Variabel: Nein

Einschränkungen: Keine

QF-Test ID

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

Verzögerung vorher/nachher

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder > 0

Bemerkung

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von Testfallsatz, Testfall oder Prozedur Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von Alt⁠+⁠Eingabe oder Klicken des Externer Editor Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Falls bei Komponenten Knoten in dem Bemerkungsfeld eine Eintragung gemacht wurde, wird der Knoten bei der Suche bzw. dem Löschen von ungenutzten Komponenten übersprungen.

Variabel: Ja

Einschränkungen: Keine