JMeter, senden Sie alle Formulardaten

8

Ich versuche, die Bearbeitungsfunktion einer Website mit JMeter zu testen. Der Schritt, den ich versuche zu testen, gibt jedoch mehr als 200 Elemente im Formular zurück. Ich möchte natürlich, dass alle Elemente mit dem Formular identisch sind, das dem Benutzer angezeigt wird (außer einem, das ich ändern möchte). Mir ist bewusst, dass dies mit Regex-Extraktoren möglich ist (siehe Fragen JMeter - MVC: Formularbuchungsmodell, das dynamische Daten enthält ), dies müsste jedoch manuell für jedes Element im Formular eingerichtet werden, was sehr umfangreich ist!

Gibt es eine Möglichkeit, JMeter dazu zu bringen, alle Formularelemente zurückzuschicken, ohne sie einzeln einstellen zu müssen? oder irgendein plugin, um dies zu tun?

Jede Hilfe wäre sehr willkommen.

    
Ben 13.02.2013, 18:34
quelle

3 Antworten

2

Nach dem Definieren des Regular Expression Extractors

Schritt1) Erstellen Sie "Debug PostProcessor" mit allen Werten = true

  • Jmeter Eigenschaften = wahr
  • Jmeter Variable = true
  • Samplereigenschaften = true
  • Systemeigenschaften = true

Wenn Sie diesen Postprozessor untersuchen, finden Sie alle Ihre Post-Parameter-Werte in der Liste. Versuchen Sie, diejenigen zu finden, die geeignet sind, mit der Post-Anfrage zu senden, und verwenden Sie eine API, um paramName und paramVal wie unten gezeigt zu setzen.

Ich habe Firebug verwendet, um alle erforderlichen Post-Parameter herauszufinden. Um zu wissen, wie man das benutzt, folgen Sie diesem Link Ссылка

Schritt2) Erstellen Sie "Beanshell pre processor" mit diesem Skript. Dabei steht "hiddenList" für einen Referenznamen Ihres Regular Expression Extractors.

%Vor%

Hoffe, das hilft.

    
JLP 20.06.2013 19:25
quelle
2

Gute Frage. Nach langem Suchen finde ich es merkwürdig. Jmeter unterstützt dies nicht eleganter und benötigt eine Umgehungslösung, um einfach Rückformdaten zu posten, die auf einer vorherigen GET-Anfrage empfangen wurden.

Ich fand ShGiji's Antwort ein wenig schwierig zu folgen, und musste graben, um den Regular Expression Extractor usw. einzurichten. Unten sind die Schritte, die ich gemacht habe.

  1. Richten Sie den Regular Expression Extractor ein, um die Parameter aus der Antwort einer GET-Anforderung abzurufen

    Um Jmeter zu zwingen, eine Liste von einem Regular Expression Extractor zu erstellen, sollte die Match-Nr. auf -1 gesetzt werden (wie dokumentiert hier ). Beachten Sie, dass Sie auch den Parameternamen und -wert erfassen müssen, damit Sie am Ende so etwas haben ...

  1. Fügen Sie optional einen Debug-Post-Prozessor hinzu . Wenn dies der Fall ist, sollten Sie bestätigen können, dass Variablen mit dem Präfix des gewählten Referenznamens existieren (im obigen Beispiel sollten Sie die Variablen fieldList_matchNr , fieldList_1_g1 , fieldList_1_g2 usw. erwarten).

  2. Fügen Sie einen Beanshell-Postprozessor hinzu, um die Parameter den Formulardaten einer nachfolgenden POST-Anfrage hinzuzufügen

    Das folgende Skript funktioniert mit Jmeter 2.11 (neueste Version zum Zeitpunkt des Schreibens). Beachten Sie die Verwendung von Integer.parseInt anstelle von Integer.valueOf .

Beanshell-Postprozessor:

%Vor%     
Simon Ness 21.10.2014 20:16
quelle
1

Ein alternativer Ansatz wäre die Verwendung der JMeter-Proxy-Funktionalität.

Sie können JMeter (getrennt von seiner Fähigkeit, die HTTP-Anfrage zu automatisieren) verwenden, um Ihre Aktionen in einem Browser aufzuzeichnen. Sie könnten dann die Website besuchen und das Formular absenden. Jmeter zeichnet einen HTTP-Request-Sampler auf, wobei alle Formularelemente extrahiert und mit den von Ihnen übergebenen Werten gefüllt werden. Wenn Sie in Ihrem JMeter-Test verschiedene Werte benötigen, können Sie diese in den richtigen Werten bearbeiten. Sobald Sie fertig sind, können Sie dies als Testplan speichern und dann ausführen.

Dies funktioniert nur, wenn Sie eine kleine Anzahl von Elementen bearbeiten möchten. Wenn Sie möchten, dass jedes Element einen anderen Wert hat, als in Ihrem Browser gesendet wurde, dann wäre der obige Ansatz besser.

Ссылка

    
matt freake 21.06.2013 08:34
quelle