Leistungstests – verteilte JMeter-Tests und ihre detaillierten Schritte

Zusammenfassung des Leistungstests

Leistungstests sind eine Art Softwaretest, der die Stabilität, Skalierbarkeit, Zuverlässigkeit, Geschwindigkeit und Ressourcennutzung eines Systems misst. Es identifiziert Leistungsengpässe und stellt sicher, dass Geschäftsanforderungen erfüllt werden. Leistungstests sind für viele Systeme erforderlich, beispielsweise Webanwendungen, Datenbanken und Betriebssysteme.

Es gibt viele Arten von Leistungstests und einige Konzepte sind sehr ähnlich:

  • Belastungstest
  • Basistests
  • Rauchtest
  • Belastbarkeitstest
  • Einweichtest
  • Ausdauertest
  • Kapazitätstest
  • Langlebigkeitstests
  • Spitzentest
  • Spike-Test
  • Volumentests
  • Kapazitätstests
  • Zuverlässigkeitstests
  • Skalierbarkeitstests

Tools für Leistungstests

Ebenso gibt es viele Tools für Leistungstests:

  • Apache JMeter
  • HP LoadRunner
  • Gatling
  • Blazemeter
  • k6
  • NeoLoad
  • TestComplete
  • Seidendarsteller
  • Rationaler Leistungstester
  • Apica LoadView
  • AppDynamics
  • Dynatrace
  • Neues Relikt

Es ist schwer zu sagen, welches Tool das beste ist, es hängt von Ihren Bedürfnissen und Ihrem Budget ab. Wenn Sie Open Source und einfach zu verwenden möchten, ist JMeter eine gute Wahl. Wenn Sie ein kommerzielles Tool wünschen, probieren Sie LoadRunner und NeoLoad aus. Der wichtige Punkt ist, dass kein Tool alle Leistungstests bewältigen kann und wir sie oft in Kombination verwenden müssen.

Verteiltes JMeter-Testen

In diesem Artikel werde ich die verteilten Tests von JMeter ausführlich vorstellen, die wir häufig für Leistungstests verwenden.

In der verteilten Testrolle benötigen wir einen Kontrollknoten-Controller und mehrere Arbeitsknoten-Worker. Wenn Sie möchten, dass Ihre Anfragen zunehmen, können Sie dies erreichen, indem Sie kontinuierlich Worker-Knoten hinzufügen. Der Controller steuert Worker, führt jedoch keine spezifischen Testfälle aus. Für spezifische Tests werden Worker mit dem Zielsystem verbunden.

Die Gesamtsystemarchitektur sieht ungefähr wie folgt aus:

Der Worker kann sich auf verschiedenen Servern befinden und wird daher als verteilt bezeichnet. Daher kann er die Ressourcen mehrerer Computer nutzen, um genügend Anforderungen zu simulieren.

detaillierte Schritte

Ich werde Schritt für Schritt vorstellen, wie verteilte JMeter-Tests für Leistungstests verwendet werden. Die allgemeine Struktur ist wie folgt:

Ich betreibe den Controller auf einem Mac und die Worker über zwei Ubuntu-Server. Es ist zu beachten, dass sich ihre IPs im selben Intranet befinden. Um dem Zielsystem Ärger zu ersparen, fordere ich direkt Bing, Stackoverflow und QQ an.

Schritt 1: JDK installieren

Apache JMeter ist in Java geschrieben und erfordert zur Ausführung eine Java-Laufzeitumgebung. Installieren Sie unter Ubuntu wie folgt:

sudo apt install openjdk-11-jdk

Schritt 2: Laden Sie Apache JMeter herunter

Gehen Sie zur Download-Seite der offiziellen Website, um das neueste JMeter-Paket apache-jmeter-5.5.zip herunterzuladen und zu entpacken:

unzip apache-jmeter-5.5.zip

Alle Knoten müssen heruntergeladen und installiert werden.

Der Standort des Controllers ist wie folgt:

/Users/larry/Software/apache-jmeter-5.5

Der Standort der Arbeitnehmer ist wie folgt:

home/larry/software/apache-jmeter-5.5

Sie müssen nicht denselben Standort wie ich haben, ich habe ihn so aufgelistet, dass er den folgenden Befehlen entspricht.

Schritt 3: Bereiten Sie die JMX-Datei für den Test vor

JMeter speichert alle Testinformationen in jmxder Datei. Öffnen Sie das Tool, um den Testfall wie folgt zu schreiben:

