2016-04-06 11 views
0

Ich bin neu im Web und laden Tests in VS. Ich benutze den Rekorder nicht, da zu viel Müll zu vergeuden ist. Blockflöten neigen dazu, mich eher zu verwirren und zu verschleiern als zu erleuchten. Ich simuliere den Anmeldevorgang unserer Anwendung, um ein Authentifizierungstoken zu erhalten, das an die Dienste übergeben wird, die ich testen möchte. Ich gehe Schritt für Schritt und beobachte den Verkehr in Fiddler.Web- und Load-Tests VS 2015 - Abfragestring von der letzten Umleitung einer Anfrage erhalten

Also Schritt 1, navigieren Sie zu der URL der AUT. Wenn ich dies tue, sehe ich eine Reihe von Weiterleitungen, deren Ergebnis eine neue URL mit einem Cookie und einer Abfrage-Zeichenfolge in der Anfrage und das Login-Formular in der Antwort ist.

In meiner nächsten Anfrage möchte ich diese Cookie- und Abfragezeichenfolge der früheren Weiterleitung in die Anfrage einschließen, die ich jetzt ausstelle. Ich schreibe zu diesem Zeitpunkt noch keinen Code, sondern benutze den Testdesigner. Wie kann ich die Werte abrufen, die in die nächste Anfrage aufgenommen werden sollen?

Dank

Antwort

0

Mögliche Wege sind:

(1) Stellen Sie die Follow redirects Eigenschaft auf die Anfrage zu False und dann in der Kette von Umleitungen für jede URL-Anforderungen erstellen. Fügen Sie Extraktionsregeln an relevanten Stellen hinzu und verwenden Sie die extrahierten Werte in den nachfolgenden Anforderungen. Dies ist der normale Ansatz, wenn nur eine Umleitung oder nur eine sehr kleine Anzahl von Umleitungen vorhanden ist.

(2) Ähnlich wie oben, aber schreiben Sie ein Plugin, das die Umleitung behandelt und die nächste Anfrage in der Kette zum Test hinzufügt.

Im Allgemeinen werden Cookies und Abfragezeichenfolgenparameter aus Antworten extrahiert und in Anfragen geschrieben, sie werden normalerweise nicht aus Anfragen extrahiert. In Visual Studio-Webtests werden Cookies normalerweise ohne Hilfe gehandhabt.

Werte von Abfragezeichenfolgen können von vielen Stellen in einer Antwort kommen. Wenn eine spezielle Cookie-Behandlung erforderlich ist, können sie aus den Antworten der ExtractHttpHeader Extraktionsregel für das Header-Feld Set-Cookie extrahiert werden.

Wenn Sie wirklich Werte aus einer Anfrage extrahieren müssen, können die Plugins PreRequest direkt vor dem Senden auf die Teile der Anfrage zugreifen.

Für die Anfrage, die Sie versuchen zu behandeln, würde ich vorstellen, drei Anfragen zu verwenden, jede mit Follow redirects auf False festgelegt. Sie sind:

(1)

Request: http://localhost:12345 
Response: extract port number and other url fragments to context parameters `PortNumber1` and `UrlFragment1`, etc. 

(2)

Request: http://localhost:{{PortNumber1}}/{{UrlFragment1}} 
Response: extract redirected url to `Url2` and cookie(s) to `Cookies2` 

(3)

Request: http://{{Url2}}/ 
    Query string parameters written to header fields, 
     either by fields in the web test 
     or by plugin creating the values    
Response: ... 

Sie überdenken könnten die Web-Test-Recorder. Ich finde, es macht einen guten Job, einen Webtest zu erstellen. Zusätzliche Arbeit ist erforderlich, um dynamische Parameter zu handhaben, aber diese Art von Arbeit wäre mit oder ohne den Rekorder erforderlich. Du sagst "es gibt zu viel Müll Verkehr, um raus zu jäten" aber das sollte nur ein paar Momente dauern, wenn es wirklich Müll ist.Es ist jedoch Teil des zu testenden Systems und wenn es gelöscht wird, wird der Web-Test die tatsächliche Aktivität auf der getesteten Website korrekt simulieren?

+0

Ok. Ich kann das machen. Aber ich muss immer noch Cookies und Abfrage-Strings aus nachfolgenden Anfragen, die ich nicht weiß, wie zu tun ist. In meinem Beispiel lautet meine erste Anfrage also https: // localhost: . Ich bekomme keine Antwort zurück. Es gibt nur eine Weiterleitung zu https: // localhost: . Bei der ersten Weiterleitung wird also ein Cookie auf dem Server als Teil der Anfrage erstellt. So sehe ich das im Anfrageteil der Umleitung. –

+0

Wenn ich Extrahierungsregeln betrachte, gibt es nichts, was man aus der ersten Anfrage extrahieren kann (https: // localhost

+0

@StephanieStowe Antwort aktualisiert. – AdrianHHH