Technologieaustausch

Tool-Anwendung: Verwenden Sie JMeter, um PHPwind-Leistungstests zu implementieren!

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Einführung in das Experiment

In der vorherigen Studie haben wir JMeter verwendet, um den Schnittstellentest auf Protokollebene für das Agileone-System durchzuführen. Wir wissen auch, dass der Kern der Leistungstesttechnologie darin besteht, mithilfe der Multithreading-Technologie Protokollanforderungen zu senden, um die Simulation einer großen Anzahl von Benutzern abzuschließen, die auf das System zugreifen. Die ursprüngliche Entwurfsabsicht von JMeter besteht tatsächlich darin, Leistungstests durchzuführen. Der erste Schritt beim Erstellen eines Testplans besteht beispielsweise darin, eine Thread-Gruppe zu erstellen. In diesem Experiment wird erläutert, wie Sie JMeter verwenden, um den Leistungstest für die PHPWind-Anmeldung und -Veröffentlichung abzuschließen.

Zweck

(1) Beherrschen Sie die Verwendung der Assoziationssuche in JMeter.

(2) Beherrschen Sie das Thread-Design und die Verwendung in JMeter.

(3) Beherrschen Sie die Verwendung von Testberichten in JMeter.

Experimentierprozess

  1. Implementieren Sie den Login-Sampler von PHPwind

Wir haben insgesamt 100 Benutzer für PHPWind von testuser_1 bis testuser_100 erstellt. Daher sollten wir während des Leistungstestprozesses eine zufällige Benutzeranmeldung implementieren, um reale Szenarien besser simulieren zu können.

(1) Erstellen Sie einen „HTTP-Request“-Sampler, nennen Sie ihn „DoLogin“ und geben Sie die entsprechenden Login-POST-Request-Parameter ein.

(2) Erstellen Sie eine „Antwortzusicherung“ und einen „Ansichtsergebnisbaum“ für den Sampler. Dies gilt auch für nachfolgende Anforderungen.

(3) Erstellen Sie einen „Präprozessor“ für den Sampler und implementieren Sie eine Zufallszahl von 1 bis 100.

(4) Die endgültige implementierte Testanforderung lautet wie folgt:

2. Verwenden Sie reguläre Ausdrücke, um Bestätigungscodes zuzuordnen

Da Sie beim Posten in PHPWind ein Feld „Überprüfen“ angeben müssen, dessen Wert eine Zufallszahl ist, müssen wir reguläre Ausdrücke verwenden, um den entsprechenden Wert in der Antwort zuzuordnen. Dieser Teil wurde im Implementierungsprozess des Schnittstellentests gemeistert. Hier sehen wir uns hauptsächlich an, wie er in JMeter implementiert wird:

(1) Fügen Sie einen „HTTP-Anfrage“-Sampler hinzu und senden Sie eine GET-Anfrage an „/phpwind/post.php?fid=2“, um die Antwort zu erhalten.

(2) Fügen Sie dem Sampler einen Postprozessor hinzu, stellen Sie ihn auf „Regular Expression Extractor“ ein und nehmen Sie die folgenden Einstellungen vor:

(3) Eine kurze Erläuterung der oben genannten Eingabefelder:

a) Referenzname: Der Name des Parameters, auf den in der nächsten Anfrage verwiesen werden soll. Wenn Sie den Verifycode eingeben, können Sie ihn mit ${verifycode} referenzieren.

b) Regulärer Ausdruck: Die Klammern enthalten den zu extrahierenden Inhalt, den wir geschickt anwenden können.

c) Vorlage: in Anführungszeichen gesetzt mit $-$. Wenn der von uns festgelegte reguläre Ausdruck mehrere Werte findet, gibt die Sequenznummer an, welcher Wert verarbeitet werden soll.

d) Übereinstimmende Zahlen: 0 steht für einen Zufallswert, 1 steht für alle Werte, normalerweise geben Sie einfach 0 ein.

e) Standardwert: Wenn der Parameter keinen Wert erhält, wird ein Standardwert angegeben, den er erhalten soll.