Definieren Sie dann, wie der gesamte Test ausgeführt werden soll. Hier ist die Verwendung von 8 Threads, 60 Sekunden Aufwärmzeit und 120 Sekunden Dauer definiert:

Ich habe die Datei hier abgelegt:

$ ls /Users/larry/Software/apache-jmeter-5.5/projects/pkslow
performance-test.jmx

In meinem Fall benötigt nur der Controller diese jmxDatei, der Worker jedoch nicht. Sie können über RMI interagieren.

Schritt 4: Worker starten

Um Workers zuerst zu starten, starten Sie es im Servermodus. Nach dem Start führt es keine Tests durch. Es wartet auf den Controller und die damit verbundenen Anweisungen:

  • Arbeiter 1:
$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.171
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.50.171:41709](local),objID:[-2af2edf6:1882245cfde:-7fff, 1980465993472976097]]]
  • Arbeiter 2:
$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.60
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.50.60:45337](local),objID:[18489452:1882246a88b:-7fff, 4749047852254882466]]]
„Hinweis: Eine java.rmi.RemoteException kann auftreten, wenn Sie kein Argument angeben: java.rmi.server.hostname .
$ ./software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true
May 15, 2023 5:43:16 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.1.1:33021](local),objID:[-7155c199:1881ecaf233:-7fff, -6972385484103483700]]]
Server failed to start: java.rmi.RemoteException: Cannot start. ubuntu is a loopback address.
An error occurred: Cannot start. ubuntu is a loopback address.

Schritt 5: Starten Sie den Controller

Nachdem alle Arbeiter an Ort und Stelle sind, warten Sie, bis der Trainer einen Befehl erteilt. Geben Sie beim Start die JMX-Datei, den Speicherort, an dem der Bericht generiert wird, und die IP des Workers wie folgt an:

$ cd /Users/larry/Software/apache-jmeter-5.5/

$ ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test.csv -e -o projects/pkslow/Reports -Dserver.rmi.ssl.disable=true -R 192.168.50.171,192.168.50.60
Creating summariser <summary>
Created the tree successfully using projects/pkslow/performance-test.jmx
Configuring remote engine: 192.168.50.171
Configuring remote engine: 192.168.50.60
Starting distributed test with remote engines: [192.168.50.171, 192.168.50.60] @ May 16, 2023 10:37:31 PM CST (1684247851079)
Remote engines have been started:[192.168.50.171, 192.168.50.60]
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +      1 in 00:00:02 =    0.7/s Avg:  1260 Min:  1260 Max:  1260 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0
summary +    111 in 00:02:31 =    0.7/s Avg:  4433 Min:    41 Max: 50474 Err:     4 (3.60%) Active: 15 Started: 16 Finished: 1
summary =    112 in 00:02:33 =    0.7/s Avg:  4405 Min:    41 Max: 50474 Err:     4 (3.57%)
summary +     64 in 00:00:19 =    3.3/s Avg: 25706 Min:    62 Max: 66745 Err:    31 (48.44%) Active: 0 Started: 16 Finished: 16
summary =    176 in 00:02:52 =    1.0/s Avg: 12151 Min:    41 Max: 66745 Err:    35 (19.89%)
Tidying up remote @ May 16, 2023 10:40:24 PM CST (1684248024629)
... end of run

Weitere Informationen finden Sie in  jmeter.log :

$ tail -f jmeter.log 
2023-05-16 22:40:29,956 INFO o.a.j.r.d.JsonExporter: Found data for consumer statisticsSummary in context
2023-05-16 22:40:29,957 INFO o.a.j.r.d.JsonExporter: Creating statistics for overall
2023-05-16 22:40:29,957 INFO o.a.j.r.d.JsonExporter: Creating statistics for other transactions
2023-05-16 22:40:29,957 INFO o.a.j.r.d.JsonExporter: Checking output folder
2023-05-16 22:40:29,958 INFO o.a.j.r.d.JsonExporter: Writing statistics JSON to /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports/statistics.json
2023-05-16 22:40:30,006 INFO o.a.j.r.d.ReportGenerator: Exporting data using exporter:'html' of className:'org.apache.jmeter.report.dashboard.HtmlTemplateExporter'
2023-05-16 22:40:30,007 INFO o.a.j.r.d.HtmlTemplateExporter: Will generate dashboard in folder: /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports
2023-05-16 22:40:30,142 INFO o.a.j.r.d.HtmlTemplateExporter: Report will be generated in: /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports, creating folder structure
2023-05-16 22:40:30,145 INFO o.a.j.r.d.TemplateVisitor: Copying folder from '/Users/larry/Software/apache-jmeter-5.5/bin/report-template' to '/Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports', got message: /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports, found non empty folder with following content [/Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports/statistics.json], will be ignored
2023-05-16 22:40:30,472 INFO o.a.j.JMeter: Dashboard generated

