{"id":914,"date":"2024-01-12T10:28:44","date_gmt":"2024-01-12T09:28:44","guid":{"rendered":"https:\/\/ittester.sk\/automatisiertes-testen\/leistungspruefung-von-websites\/"},"modified":"2024-06-06T12:37:53","modified_gmt":"2024-06-06T10:37:53","slug":"performance-testing-website","status":"publish","type":"post","link":"https:\/\/ittester.sk\/de\/leistungstest\/jmeter-anleitung\/performance-testing-website\/","title":{"rendered":"Leistungspr\u00fcfung von Websites"},"content":{"rendered":"\n<p>In diesem Tutorial werden wir einen Plan zum Testen der Leistung von Webanwendungen erstellen, mit dem wir die Leistung von Webanwendungen mit JMeter testen k\u00f6nnen. Sie lernen auch die verschiedenen Elemente des Testplans kennen, die zur Erstellung eines Testskripts erforderlich sind, sowie deren Verwendung und Konfiguration.<\/p>\n\n<h2 class=\"wp-block-heading\"><strong>Inhalts\u00fcbersicht<\/strong><\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-predpoklady-prerekvizity-pre-vykonnostne-testy-performance-tests\">Predpoklady (prerekvizity) pre v\u00fdkonnostn\u00e9 testy (performance tests)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-kroky-pri-vytvarani-skriptov-testov-vykonnosti\">Kroky pri vytv\u00e1ran\u00ed skriptov testov v\u00fdkonnosti<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vytvorenie-kostry-testovacieho-skriptu\">Vytvorenie kostry testovacieho skriptu<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vytvaranie-alebo-zaznamenavanie-poziadaviek-http\">Vytv\u00e1ranie alebo zaznamen\u00e1vanie po\u017eiadaviek HTTP<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-pridanie-casovacov\">Pridanie \u010dasova\u010dov<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-pridanie-posluchacov\">Pridanie posluch\u00e1\u010dov<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-dry-run-test\">Dry Run test<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-konfiguracia-a-naplanovanie-zatazoveho-testu\">Konfigur\u00e1cia a napl\u00e1novanie z\u00e1\u0165a\u017eov\u00e9ho testu<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-spustenie-a-analyza-testu\">Spustenie a anal\u00fdza testu<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-zaver\">Z\u00e1ver<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-predpoklady-prerekvizity-pre-vykonnostne-testy-performance-tests\">Voraussetzungen f\u00fcr Leistungstests<\/h2>\n\n<p>Bei der Erstellung eines Plans zum Testen der Leistung einer Webanwendung sollten Sie die folgenden Dinge im Voraus beherrschen:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>Kenntnis von Gesch\u00e4ftsanwendungsszenarien.<\/li>\n\n\n\n<li>Eine Anwendungsinstanz, die f\u00fcr Leistungstests mit produktions\u00e4hnlichen Konfigurationen und Zust\u00e4nden entwickelt wurde.<\/li>\n\n\n\n<li>Liste der f\u00fcr Leistungstests ausgew\u00e4hlten Szenarien (da nicht alle Szenarien einem Belastungstest unterzogen werden m\u00fcssen).<\/li>\n\n\n\n<li>Die Spitzenlast in der Produktion oder der voraussichtliche Wert der Spitzenlast.<\/li>\n\n\n\n<li>Die Verteilung der Nutzer in verschiedenen Szenarien, da einige Szenarien h\u00e4ufiger genutzt werden als andere. Daher werden den verschiedenen Szenarien unterschiedliche Nutzerzahlen zugeordnet.<\/li>\n\n\n\n<li>Der Wert der Denkzeit oder der Wartezeit, die zwischen einigen Vorg\u00e4ngen einzurechnen ist, um reale Benutzer zu simulieren &#8211; Denkzeit, Tippzeit, Lese- und Informationsverarbeitungszeit, usw.<\/li>\n\n\n\n<li>Eine aus den Testergebnissen abzuleitende Leistungskennzahl, z. B. Antwortzeit, Anzahl der Aufrufe pro Sekunde usw.<\/li>\n<\/ol>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-kroky-pri-vytvarani-skriptov-testov-vykonnosti\">Schritte zur Erstellung von Leistungstestskripten<\/h2>\n\n<p>Um einen Testplan f\u00fcr die Leistung einer Webanwendung zu erstellen, m\u00fcssen Sie die folgenden Schritte durchf\u00fchren:<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>Erstellen Sie ein Skeleton-Testskript<\/strong> mit einem konfigurierten Testplan, Thread-Gruppen und Logik-Controllern.<\/li>\n\n\n\n<li><strong>Erstellung oder Protokollierung von HTTP-Anfragen <\/strong>\u00fcber den HTTP-Proxy.<\/li>\n\n\n\n<li><strong>F\u00fcgen Sie Timer hinzu, um<\/strong> Wartezeiten oder Bedenkzeiten zwischen Anfragen einzuf\u00fchren.<\/li>\n\n\n\n<li><strong>F\u00fcgen Sie Listener zum<\/strong> Speichern und Analysieren von Testergebnissen <strong>hinzu<\/strong>.<\/li>\n\n\n\n<li><strong>F\u00fchren Sie einen Probelauf<\/strong> mit 1 oder 2 Benutzern <strong>durch<\/strong>.<\/li>\n\n\n\n<li><strong>Konfigurieren Sie einen Stresstest<\/strong> mit der erforderlichen Anzahl von Benutzern und f\u00fchren Sie ihn durch.<\/li>\n\n\n\n<li><strong>Durchf\u00fchren und Analysieren der Testergebnisse<\/strong>.<\/li>\n<\/ol>\n\n<p>Sehen wir uns nun an, wie wir jeden der oben genannten Schritte im Detail durchf\u00fchren k\u00f6nnen.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vytvorenie-kostry-testovacieho-skriptu\">Erstellung des Grundger\u00fcsts des Testskripts<\/h2>\n\n<p>Je nach der Anzahl der Benutzergruppen, die f\u00fcr die Durchf\u00fchrung verschiedener Vorg\u00e4nge erforderlich sind, werden wir unserem Testplan Thread-Gruppen und Logik-Controller hinzuf\u00fcgen. Ein Beispiel: Zwei Gruppen von Nutzern f\u00fchren auf einer Webseite Such- und Anmeldevorg\u00e4nge durch.<\/p>\n\n<p>Dann erstellen wir zwei Thread-Gruppen und f\u00fcgen verschiedene Logik-Controller hinzu, um verschiedene von Benutzern ausgef\u00fchrte Operationen zu simulieren. Zu unternehmende Schritte:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>F\u00fcgen Sie dem Testplan eine Gruppe von Threads hinzu und nennen Sie sie UsersSearchingKeywords.<\/li>\n\n\n\n<li>F\u00fcgen Sie mehrere Transaktionscontroller als Kinder dieser Thread-Gruppe hinzu und benennen Sie sie nach den Operationen, die sie ausf\u00fchren, z. B. &#8222;Anwendung starten&#8220;, &#8222;Schl\u00fcsselwort suchen und Enter dr\u00fccken&#8220;, &#8222;Anwendung schlie\u00dfen&#8220;.<\/li>\n\n\n\n<li>F\u00fcgen Sie eine weitere Gruppe von Threads hinzu und nennen Sie sie UsersLogin.<\/li>\n\n\n\n<li>F\u00fcgen Sie dieser Thread-Gruppe Transaktionssteuerungen hinzu, z. B. &#8222;Anwendung starten&#8220;, &#8222;Auf Anmeldelink klicken&#8220;, &#8222;Anmeldedaten eingeben und auf die Schaltfl\u00e4che Senden klicken&#8220;.<\/li>\n\n\n\n<li>Konfiguration hinzuf\u00fcgen  <\/li>\n<\/ul>\n\n<p>Unser Testplan wird folgenderma\u00dfen aussehen:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"360\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360.webp\" alt=\"\" class=\"wp-image-840\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360.webp 950w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360-300x114.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-1-950-360-768x291.webp 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n<\/div>\n<p>Beachten Sie, dass wir hier einen Transaktionscontroller verwendet haben, weil wir mehrere HTTP-Anfragen innerhalb dieses Controllers haben k\u00f6nnen und wir die Gesamtantwortzeit der gesamten Transaktion erhalten, nachdem der Test durchgef\u00fchrt wurde, was w\u00fcnschenswert ist. Je nach Szenario k\u00f6nnen wir auch verschiedene logische Steuerungen hinzuf\u00fcgen, wie z. B. eine Zyklussteuerung, eine Zufallssteuerung usw.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vytvaranie-alebo-zaznamenavanie-poziadaviek-http\">Erstellen oder Protokollieren von HTTP-Anfragen<\/h2>\n\n<p>Wenn wir einen Vorgang ausf\u00fchren, z. B. auf eine Schaltfl\u00e4che klicken, werden mehrere HTTP-Anfragen an den Server gesendet. Bei der Skripterstellung m\u00fcssen wir alle diese Anfragen erstellen, damit wir die Zeit bestimmen k\u00f6nnen, die f\u00fcr die Bearbeitung der Anfragen ben\u00f6tigt wird.<\/p>\n\n<p>Eine M\u00f6glichkeit, dies zu tun, besteht darin, verschiedene HTTP-Anfragen hinzuzuf\u00fcgen und sie mit Werten wie URL, Port, Anfragetyp (Get, Put, Post, Delete usw.), Request Body, Request Header usw. zu konfigurieren. Dies kann jedoch sehr m\u00fchsam sein, es sei denn, wir m\u00fcssen nur sehr wenige Anfragen testen oder eine bestimmte HTTP-Anfrage.<\/p>\n\n<p>Um dies effizient zu tun, bietet JMeter das HTTP(s)-Testskript-Rekorder-Tool, mit dem wir Skripte direkt in JMeter aufzeichnen k\u00f6nnen, indem wir Operationen im Browser durchf\u00fchren.<\/p>\n\n<p>Wenn wir mit der Aufzeichnung von Skripten beginnen, k\u00f6nnen wir einen Transaktionscontroller, wie z. B. &#8222;Anwendung starten&#8220;, aus dem Ziel-HTTP(s)-Testskript-Recorder-Controller ausw\u00e4hlen und Vorg\u00e4nge wie das Starten einer Webanwendung im konfigurierten Browser oder das Hinzuf\u00fcgen verschiedener HTTP-Anfragen zum ausgew\u00e4hlten Controller durchf\u00fchren.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"280\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280.webp\" alt=\"\" class=\"wp-image-842\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280.webp 1000w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280-300x84.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/01\/performance-testing-webstranok-screenshot-2-1000-280-768x215.webp 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-pridanie-casovacov\">Hinzuf\u00fcgen von Zeitschaltuhren<\/h2>\n\n<p>Wir k\u00f6nnen Timer zwischen zwei Transaktionscontrollern einf\u00fcgen, um eine Denkzeit einzuf\u00fchren, z. B. k\u00f6nnen wir einen Timer mit einem Timeout-Wert von 3 Sekunden zwischen den Controllern &#8222;Launch Application&#8220; und &#8222;Search Keyword&#8220; einf\u00fcgen, um die Zeit zu simulieren, die der Benutzer braucht, um die Antwort zu verarbeiten und das Schl\u00fcsselwort f\u00fcr die Suche einzugeben.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-pridanie-posluchacov\">H\u00f6rer hinzuf\u00fcgen<\/h2>\n\n<p>Wir k\u00f6nnen verschiedene Arten von Listenern zum Speichern und Analysieren von Testergebnissen verwenden, die wir in unserem Tutorial &#8211; Listener in JMeter &#8211; untersucht haben.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-dry-run-test\">Trockenlauftest<\/h2>\n\n<p>Bevor wir den Test mit der tats\u00e4chlichen Anzahl von Benutzern durchf\u00fchren, m\u00fcssen wir den Test mit einer sehr kleinen Anzahl von Benutzern trocken durchf\u00fchren, um die Korrektheit des Skripts zu \u00fcberpr\u00fcfen.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-konfiguracia-a-naplanovanie-zatazoveho-testu\">Konfigurieren und Planen eines Stresstests<\/h2>\n\n<p>Nach der Validierung der Skripte konfigurieren wir den Stresstest mit der erforderlichen Anzahl von Benutzern und planen den Stresstest.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-spustenie-a-analyza-testu\">Durchf\u00fchrung und Auswertung des Tests<\/h2>\n\n<p>Sobald die Erstellung und Konfiguration des Testskripts abgeschlossen ist, f\u00fchren Sie den Test aus, indem Sie auf das Abspielsymbol klicken oder die Tastenkombination Strg+r dr\u00fccken. Wir werden den Server parallel \u00fcberwachen, w\u00e4hrend der Test l\u00e4uft. Nach Abschluss des Tests k\u00f6nnen wir die Testergebnisse speichern und auswerten.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-zaver\">Schlussfolgerung<\/h2>\n\n<p>Jetzt haben wir den grundlegenden Testplan f\u00fcr die Webanwendung gesehen, aber es gibt noch ein paar Dinge, die zu beachten sind:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>W\u00e4hrend der Tests sollten wir keine Werte wie Suchbegriffe und Benutzeranmeldedaten usw. eingeben. Zu diesem Zweck m\u00fcssen wir die Testskripte parametrisieren.  <\/li>\n\n\n\n<li>Die Erstellung dynamischer Skripte und die Manipulation von Sitzungsvariablen ist ein weiterer Punkt, der bei der Skripterstellung zu ber\u00fccksichtigen ist. Um diese Probleme zu l\u00f6sen, haben wir das Konzept der Korrelation.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Erstellung eines Plans f\u00fcr Leistungstests von Webanwendungen, damit wir Leistungstests mit JMeter durchf\u00fchren k\u00f6nnen.  <\/p>\n","protected":false},"author":8,"featured_media":1657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[21],"tags":[],"class_list":["post-914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jmeter-anleitung"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/comments?post=914"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/914\/revisions"}],"predecessor-version":[{"id":1659,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/914\/revisions\/1659"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media\/1657"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media?parent=914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/categories?post=914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/tags?post=914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}