2016-04-08 12 views
0

Einer der Dienste, die ich mit Jmeter testen werde, hat einen komplexen Autorisierungsmechanismus, der einige CS-basierte Schritte (JavaScript) erfordert. Um eine Sitzung einzurichten, muss ich WebDriver verwenden, da Jmeter JS nicht verarbeiten kann (und auch nicht sollte).Erfassen von WebDriver-Anfragen in Jmeter

Ich mache es auf folgende Weise: am Anfang jedes Threads öffne ich die Ressource im echten Browser (über Jmeter WebDriver Plugin), vervollständige die Autorisierung, speichere Browser Cookies, die vom Server eingerichtet wurden und benutze diese Cookies dann Generieren von Ladevorgängen unter Verwendung der Standard-Jmeter-Logik innerhalb einer definierten HTTP-Sitzung.

Dieses Schema funktioniert gut und ich verwende es erfolgreich in verschiedenen Belastungstests.

Aber jetzt erfordert der Dienst, den ich test, nicht nur Cookies, sondern auch einige wichtige Parameter, die der Browser in POST als Teil des Autorisierungsprozesses sendet. Um zu beweisen, dass meine Anfragen zu derselben Sitzung gehören, sollte ich einige sensible Parameter nicht aus der Antwort extrahieren (es kann leicht gemacht werden), sondern aus Anfrage. Ich kann diese Werte nirgends in DOM finden, und es scheint, als ob diese Werte von JS erzeugt werden, das an die Antwortseite angehängt ist.

Also, meine Frage ist: gibt es eine Möglichkeit, Parameter von Anfrage von WebDriver gesendet erfassen?

Ich verstehe, dass alle Anfragen von Browser in Jmeter initiiert nicht sichtbar sind. Und die einzige Idee, die ich sehe, ist die dynamische Verwendung des Jmeter-Anforderungsrekorders:

  1. Browserfenster öffnen.

  2. Definieren Sie Jmeter als Proxy für diesen Browser.

  3. Erfasst Anforderungen, die vom Browser im Jmeter mit dem Rekorder gesendet werden.

  4. Irgendwie extrahiert sensible Daten von Anfragen.

  5. Verwenden Sie die Daten zum Laden.

Irgendwelche Ideen geschätzt. Danke im Voraus!

Antwort

0

Das Problem wurde behoben, indem ein lokaler Proxy-Server (BrowserMob Proxy-Projekt) mit BeanShell-Sampler ausgeführt wurde. Ich richte den WebDriver Sampler auf diesen Proxy um, führe die erforderlichen Aktionen mit dem Browser aus, speichere die erfassten Daten im HAR-Format und bearbeite sie (extrahiere die erforderlichen Daten aus den Anfragen). Speichern Sie dann einfach wertvolle Anforderungsparameter in Variablen (oder Eigenschaften) und verwenden Sie sie regelmäßig im HTTP-Sampler, um die Last zu generieren. Hoffe, dass es in Zukunft jedem anderen helfen kann.