Frage

Ich bin mit JMeter zu Belastungstest ein SOAP-Webservice. Der Webservice besteht in einer Reihe von Orten, wie mein localhost, eine Dev-Box, eine Integrations Box, ein Produktionsfeld etc.

Ich verwende einen WebService (SOAP) Request Sampler und eingestellt haben wie die "Server Name des IP", "Pfad" und "SOAP-Aktion" Paramater so:

Server Name of IP: ${SERVER}
Path: ${PATH}/service
SOAPAction: http://${SERVER}${PATH}service#action

Das funktioniert gut, wenn ein „Benutzerdefinierte Variablen“ config-Element verwendet wird. Ich wechsle nur SERVER und PATH, was auch immer an die Stelle spezifisch ich Treffer versuche. Dies ist jedoch eher ein Schmerz im Hintern dann mit Ich möchte beschäftigen. Was ich habe gehofft, zu tun (und versuchte) war auf mehr Wenn Logic Controller in meiner Thread-Gruppe hinzufügen und überprüft $ {MODE} (eine andere UDV) und entsprechend handeln, das Setzen von meinem Servers und PATH auf. So hatte ich so etwas wie

"${MODE}" == "dev"
"${MODE}" == "local"
"${MODE}" == "production"

Ein auf jedem Wenn Controller dann hatte ich ein Kind UDV Element den entsprechenden Servers und PATH Einstellung. Die Werte aus der letzten UDV (in der Reihenfolge ihres Auftretens in meiner Thread-Gruppe) wurden immer verwendet werden, trotz meiner Annahme des Ist-Controller falsche Rückkehr würde von der UDV halten ausgewertet. Allerdings sehe ich in der Dokumentation, dass alle UDVs unabhängig von dem Ort ausgewertet werden, bevor irgendwelche Threads gestartet werden. Also habe ich versucht, stattdessen Benutzer mit Paramater, aber die Werte für $ {SERVER} und $ {PATH} in meinem SOAP-Sampler ersetzt bekommen nicht und ich mache Anforderungen an http: // $ {SERVER} $ {PATH}, die ist nicht gut.

Es gibt jede elegante Art und Weise zu handhaben? Derzeit bin ich das Kopieren nur ein den Wert für SERVER und PATH einfügen ich jedes Mal, müssen Sie den Server ich bin schlagen ändern. Ich weiß, dass ich auch mehrere Testpläne haben könnte, einen für jeden Server ich Belastungstest werde, aber ich mache häufige Aktualisierungen die Struktur einschließlich dem Hinzufügen neue Tests, bestehende Tests zu deaktivieren und einigen Teilen der SOAP-Anforderungen ändern, so ein Bündel mit sie scheint nicht wie eine gute Lösung.

Jede Hilfe?

War es hilfreich?

Lösung

Wir lösen dieses Problem mit einem Sampler und Beanshell Variablen definiert im Testplan selbst.

Anstelle der Verwendung des Elements „Benutzerdefinierte Variablen“ Sie Variablen für den gesamten Testplan definieren. Klicken Sie einfach auf das Wurzelelement des Baumes und fügen Sie eine Variable mit dem Namen „Modus“ mit dem Inhalt „dev“, „local“ oder „Herstellung“.

Im Testfall den Sampler "Bean Shell Sampler" hinzufügen, und fügen Sie folgenden Code:

if ("dev".equals(vars.get("mode"))) {
 vars.put("server","x.y.z");
}
if ("local".equals(vars.get("mode"))) {
 vars.put("server","127.0.0.1");
}
if ("production".equals(vars.get("mode"))) {
 vars.put("server","10.0.0.10");
}

Sie können dann alle Variablen definieren Sie brauchen, und auch andere Umgebungen hinzuzufügen, wenn nötig.

Sie können aber auch einen Schritt weiter gehen: Erstellen Sie einen einfachen Controller und stellen Sie Ihre Bean Shell Sampler gibt. In allen ThreadGroups können Sie nun Zugriff auf diese einfache Steuerung mit einem Modul-Controller. In diesem Fall müssen Sie Ihre Umgebung Selektor für den gesamten Testplan nur einmal definieren.

Andere Tipps

Ich persönlich fand viel einfacher zu mehreren UDV Module, die alle auf der obersten Ebene.

Ich halte sie alle deaktiviert, außer der, die ich verwenden möchten.

Ich sehe es gibt so viele Möglichkeiten, das Gleiche zu tun; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top