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 jmx
der 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 jmx
Datei, 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: