{"id":11699,"date":"2020-05-26T09:17:58","date_gmt":"2020-05-26T09:17:58","guid":{"rendered":"https:\/\/www.dotcom-monitor.com\/blog\/2020\/05\/26\/http-headless-browser-load-tests-vergleich\/"},"modified":"2026-06-15T15:23:11","modified_gmt":"2026-06-15T15:23:11","slug":"http-headless-browser-load-tests-vergleich","status":"publish","type":"post","link":"https:\/\/www.dotcom-monitor.com\/blog\/de\/http-headless-browser-load-tests-vergleich\/","title":{"rendered":"Auslastungstests: HTTP vs Headless vs Real Browser"},"content":{"rendered":"<h2 id='overview'  id=\"boomdevs_1\">Overview<\/h2>\n<p>Langsames Laden oder nicht reagierende Webseiten wirken sich auf den Finanzumsatz aus, da frustrierte Benutzer h\u00f6chstwahrscheinlich nicht zur\u00fcckkehren werden, sobald das Problem behoben ist. Daher sind Leistungstests zu einem grundlegenden Bestandteil der Entwicklungskette geworden und die Nachfrage w\u00e4chst weiter.<\/p>\n<p>Leistungstestplattformen bieten eine breite Palette von Lastsimulationsmethoden wie HTTP, headless und echte browserbasierte. In diesem Beitrag werden wir die Hauptaspekte der folgenden Aspekte einer Vergleichsmatrix skizzieren, die Sie f\u00fcr die Auswahl eines geeigneten Simulationsansatzes verwenden k\u00f6nnen.<\/p>\n<h2 id='http-basierte-auslastungssimulation'  id=\"boomdevs_2\">HTTP-basierte Auslastungssimulation<\/h2>\n<p>In den Anf\u00e4ngen des digitalen Zeitalters waren HTTP-basierte Tests sehr beliebt. Mit dem Aufkommen der Rich-Web-Client-Technologie sind die HTTP-basierten Simulationsans\u00e4tze zunehmend veraltet. Ein typischer HTTP-basierter Testtreiber f\u00fchrt Dienstanforderungen aus und analysiert Antworten. Moderne Web 2.0-Anwendungen bestehen aus vielen clientseitigen Skripten, die v\u00f6llig ignoriert und bei dieser Art von Testausf\u00fchrung nicht gemessen werden. Im schlimmsten Fall k\u00f6nnen komplexe Anwendungsf\u00e4lle auf Protokollebene aufgrund eines Mangels an vom Client generierten IDs nicht simuliert werden.<\/p>\n<p>Aufgrund ihrer Anforderungs- und Antwort-basierten Natur ist der Overhead an der Lastspritzmaschine sehr gering. Ein typischer Auslastungstestserver kann bis zu 800 gleichzeitige Sitzungen simulieren. Komplexe protokollbasierte Anwendungsf\u00e4lle k\u00f6nnen schwierig zu implementieren sein. Ein Leistungsingenieur muss sich mit Cookies, Sitzungs-IDs und anderen dynamischen Parametern befassen. Je nach Art des getesteten Systems \u00e4ndern sich einige Webformularnamen h\u00e4ufig, sobald eine neue Version bereitgestellt wurde, wodurch das HTTP-basierte Skript fehlschl\u00e4gt.<\/p>\n<h2 id='headless-browser-based-load-simulation'  id=\"boomdevs_3\">Headless Browser Based Load Simulation<\/h2>\n<p>Mit dem Aufstieg der Web 2.0-Technologien stand das Testgesch\u00e4ft vor gro\u00dfen Herausforderungen. Umfangreiche Browseranwendungen konnten aufgrund der fehlenden clientseitigen Logik w\u00e4hrend der Skriptwiedergabe nicht mehr auf Protokollebene getestet oder simuliert werden. Daher wurden mehrere kopflose Browser wie HtmlUnit, PhantomJS oder SlimerJS eingef\u00fchrt. Sie basieren oft auf WebKit, der Engine hinter Chrome und Safari.<\/p>\n<p>Headless Browser \u00e4hneln echten Browsern ohne GUI. Viele Testautomatisierungs- und Leistungstestplattformen verwenden kopflose Browser, um Datenverkehr zu simulieren.<\/p>\n<p>Headless-Browser haben ihre eigenen Fallstricke; Wenn neue Browser M\u00e4rkte betreten, m\u00fcssen headless Browser-Kits alle Leistungs- und Funktionsverbesserungen der echten Browser aufholen.<\/p>\n<p>Die Simulation des clientseitigen Renderings von ist nicht kostenlos. Ein typischer Load-Injection-Server kann bis zu 10-12 gleichzeitige headless-Browsersitzungen simulieren, im Vergleich zu 500 HTTP-basierten Sitzungen.<\/p>\n<p>Die Implementierung und Anpassung von Testskripten ist nicht allzu schwierig. Wenn Sie \u00fcber grundlegende Programmierkenntnisse verf\u00fcgen, k\u00f6nnen Sie einfache Skripte erstellen. Nicht alle headless-Browser bieten visuelle Wiedergabefunktionen und ohne visuelle Wiedergabe Skript-Debugging oder Fehleranalyse k\u00f6nnte sehr schwierig werden.<\/p>\n<h2 id='headless-browser-based-load-simulation-1'  id=\"boomdevs_4\">Headless Browser Based Load Simulation<\/h2>\n<p>Mit dem Aufstieg der Web 2.0-Technologien stand das Testgesch\u00e4ft vor gro\u00dfen Herausforderungen. Umfangreiche Browseranwendungen konnten aufgrund der fehlenden clientseitigen Logik w\u00e4hrend der Skriptwiedergabe nicht mehr auf Protokollebene getestet oder simuliert werden. Daher wurden mehrere kopflose Browser wie HtmlUnit, PhantomJS oder SlimerJS eingef\u00fchrt. Sie basieren oft auf WebKit, der Engine hinter Chrome und Safari.<\/p>\n<p>Headless Browser \u00e4hneln echten Browsern ohne GUI. Viele Testautomatisierungs- und Leistungstestplattformen verwenden kopflose Browser, um Datenverkehr zu simulieren.<\/p>\n<p>Headless-Browser haben ihre eigenen Fallstricke; Wenn neue Browser M\u00e4rkte betreten, m\u00fcssen headless Browser-Kits alle Leistungs- und Funktionsverbesserungen der echten Browser aufholen.<\/p>\n<p>Die Simulation des clientseitigen Renderings von ist nicht kostenlos. Ein typischer Load-Injection-Server kann bis zu 10-12 gleichzeitige headless-Browsersitzungen simulieren, im Vergleich zu 500 HTTP-basierten Sitzungen.<\/p>\n<p>Die Implementierung und Anpassung von Testskripten ist nicht allzu schwierig. Wenn Sie \u00fcber grundlegende Programmierkenntnisse verf\u00fcgen, k\u00f6nnen Sie einfache Skripte erstellen. Nicht alle headless-Browser bieten visuelle Wiedergabefunktionen und ohne visuelle Wiedergabe Skript-Debugging oder Fehleranalyse k\u00f6nnte sehr schwierig werden.<\/p>\n<h2 id='performance-test-types'  id=\"boomdevs_5\">Performance Test Types<\/h2>\n<h3 id='component-speed-tests'  id=\"boomdevs_6\">Component Speed Tests<\/h3>\n<p>In den letzten Jahren haben sich die Methoden der Softwareentwicklung in die agile Richtung entwickelt. Kurze Release-Sprints sind unerl\u00e4sslich. Entwickler und Testingenieure automatisieren ihre Qualit\u00e4tssicherung und Leistungspr\u00fcfungen. In der Regel implementieren sie dienstbasierte Leistungstests auf Protokollebene oder simulieren echte browserbasierte Leistungspr\u00fcfungen, um End-to-End-Antwortzeiten mit vereinbarten Leistungsgrenzen zu vergleichen.<\/p>\n<p>Ziele<\/p>\n<ul>\n<li>+ Wiederholbarkeit<\/li>\n<li>+ Automatisierte Schnittstellen- und End-to-End-Leistungspr\u00fcfungen<\/li>\n<li>+ Vergleichder Reaktionszeiten mit vereinbarten Schwellenwerten<\/li>\n<\/ul>\n<h3 id='load-tests'  id=\"boomdevs_7\">Load Tests<\/h3>\n<p>Aus mehreren Gr\u00fcnden sind Belastungstests die ideale Pr\u00fcfmethode, wenn es um die \u00dcberpr\u00fcfung nicht-funktionaler Anforderungen geht. Eine davon ist, dass die Reaktionszeiten unter reproduzierbaren Bedingungen \u00fcberpr\u00fcft werden k\u00f6nnen. Ein weiterer Teil davon ist, dass diese Tests die \u00dcberpr\u00fcfung der Reaktionszeitschwellen erm\u00f6glichen. Realistische Reaktionszeitmessungen sind in Auslastungstestszenarien unerl\u00e4sslich. Daher verwenden Testingenieure f\u00fcr ihre Auslastungstesteinstellungen eine kopflose oder echte browserbasierte Benutzersimulation.<\/p>\n<p>Ziele<\/p>\n<ul>\n<li>+ Reproduzierbare Lastsimulation<\/li>\n<li>+ \u00dcberpr\u00fcfung der Reaktionszeitschwellen<\/li>\n<li>+ Engp\u00e4sse in der Produktion wie Belastungsbedingungen identifizieren<\/li>\n<li>+ Realistische End-to-End-Testszenarien<\/li>\n<\/ul>\n<h3 id='stress-test'  id=\"boomdevs_8\">Stress Test<\/h3>\n<p>Wenn Sie die Zuverl\u00e4ssigkeit Ihrer Anwendung unter Spitzenlastbedingungen testen m\u00fcssen, f\u00fchren Sie einen Stresstest durch. In diesem Testtyp geben Sie haupts\u00e4chlich die maximale Anzahl von Benutzern und die Zeit an, \u00fcber die der Hochlauf und die Konstante-State-Last f\u00fcr Ihre Anwendung sein sollte. Das Ziel besteht darin, die Bruchstellen Ihrer zu testenden Anwendung zu identifizieren.<\/p>\n<p>Ziele<\/p>\n<ul>\n<li>+ Nachweis Skalierbarkeit und Stabilit\u00e4t<\/li>\n<li>+ Spitzenlastbedingungen simulieren<\/li>\n<li>+ Exakte Reproduzierbarkeit ist nicht wichtig<\/li>\n<\/ul>\n<h2 id='vergleich'  id=\"boomdevs_9\">Vergleich<\/h2>\n<p>Offensichtlich gibt es gute Gr\u00fcnde f\u00fcr Protokoll, kopflos oder echte Browser-basierte Benutzersimulation. Die folgende Matrix enth\u00e4lt einige Hinweise zur Auswahl des geeigneten Ansatzes.<\/p>\n<table>\n<thead>\n<tr>\n<th>Kriterien<\/th>\n<th>HTTP<\/th>\n<th>Headless Browser<\/th>\n<th>Real Browser<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Benutzersimulation<\/td>\n<td>Kein<br \/>\nClient-Seiten-Rendering<\/td>\n<td>Einige clientseitige Elemente werden simuliert<\/td>\n<td>Reale Benutzersimulation<\/td>\n<\/tr>\n<tr>\n<td>Skriptimplementierung<br \/>\nund -anpassung<\/td>\n<td>Schwierig, wenn Websites komplex sind<\/td>\n<td>Entwicklerkenntnisse zum Erstellen robuster Skripts erforderlich<\/td>\n<td>Einfache Skripte, einfach anzupassen<\/td>\n<\/tr>\n<tr>\n<td>Script-Wiederholung<\/td>\n<td>Low-Level-Analyse erforderlich<\/td>\n<td>Je nach verwendeter Engine ist eine visuelle Wiedergabe m\u00f6glich<\/td>\n<td>Sie sehen, was Sie bekommen<\/td>\n<\/tr>\n<tr>\n<td>Skript-Wartungsfreundlichkeit<\/td>\n<td>Programmierkenntnisse erforderlich<\/td>\n<td>Fehler in nicht gerenderten Abschnitten sind schwierig zu l\u00f6sen<\/td>\n<td>Einfach, weil Sie Fehler w\u00e4hrend der Wiedergabe sehen<\/td>\n<\/tr>\n<tr>\n<td>Multi-Browser-Unterst\u00fctzung<\/td>\n<td>Einige Tools emulieren Webbrowser, aber dies ist nicht vergleichbar<\/td>\n<td>Ja, aber einige Elemente fehlen oft<\/td>\n<td>Einige unterst\u00fctzen andere Versionen und verschiedene Browser<\/td>\n<\/tr>\n<tr>\n<td>Footprint auf Derlast-Injektionsmaschine<\/td>\n<td>Niedrig,<br \/>bis zu 800 Sitzungen pro Server<\/td>\n<td>Mittel,<br \/>bis zu 10\u201312 Sitzungen pro Server<\/td>\n<td>Hoch,<br \/>bis zu 6 Sitzungen pro Server<\/td>\n<\/tr>\n<tr>\n<td>Empfohlen f\u00fcr DevOps<\/td>\n<td>Abh\u00e4ngig vom tats\u00e4chlichen Testszenario<\/td>\n<td>Nein, oft komplexe Skripte<\/td>\n<td>Ja, einfach zu bedienen und realistische Zahlen<\/td>\n<\/tr>\n<tr>\n<td>Empfohlen f\u00fcr Auslastungstests<\/td>\n<td>Nein, die clientseitige Verarbeitung wird \u00fcbersprungen<\/td>\n<td>Ja, besser als HTTP-Simulation<\/td>\n<td>Ja, realistische Benutzersimulation<\/td>\n<\/tr>\n<tr>\n<td>Empfohlen f\u00fcr Stresstests<\/td>\n<td>Ja, da es einen geringen Overhead auf der Lastgeneratormaschine gibt<\/td>\n<td>Nein, der Overhead auf der Lastgeneratormaschine ist zu hoch<\/td>\n<td>Nein,<br \/>h\u00f6chster Overhead auf Lastgeneratormaschine<\/td>\n<\/tr>\n<tr>\n<td>kosten<\/td>\n<td>Niedrig<\/td>\n<td>Hoch<\/td>\n<td>Hoch<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><strong>Empfohlen f\u00fcr Hochvolumen-, Low-Cost-Tests Webserver-Stresstests (wo m\u00f6glich)<\/strong><\/td>\n<td><strong>Nicht empfohlen<\/strong><\/td>\n<td><strong>Empfohlen f\u00fcr reale komplexe Anwendungssimulationen.<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Webseiten, die f\u00fcr dieses Dokument verwendet werden:<\/p>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/web\/tools\/chrome-devtools\/device-mode\/testing-other-browsers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/developers.google.com\/web\/tools\/chrome-devtools\/device-mode\/testing-other-browsers<\/a><\/li>\n<li><a href=\"https:\/\/watirmelon.blog\/2015\/12\/08\/real-vs-headless-browsers-for-automated-acceptance-tests\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/watirmelon.blog\/2015\/12\/08\/real-vs-headless-browsers-for-automated-acceptance-tests\/<\/a><\/li>\n<li><a href=\"https:\/\/news.softpedia.com\/news\/what-is-a-headless-browser-and-what-s-it-good-for-485162.shtml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/news.softpedia.com\/news\/what-is-a-headless-browser-and-what-s-it-good-for-485162.shtml<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dhamaniasad\/HeadlessBrowsers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/dhamaniasad\/HeadlessBrowsers<\/a><\/li>\n<li><a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/circleci.com\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Eine \u00dcbersicht der Hauptaspekte von Lastsimulationsmethoden wie HTTP, headless und real browserbasiert gefolgt von einer Vergleichsmatrix, um Ihnen bei der Auswahl eines geeigneten Simulationsansatzes zu helfen. <\/p>\n","protected":false},"author":21,"featured_media":9432,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3243,920,908,909],"tags":[],"class_list":["post-11699","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-auslastungstests","category-dotcom-monitor-nachrichten","category-performance-tech-tipps","category-website-performance-nachrichten"],"_links":{"self":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/posts\/11699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=11699"}],"version-history":[{"count":0,"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/posts\/11699\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/media\/9432"}],"wp:attachment":[{"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=11699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=11699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dotcom-monitor.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=11699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}