Der Arbeiter beginnt auch mit der Arbeit und druckt einige einfache Protokolle aus, nachdem er Anweisungen erhalten hat:

$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.171
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.50.171:44621](local),objID:[4d13369d:18824fd059a:-7fff, 2287886479123818682]]]
Starting the test on host 192.168.50.171 @ 2023 May 16 22:37:31 HKT (1684247851980)
Warning: Nashorn engine is planned to be removed from a future JDK release
Finished the test on host 192.168.50.171 @ 2023 May 16 22:40:24 HKT (1684248024679)

Schritt 6: Ergebnisse und Bericht

Nachdem der gesamte Test ausgeführt wurde, finden Sie die entsprechenden Ergebnisse:

$ ls -l /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/
total 72
drwxr-xr-x  6 larry  staff    192 May 16 22:40 Reports
-rw-r--r--  1 larry  staff  23472 May 16 22:40 performance-test.csv
-rw-r--r--  1 larry  staff  10593 May 16 09:50 performance-test.jmx

Öffnen Sie index.html direkt im Berichtsverzeichnis  :

weitere Tipps

Ändern Sie den Port des Workers

Der Standardport von Worker ist 1099, er kann jedoch geändert werden und muss manchmal geändert werden, z. B. beim Einrichten einer Firewall oder beim Starten mehrerer Worker auf demselben Server. Die spezifischen Befehle lauten wie folgt:

$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.60 -Dserver_port=1984

Natürlich muss auch der Controller seine Befehle synchron anpassen:

$ ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test.csv -e -o projects/pkslow/Reports -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984

Führen Sie Tests mit Nohup durch

Leistungstests müssen manchmal über einen längeren Zeitraum ausgeführt werden. Es wird empfohlen, zum Ausführen den Nohup-Modus zu verwenden:

$ nohup ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test.csv -e -o projects/pkslow/Reports -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984 &
[1] 81248

Fügen Sie Zeit hinzu, wenn Sie Ergebnisse angeben

Auf diese Weise ist der Startvorgang sehr klar erkennbar und es werden auch Fehler im Verzeichnis vermieden.

$ nohup ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test."$(date +%F.%T)".csv -e -o projects/pkslow/Reports-"$(date +%F.%T)" -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984 &

Allerdings sollten Sie auch darauf achten, regelmäßig unnötige Ergebnisse zu bereinigen, um keinen Festplattenspeicher zu belegen.

Zusammenfassen

Leistungstests sind sehr wichtig. Apache JMeter ist Open Source, einfach zu verwenden und kann in Projekten verwendet werden.

Das Folgende sind die unterstützenden Informationen. Für Freunde, die [Softwaretests] durchführen, sollte es das umfassendste und umfassendste Vorbereitungslager sein. Dieses Lager hat mich auch auf der schwierigsten Reise begleitet. Ich hoffe, es kann Ihnen auch helfen!

Interview-Applet für Softwaretests

Die Datenbank mit Softwaretestfragen wurde von Millionen von Menschen ausgeschöpft! ! ! Wer weiß es! ! ! Das umfassendste Quiz-Miniprogramm im gesamten Netzwerk. Sie können die Quizfragen mit Ihrem Mobiltelefon durchführen, in der U-Bahn oder im Bus, loslegen!

Die folgenden Abschnitte mit Interviewfragen werden abgedeckt:

1. Grundlegende Theorie des Softwaretests, 2. Web-, App-, Schnittstellenfunktionstests, 3. Netzwerk, 4. Datenbank, 5. Linux

6. Web, App, Schnittstellenautomatisierung, 7. Leistungstests, 8. Programmiergrundlagen, 9. Fragen im Vorstellungsgespräch, 10. Offene Testfragen, 11. Sicherheitstests, 12. Computergrundlagen

Methode zur Informationsbeschaffung:

Supongo que te gusta

Origin blog.csdn.net/IT_LanTian/article/details/131743820
Recomendado
Clasificación