3. Fügen Sie eine Post-Anfrage hinzu

(1) Legen Sie einen Benutzerparameter für den Sampler fest und generieren Sie mit dem Funktionsassistenten eine Zufallszahl für den Beitragstitel und den Inhalt.

(2) Verwenden Sie den im vorherigen Schritt erhaltenen Verifizierungscode als Wert des Verifizierungsfelds im POST-Anfragetext.

(3) Die endgültig generierte Testanforderung lautet wie folgt:

4. Stellen Sie sicher, dass bei jeder Anfrage alle Ressourcen heruntergeladen werden

Standardmäßig ist JMeter wie der Schnittstellentest nur für das Herunterladen der aktuell angeforderten Seite verantwortlich und lädt keine anderen zusätzlichen Ressourcen der Seite herunter. Dies entspricht offensichtlich nicht der tatsächlichen Situation. Daher müssen wir alle Ressourcen der Seite herunterladen. Aktivieren Sie auf der Registerkarte „Erweitert“ im HTTP-Sampler die Option „Alle enthaltenen Ressourcen aus HTML-Dateien abrufen“.

5. Entwerfen Sie gleichzeitige Szenarien

Für diese Ausführung folgen wir immer noch dem gleichen Szenariodesign wie beim vorherigen Java-Skript: 50 Benutzer, 5 gleichzeitige Benutzer alle 10 Sekunden und jeder Benutzer wird 100 Mal ausgeführt. Die spezifischen Einstellungen sind wie folgt:

Das Festlegen des Parameters „Hochlaufzeit (in Sekunden)“ in den obigen Einstellungen auf 100 Sekunden bedeutet, dass alle zwei Sekunden ein Thread hinzugefügt wird. Obwohl die Häufigkeit nicht beliebig wie bei einem benutzerdefinierten Thread definiert werden kann, ist eine solche Einstellung konsistent mit alle 10 Sekunden. Es gibt keinen wesentlichen Unterschied in der Wirkung von 5 gleichzeitigen Benutzern.

Zusätzlich zur Festlegung der Anzahl der Durchläufe können wir auch die Gesamtlaufzeit des Leistungstestprozesses festlegen. Aktivieren Sie im unteren Teil des Bildes oben „Scheduler“ und legen Sie die Dauer fest. Wenn wir eine Stunde lang ununterbrochen laufen müssen, müssen wir den Wert nur auf 3600 Sekunden einstellen.

6. Planen Sie für jeden Schritt Bedenkzeit ein

Die Denkzeit ist eine Einstellung, die zur Simulation realer Benutzerszenarien erforderlich ist. Die von JMeter bereitgestellte „Timer“-Komponente wird verwendet, um die Denkzeit des Benutzers zu simulieren. Wir verwenden den häufiger verwendeten „Gaußschen Zufallstimer“. Ein Sampler legt die Bedenkzeit fest:

(1) Klicken Sie mit der rechten Maustaste auf einen Sampler. Wir klicken beispielsweise auf „DoLogin“, um einen neuen „Gaußschen Zufallstimer“ zu erstellen.

(2) Stellen Sie den Offset auf 2000 Millisekunden und den festen Verzögerungsoffset auf 4000 Millisekunden ein. Seine Funktion besteht darin, eine Zufallszahl im Bereich von 4 Sekunden plus oder minus 2 Sekunden zu generieren, d. h. die zufällige Pausenzeit liegt zwischen 2 Sekunden und 6 Sekunden.

Mehr über die Verwendung des JMeter-Timers

7. Richten Sie Treffpunkte ein

Das Konzept des Rendezvous-Punkts wurde erstmals vom Leistungstesttool LoadRunner vorgeschlagen. Seine Funktion besteht darin, dass sich alle nach dem Senden einer Anfrage durch eine Gruppe von Threads versammeln, bis alle Threads zu einem bestimmten Zeitpunkt synchronisiert sind, und dann die Anfrage gemeinsam senden. Es wird verwendet, um strengere Parallelitätstests zu simulieren. Obwohl die Verwendung von Rendezvous-Punkten nicht mit realen Szenarien übereinstimmt, kann es einen größeren unmittelbaren Druck auf den Server ausüben. Es wird hauptsächlich für Parallelitätstests des Servers verwendet.

