Ich habe zwei Anfragen hinzugefügt, eine für die Anmeldung, um die Sitzungs-ID zu speichern, und eine weitere Anfrage, um den Belastungstest zu prüfen, der eine Sitzungs-ID erfordert. Ich habe Login-Anfrage nur einmal gemacht, indem ich sie als Kind für einmal nur Controller hinzugefügt habe. Aber wenn ich es teste, indem ich ungefähr 100 oder 200 thread hinzufüge, läuft die Anmeldung auch so viel von Zeit. Ich möchte Login-Anfrage nur für den Start Thread ausführen. Ist es möglich? Im Folgenden habe ich meine Testfallhierarchie hinzugefügt.
%Vor%Der Controller "ONLY ONCE" funktioniert nicht so, wie Sie denken.
Es läuft "nur einmal" pro Gewinde. Wenn Sie also 100 Threads haben, wird es 100 Mal ausgeführt.
Wenn Sie möchten, dass es einmal pro Test läuft, gehen Sie wie folgt vor:
%Vor%Wenn Sie Variablen zwischen den Threadgruppen A und B teilen müssen, müssen Sie sie als Eigenschaften festlegen. Variablen können nicht zwischen Threadgruppen gemeinsam verwendet werden, aber Eigenschaften können. Sie müssen dazu die Eigenschaftsfunktion verwenden.
Die Funktion __setProperty speichert den Wert automatisch als globale Variable. Die sauberste Methode zum Initiieren von __setProperty wäre das Erstellen eines POST-Prozessor-Beanshell-Skripts als Kind für den Sampler, der das Cookie in THREAD A erstellt. Um den Wert in THREAD B abzurufen, fügen Sie die __property-Funktion als VALUE für den Parameter hinzu benötigt den Cookie-Wert.
Das Beanshell-Skript würde etwa so aussehen:
%Vor%Der obige Code hätte immer den gleichen Wert für COOKIENAME, weniger als Idee. Also müssen wir sicherstellen, dass "COOKIEVALUE" dynamisch ist. Ich würde empfehlen, einen POST-PROCESSOR-Regulärer Ausdruck zu setzen, um den Cookie-Wert zu extrahieren, und ihn dann an das Beanshell-Skript zu übergeben.
Unser Testplan sieht jetzt so aus:
%Vor%Und unser Beanshell-Skript sieht jetzt so aus:
%Vor%Links zum Benutzerhandbuch:
In den neuen Versionen von JMeter können Sie eine "setUp Thread Group" hinzufügen, die genau das tut, was Sie brauchen.
Eine spezielle Art von ThreadGroup, mit der Vortestaktionen durchgeführt werden können. Das Verhalten dieser Threads ist genau wie bei einem normalen Thread-Gruppenelement. Der Unterschied besteht darin, dass diese Art von Threads ausgeführt wird, bevor der Test mit der Ausführung regulärer Thread-Gruppen fortfährt.
Nur ein Controller funktioniert so, wie BlackGaff es erklärt hat.
Was Sie versuchen zu tun, scheint falsch zu sein, da dies bedeutet, dass Sie Ihre 100 Benutzer mit demselben Login / Passwort authentifizieren.
Aber wenn Sie es immer noch tun wollen, können Sie setupThread mit einem Benutzer verwenden, es ist normalerweise nützlich für einige Init-Tasks bei Tests, aber es bedeutet nicht, dass es Ihre Anforderung erfüllt, die mir falsch erscheint.
Sie können die "Login HTTP-Anfrage" im Once-Only-Controller und die normale "HTTP-Anfrage" in einen Loop-Controller stellen. Jetzt können Sie die Schleife so einstellen, dass die HTTP-Anfrage 100 oder 200 Mal ausgeführt wird. Sehen: jmeter.apache.org/usermanual/component_reference.html#Loop_Controller
Verwenden Sie Timer, um einen realistischeren Test durchzuführen. Angenommen, Sie möchten, dass die 200 Anfragen in 120 Sekunden erfolgen, dann können Sie jede Anfrage für 120/200 Sekunden pausieren lassen. Die meisten Timer arbeiten mit Millisekunden, so dass Sie diese Zahl (120/200 * 1000) Millisekunden bilden können. Sehen: jmeter.apache.org/usermanual/component_reference.html#timers
Sie können auch eine separate Setup-Threadgruppe erstellen, in der Sie Ihre Anmeldung vornehmen und die 200 Threads in einer anderen Threadgruppe ausführen. Überprüfen Sie diesen Artikel: Ссылка
All diese Informationen sollten Ihnen helfen, in die richtige Richtung zu gehen. Viel Glück!
In Jmeter 2.9 können Sie dazu den "Once only Controller" und den "Loop Controller" verwenden.
Es ist wunderbar!
Frankie
Tags und Links jmeter