In JMeter können wir den Timer „Synchronizing Timer“ verwenden, um die Verarbeitung von Rendezvouspunkten abzuschließen. Die folgende Abbildung zeigt uns beispielsweise, wie eine gleichzeitige Teststrategie für den Sampler „DoPost“ implementiert wird:

(1) Anzahl der zu gruppierenden simulierten Benutzer: Dieser Wert entspricht der Anzahl der Threads am Sammelpunkt. Hier legen wir ihn auf 50 fest, was bedeutet, dass eine Sammlung auf 50 Threads warten muss, bevor sie die nächste Anfrage zusammen sendet. Wenn es hier auf 0 gesetzt ist, bedeutet dies, dass die Sammlung aller von der Thread-Gruppe festgelegten Threads verwendet wird.

(2) Timeout in Millisekunden: Hier auf 10000 einstellen, was bedeutet, dass das Timeout des Rendezvous-Punkts 10 Sekunden beträgt. Das heißt, wenn nicht alle Threads 10 Sekunden gewartet haben, warten sie nicht mehr. Der Thread, der die Sammlung abgeschlossen hat, sendet direkt die nächste Anfrage.

Tatsächlich können wir in der nativen Thread-Entwicklung von Java auch die beiden Synchronisationsmethoden „wait ()“ und „notifyAll ()“ verwenden, um die Simulation des Rendezvouspunkts abzuschließen.

8. Leistungstestergebnisse anzeigen

JMeter verfügt auch über viele integrierte Komponenten zum Anzeigen von Testberichten, die am häufigsten verwendete ist jedoch der für eine bestimmte Thread-Gruppe erstellte „Aggregationsbericht“. Die Ergebnisse des aktuellen PHPWind-Leistungstests werden beispielsweise unten angezeigt:

Aus der obigen Abbildung können wir die Anzahl der Ausführungen jedes Samplers, verschiedene mathematische Statistiken der Antwortzeit (Durchschnitt, Median, 90 %-Wert, Minimalwert, Maximalwert), Transaktionsfehlerrate, Netzwerkbandbreite, Durchsatz, Gesamtantwortgröße, Gesamtwert ersehen Anfragegröße und andere Daten. Neben der Überwachung serverseitiger Leistungsindikatoren reichen uns diese grundsätzlich aus, um Basisdaten für einen Leistungstest zu analysieren.

Gedankenübung

(1) Machen Sie sich mit der Verwendung anderer Komponenten in JMeter vertraut.

(2) Verwenden Sie JMeter, um den Leistungstest eines Projekts abzuschließen und die aufgetretenen Probleme nacheinander zu lösen.

(3) Vergleichen Sie den Leistungstest in JMeter mit dem Leistungstest, den wir selbst mit nativem Java entwickelt haben, um die Ähnlichkeiten und Unterschiede festzustellen.

Abschließend möchte ich mich bei allen bedanken, die meinen Artikel sorgfältig gelesen haben. Angesichts der zunehmenden Anzahl von Fans und der Aufmerksamkeit gibt es immer etwas Höflichkeit. Obwohl es keine sehr wertvolle Sache ist, kann man sie direkt annehmen. 

Interviewdokument zum Softwaretest

Wir müssen lernen, um einen hochbezahlten Job zu finden. Die folgenden Interviewfragen sind die neuesten Interviewmaterialien von erstklassigen Internetunternehmen wie Alibaba, Tencent, Byte usw., und einige Byte-Chefs haben nach Abschluss dieses Satzes maßgebliche Antworten gegeben Ich glaube, dass jeder anhand der Interviewinformationen einen zufriedenstellenden Job finden kann.

Fügen Sie hier eine Bildbeschreibung ein