Stresstest für Webanwendungen durchführen?


243

In der Vergangenheit habe ich Microsoft Web Application Stress Tool und Pylot verwendet, um Webanwendungen zu testen. Ich hatte eine einfache Homepage, ein Anmeldeskript und eine exemplarische Vorgehensweise für die Website geschrieben (auf einer E-Commerce-Website wurden einige Artikel in einen Warenkorb und zur Kasse gelegt).

Nur mit einer Handvoll Entwicklern hart auf die Homepage zu kommen, würde fast immer ein großes Problem finden. In der zweiten Phase würden noch mehr Skalierbarkeitsprobleme auftreten, und noch mehr - nach dem Start.

Die URL der von mir verwendeten Tools war Microsoft Homer (auch bekannt als Microsoft Web Application Stress Tool ) und Pylot .

Die von diesen Tools erstellten Berichte machten für mich nie viel Sinn, und ich verbrachte viele Stunden damit, herauszufinden, welche Art von gleichzeitiger Auslastung die Site unterstützen könnte. Es hat sich immer gelohnt, weil immer die dümmsten Fehler und Engpässe auftraten (zum Beispiel Fehlkonfigurationen von Webservern).

Was haben Sie getan, welche Tools haben Sie verwendet und welchen Erfolg hatten Sie mit Ihrem Ansatz? Der für mich interessanteste Teil ist die Entwicklung einer aussagekräftigen Formel zur Berechnung der Anzahl der gleichzeitigen Benutzer, die eine App aus den von der Stresstest-Anwendung gemeldeten Zahlen unterstützen kann.

Antworten:


110

Hier ist eine weitere Abstimmung für JMeter .

JMeter ist ein Open-Source-Lasttest-Tool, das in Java geschrieben wurde. Es ist in der Lage, eine Reihe verschiedener Servertypen zu testen (z. B. Web, Webdienste, Datenbank, fast alles, was Anforderungen grundsätzlich verwendet).

Es hat jedoch eine steile Lernkurve, sobald Sie zu komplizierten Tests kommen, aber es lohnt sich. Sie können sehr schnell einsatzbereit sein. Je nachdem, welche Art von Stresstest Sie durchführen möchten, ist dies möglicherweise in Ordnung.

Vorteile:

  • Open-Source / Free-Tool aus dem Apache-Projekt (hilft beim Buy-In)
  • Einfacher Einstieg und einfache Bedienung, sobald Sie die Kernkonzepte verstanden haben. (Dh wie man eine Anfrage erstellt, wie man eine Zusicherung erstellt, wie man mit Variablen arbeitet usw.).
  • Sehr skalierbar. Ich habe Tests mit 11 Maschinen durchgeführt, die eine Auslastung des Servers mit einer Geschwindigkeit von fast einer Million Treffern / Stunde erzeugen. Es war viel einfacher einzurichten als ich erwartet hatte.
  • Verfügt über eine aktive Community und gute Ressourcen, die Sie bei der Inbetriebnahme unterstützen. Lesen Sie zuerst die Tutorials und spielen Sie eine Weile damit.

Nachteile:

  • Die Benutzeroberfläche ist in Swing geschrieben. (Pfui!)
  • JMeter analysiert den vom Server zurückgegebenen Antworttext. Wenn Sie also Javascript-Verhaltensweisen überprüfen möchten, haben Sie kein Glück.
  • Die Lernkurve ist für Nicht-Programmierer steil. Wenn Sie mit regulären Ausdrücken vertraut sind, sind Sie dem Spiel bereits voraus.
  • Es gibt eine große Anzahl von ( expletiven ) Idioten im Support-Forum, die dumme Fragen stellen, die leicht gelöst werden könnten, wenn sie der Dokumentation auch nur einen flüchtigen Blick geben würden. ('Wie verwende ich JMeter zum Stresstest meiner Windows-Benutzeroberfläche?' Wird häufig angezeigt.)
  • Insbesondere bei größeren Tests lässt die Meldung "out of the box" zu wünschen übrig. In dem oben erwähnten Test musste ich schließlich eine schnelle Konsolen-App schreiben, um einige der Konvertierungen von 'xml-logfile' in 'html' durchzuführen. Das war allerdings vor ein paar Jahren, daher ist es wahrscheinlich, dass dies nicht mehr erforderlich ist.

Bitte klären Sie, ob JMeter Ihnen beim Testen der auf einem Remote-VPS installierten Anwendung helfen kann. Ich bin nicht sicher, da es Desktop-Version ist
Rajat Gupta

1
Eine weitere Option im Zusammenhang mit JMeter ist JMeter as a Service. Diese SaaS-Typen bieten hoch skalierbares JMeter sowie eine deutlich verbesserte Berichterstellung.
Ophir Prusak

5
Ich bin nicht der Meinung, dass JMeter sehr skalierbar ist. Eine Million Anfragen pro Stunde sind lediglich 278 Anfragen pro Sekunde, was - für die Ausführung auf 11 Computern - im Vergleich zu anderen Tools äußerst niedrig ist. Ich würde JMeters Skalierbarkeit tatsächlich auf die Seite der Nachteile stellen.
Heyman

JMeter ist kein Browser, sondern funktioniert auf Protokollebene. In Bezug auf Webdienste und Remotedienste sieht JMeter wie ein Browser (oder vielmehr wie mehrere Browser) aus. JMeter führt jedoch nicht alle von Browsern unterstützten Aktionen aus. Webanwendungen sollten "ausgeführt" werden, um ausgeführt zu werden.
LeonanCarvalho

36

Ich habe The Grinder benutzt . Es ist Open Source, ziemlich einfach zu bedienen und sehr konfigurierbar. Es basiert auf Java und verwendet Jython für die Skripte. Wir haben es mit einer .NET-Webanwendung ausgeführt. Denken Sie also nicht, dass es sich nur um ein Java-Tool handelt (von Natur aus sollte kein Web-Stress-Tool an die verwendete Plattform gebunden sein).

Wir haben ein paar nette Sachen damit gemacht ... wir waren eine webbasierte Telekommunikationsanwendung, also bestand eine coole Verwendung darin, das Wählen einer Nummer über unsere Webanwendung nachzuahmen und dann ein Auto-Answer-Tool zu verwenden, das wir hatten (was im Grunde ein Tutorial war App von Microsoft, um eine Verbindung zu ihrem RTC LCS-Server herzustellen ... mit der Microsoft Office Communicator in einem lokalen Netzwerk eine Verbindung herstellt ... und dann so geändert, dass nur Anrufe automatisch entgegengenommen werden). Dies ermöglichte es uns dann, dies anstelle eines teuren Telefonie-Tools namens The Hammer (oder so ähnlich) zu verwenden.

Wie auch immer, wir haben das Tool auch verwendet, um zu sehen, wie sich unsere Anwendung unter hoher Last behauptet, und es war sehr effektiv bei der Suche nach Engpässen. Das Tool verfügt über eine integrierte Berichterstellung, die anzeigt, wie lange Anforderungen dauern. Wir haben sie jedoch nie verwendet. In den Protokollen können auch alle Antworten und so weiter oder benutzerdefinierte Protokolle gespeichert werden.

Ich kann dieses Tool nur empfehlen, das für den Preis sehr nützlich ist. Erwarten Sie jedoch, dass Sie ein benutzerdefiniertes Setup damit durchführen (es verfügt über einen integrierten Proxy zum Aufzeichnen eines Skripts, muss jedoch möglicherweise angepasst werden, um so etwas wie Sitzungen zu erfassen ... Ich weiß Ich musste es anpassen, um eine eindeutige Sitzung pro Thread zu verwenden.


1
+1 für Mühle. Besonders gut hat mir die Proxy-Scripting-Option gefallen.
Davek

Jede Möglichkeit, mit der ein inaktiver Browser simuliert werden kann. Serveranfragen werden für unsere App alle zwei Sekunden von einem inaktiven Browser gestellt. Ich würde gerne wissen, was passiert, wenn wir dreißig gleichzeitig inaktive Browser haben.
Ramy

1
+1 für Mühle. In Verbindung mit EC2 haben wir es erfolgreich verwendet, um 100.000 gleichzeitige Benutzer zu aktivieren.
Nategood

23

Ein bisschen spät zu dieser Party. Ich bin damit einverstanden, dass Pylot das beste aufstrebende Open Source-Tool auf dem Markt ist. Es ist einfach zu bedienen und wird von einem großartigen Mann ( Corey Goldberg ) aktiv bearbeitet . Als Gründer von OpenQA bin ich auch froh, dass Pylot jetzt auf unserer Homepage aufgeführt ist und einen Teil unserer Infrastruktur (nämlich die Foren) nutzt.

Vor kurzem habe ich jedoch auch festgestellt, dass das gesamte Konzept des Lasttests fehlerhaft ist: Die Emulation des HTTP-Verkehrs mit Anwendungen, die so komplex sind, wie sie geworden sind, ist ein Problem. Deshalb habe ich das kommerzielle Tool BrowserMob erstellt. Es ist ein externer Lasttestdienst , der Selenium verwendet , um echte Webbrowser bei der Wiedergabe der Last zu steuern.

Der Ansatz erfordert offensichtlich eine Tonne mehr Hardware als normale Lasttesttechniken, aber Hardware ist tatsächlich ziemlich billig, wenn Sie Cloud Computing verwenden. Und ein netter Nebeneffekt davon ist, dass das Scripting viel einfacher ist als normale Lasttests. Sie müssen keinen erweiterten Regex-Abgleich durchführen (wie es JMeter erfordert), um Cookies, den .NET-Sitzungsstatus, Ajax-Anforderungsparameter usw. zu extrahieren. Da Sie echte Browser verwenden, tun sie genau das, was sie tun sollen.

Es tut mir leid, ein kommerzielles Produkt offen zu stellen, aber hoffentlich ist das Konzept für einige Leute interessant und bringt sie zumindest dazu, über neue Möglichkeiten nachzudenken, wie sie mit Lasttests umgehen können, wenn Sie Zugriff auf eine Reihe zusätzlicher Hardware haben!


2
Pylots Autor hat auch ein anderes Web-Test-Tool erstellt: code.google.com/p/multi-mechanize
codeape

2
Der Link zu pylot.org leitet zu einer verdächtigen Website weiter.
mpiktas

15

Ich habe JMeter benutzt . Neben dem Testen des Webservers können Sie auch Ihr Datenbank-Backend, Ihre Messaging-Dienste und Ihre E-Mail-Server testen.



9

Für die einfache Verwendung biete ich ab (Apache-Benchmark) und Belagerung an. Später wird eine benötigt, da ab kein Cookie unterstützt und endlose Sitzungen von einer dynamischen Site erstellen würde.

beide sind einfach zu starten:

ab -c n -t 30 url

siege -b -c n -t 30s url

Belagerung kann mit mehr URLs laufen.

letzte Belagerungsversion in siegerc ausführlich einschalten, was ärgerlich ist. Sie können es nur deaktivieren, indem Sie diese Datei bearbeiten ( /usr/local/etc/siegerc).


9

Informationen zu einem webbasierten Dienst finden Sie unter loader.io .

Zusammenfassung:

loader.io ist ein kostenloser Lasttestdienst, mit dem Sie Ihre Web-Apps / APIs mit Tausenden von gleichzeitigen Verbindungen einem Stresstest unterziehen können.

Sie haben auch eine API .


2
Dies ist eine gute Alternative zum Testen Ihrer eigenen Maschinen mit Ihren eigenen Maschinen
Nurettin

9

Da diese Frage noch offen ist, könnte ich genauso gut abwägen.

Die gute Nachricht ist, dass die Open Source-Tools in den letzten 5 Jahren wirklich gereift sind und sich im Weltraum durchgesetzt haben. Die schlechte Nachricht ist, dass es so viele davon gibt.

Hier sind meine Gedanken: -

Jmeter gegen Grinder

Jmeter basiert auf einer XML-Stilspezifikation, die über eine GUI erstellt wird.

Grinder verwendet Jython-Skripte in einem Java-Framework mit mehreren Threads, das sich stärker an Programmierern orientiert.

Beide Tools verarbeiten HTTP und HTTPS und verfügen über einen Proxy-Rekorder, um Ihnen den Einstieg zu erleichtern. Beide Tools verwenden das Controller-Modell, um mehrere Testagenten zu steuern, sodass die Skalierbarkeit kein Problem darstellt (bei Zugriff auf die Cloud).

Welches ist besser:-

Ein harter Anruf, da die Lernkurve mit beiden Tools steil ist, wenn Sie sich mit den komplizierteren Skriptanforderungen für das Umschreiben von URLs, die Korrelation, die Bereitstellung eindeutiger Daten pro virtuellem Benutzer und die Simulation von erstmaligen oder wiederkehrenden Benutzern (durch Manipulieren der HTTP-Header) befassen.

Das heißt, ich würde mit Jmeter beginnen, da dieses Tool eine große Fangemeinde hat und es im Web viele Beispiele und Tutorials für die Verwendung dieses Tools gibt. Wenn Sie zu einer Straßensperre kommen, die Sie mit Jmeter nicht so einfach machen können, schauen Sie sich den Grinder an. Die gute Nachricht ist, dass beide Tools die gleichen Java-Anforderungen haben und eine 'Mix and Match'-Lösung nicht ausgeschlossen ist.

Etwas Neues hinzuzufügen - Headless-Browser, auf denen mehrere Instanzen von Selenium WebDriver ausgeführt werden.

Dies ist ein relativ neuer Ansatz, da er auf der Verfügbarkeit von Ressourcen beruht, die jetzt aus der Cloud bereitgestellt werden können. Bei diesem Ansatz wird ein Selenium-Skript (WebDriver) verwendet und in einem Headless-Browser-Treiber (dh WebDriver = New HtmlUnitDriver ()) in mehreren Threads ausgeführt.

Erfahrungsgemäß können rund 25 Instanzen von "Headless Browsern" von der Amazon M1 Small Instance ausgeführt werden.

Dies bedeutet, dass alle Probleme mit der Korrelation und dem Umschreiben von URLs verschwinden, wenn Sie Ihre Funktionstestskripte in Leistungstestskripte umwandeln.

Die Skalierbarkeit wird beeinträchtigt, da im Vergleich zu einem HTTP-Treiber wie Grinder oder Jmeter mehr VMs benötigt werden, um die Last anzutreiben. Wenn Sie jedoch 500 virtuelle Benutzer betreiben möchten, erhalten Sie mit 20 kleinen Amazon-Instanzen (jeweils 6 Cent pro Stunde) zu einem Preis von nur 1,20 US-Dollar pro Stunde eine Last, die der realen Benutzererfahrung sehr nahe kommt.


Grinder kann auch Clojure-Skripte verwenden.
user100464

7

Außerdem gibt es einen wunderbaren Open-Source - pure-Python verteilt und skalierbare Heuschrecke Rahmen dass Anwendungen greenlets . Es ist großartig, eine enorme Anzahl gleichzeitiger Benutzer zu simulieren.


7

Wir haben kürzlich begonnen, Gatling für Lasttests zu verwenden. Ich würde wärmstens empfehlen, dieses Tool für Lasttests auszuprobieren. Wir hatten in der Vergangenheit SOASTA und JMETER verwendet. Unser Hauptgrund, Gatling in Betracht zu ziehen, ist folgender:

  • Rekorder zum Aufzeichnen des Szenarios
  • Verwendung von Akka und Netty, die im Vergleich zum Jmeter Threading-Modell eine bessere Leistung bieten
  • DSL Scala, die im Vergleich zu Jmeter XML sehr wartbar ist
  • Einfach, die Tests zu schreiben, keine Angst, wenn es Scala ist.
  • Berichterstattung

Lassen Sie mich Ihnen ein einfaches Beispiel geben, wie Sie den Code mit Gatling Code schreiben können:

// your code starts here  
val scn = scenario("Scenario")  
     .exec(http("Page")
     .get("http://example.com")) 
// injecting 100 user enter code here's on above scenario.   
setUp(scn.inject(atOnceUsers(100)))       

Sie können es jedoch so kompliziert wie möglich gestalten. Eine der Besonderheiten von Gatling ist die sehr detaillierte Berichterstattung.

Hier einige Links:
Gatling
Gatling Tutorial

Ich habe kürzlich einen Vortrag darüber gehalten. Sie können den Vortrag hier durchgehen:
https://docs.google.com/viewer?url=http%3A%2F%2Ffiles.meetup.com%2F3872152%2FExploring-Load-Testing-with -Gatling.pdf


6

Dies ist eine alte Frage, aber ich denke, neuere Lösungen sind erwähnenswert. Kasse LoadImpact: http://www.loadimpact.com .


Ja. Ich habe mir das gerade angesehen. Ich habe es bei Google gefunden, bevor ich diese Frage / Antwort gefunden habe. Ich denke, eine webbasierte Anwendung ist ein guter Ansatz, aber ich konnte nicht sicher sein, ob sie meinen Server wirklich pusht. Es hat sich aber zweifellos gelohnt, es auszuprobieren. Tbh, ich bin wirklich versucht, mich für einen vollständigen Account anzumelden.
Charlie

4

Ich habe WebLoad ausprobiert, es ist ein ziemlich ordentliches Tool. Es wird mit einer Testskript-IDE geliefert, mit der Sie Benutzeraktionen auf einer Website aufzeichnen können. Außerdem wird ein Diagramm gezeichnet, während ein Stresstest auf Ihrem Webserver durchgeführt wird. Probieren Sie es aus, ich kann es nur empfehlen.


1
Ich empfehle auch WebLoad. Es ist ein großartiges Tool, einfach zu bedienen und die Berichte sind ziemlich hilfreich. Ich gehe davon aus, dass Sie sich auf einer Windows-Plattform befinden. Diese Ergebnisse in Kombination mit perfmon informieren Sie über nahezu alles, was Sie wissen müssen.
Babak Naffas

2
Beachten Sie, dass WebLoad jetzt rein kommerziell ist. Sie verschickten E-Mails mit dem Zitat: -------- -WebLOAD Open Source wurde zum Lebensende (End of Life, EOL) erklärt. - Wenn Sie noch eine Version des Produkts haben, erinnern wir Sie daran, dass im Rahmen der EULA jede Verbreitung von Das Produkt oder die Verwendung zur Wartung Dritter ist strengstens untersagt. ------- Das Verteilen der Open Source-Version ist verboten? Sogar wenn man es so benutzt, wie sie es nicht mögen, ist es verboten? Nicht die Art von Verhalten, mit der ich etwas zu tun haben möchte.
Joshdan

1
Die mit der Domain verknüpfte Domain ist jetzt nur noch Werbung - die ursprüngliche Domain ist abgelaufen.
dodgy_coder

@ Joshdan Deshalb ist GPL wichtig.
Thorbjørn Ravn Andersen

3

Als ich alles hier erwähnte versuchte, fand ich Curl-Loader als das Beste für meine Zwecke. Sehr einfache Benutzeroberfläche, Echtzeitüberwachung, nützliche Statistiken, aus denen ich Leistungsdiagramme erstelle. Alle Funktionen von libcurl sind enthalten.


3

Blaze Meter verfügt über eine Chrome-Erweiterung zum Aufzeichnen und Exportieren von Sitzungen nach JMeter (derzeit ist eine Anmeldung erforderlich). Sie haben auch die Möglichkeit, ihnen Geld zu zahlen, um es auf ihrem Cluster von JMeter-Servern auszuführen (ihre Preise scheinen viel besser zu sein als bei LoadImpact, das ich gerade nicht mehr verwende):

Ich habe keine Verbindung zu ihnen, ich mag nur das Aussehen ihres Dienstes, obwohl ich die kostenpflichtige Version noch nicht verwendet habe.


2

Sie haben diese Frage vor fast einem Jahr gestellt, und ich weiß nicht, ob Sie noch nach einer anderen Möglichkeit suchen, Ihre Website zu bewerten. Da diese Frage jedoch immer noch nicht als gelöst markiert ist, möchte ich den kostenlosen Webservice LoadImpact (übrigens nicht angeschlossen) vorschlagen. Habe gerade diesen Link über Twitter erhalten und möchte diesen Fund teilen. Sie schaffen einen vernünftig guten Überblick und für ein paar Dollar mehr erhalten Sie den "Full Impact Mode". Das klingt wahrscheinlich seltsam, aber viel Glück beim Schieben und Bremsen Ihres Dienstes :)



1

Ich habe openSTA verwendet .

Auf diese Weise kann eine Sitzung mit einer Website aufgezeichnet und dann über eine relativ einfache Skriptsprache wiedergegeben werden.

Sie können Webdienste einfach testen und Ihre eigenen Skripte schreiben.

Sie können Skripte in einem Test beliebig zusammenstellen und die Anzahl der Iterationen, die Anzahl der Benutzer in jeder Iteration, die Hochlaufzeit für die Einführung jedes neuen Benutzers und die Verzögerung zwischen den einzelnen Iterationen konfigurieren. Tests können auch in Zukunft geplant werden.

Es ist Open Source und kostenlos.

Es werden eine Reihe von Berichten erstellt, die in einer Tabelle gespeichert werden können. Wir verwenden dann eine Pivot-Tabelle, um die Ergebnisse einfach zu analysieren und grafisch darzustellen.


1

Wir verwenden das erwähnte Microsoft-Tool - Microsoft Web Application Stress Tool. Es ist das einfachste Werkzeug, das ich je benutzt habe. Es ist in vielerlei Hinsicht eingeschränkt, einschließlich der Möglichkeit, Port 80 nur bei manuell erstellten Tests zu erreichen. Aufgrund seiner Benutzerfreundlichkeit wird es jedoch tatsächlich verwendet.

Wir ergänzen die Last dieses Tools durch andere Tools, einschließlich OpenSTA und Link Check Spider.

JMeter sieht von meiner ersten Bewertung an gut aus. Ich hoffe, dass ich es in unsere kontinuierliche Integration einbeziehen kann. Die Einführung von JMeter ist jedoch komplex und nicht trivial.

Ich würde vorschlagen, eine weitere Frage zur Interpretation der Ergebnisse des MS-Stress-Tools zu stellen.


1

Visual Studio Test Edition 2010 (2008 auch gut). Dies ist ein wirklich einfaches und leistungsstarkes Tool zum Erstellen von Web- / Lasttests.

Der Vorteil dieses Tools bei der Verwendung mit Windows-Servern besteht darin, dass Sie integrierten Zugriff auf alle Perfmon-Server-Statistiken in Ihrem Bericht erhalten. Sehr nützlich.

Der andere Bonus ist, dass Sie mit Visual Studio-Projekt eine "Performance Session" integrieren können, die die Codeausführung Ihrer Website profiliert.

Wenn Sie Webseiten von einem Windows-Server aus bereitstellen, ist dies das beste Tool auf dem Markt.

Es ist jedoch eine separate und teure Lizenz erforderlich, um mehrere Computer zum Testen der Anwendung zu verwenden.


1

Wir haben ein Verfahren entwickelt, bei dem Last- und Leistungsmessungen als erstklassiges Problem behandelt werden. Wie Sie sagen, führt das Verlassen des Projekts bis zum Ende des Projekts zu Enttäuschungen ...

Während der Entwicklung umfassen wir daher sehr einfache Mehrbenutzertests (unter Verwendung von Selen), bei denen nach grundlegenden Verrücktheiten wie fehlerhafter Sitzungsverwaltung, offensichtlichen Parallelitätsproblemen und offensichtlichen Problemen mit Ressourcenkonflikten gesucht wird. Nicht triviale Projekte beziehen dies in den kontinuierlichen Integrationsprozess ein, sodass wir sehr regelmäßig Feedback erhalten.

Für Projekte, die keine extremen Leistungsanforderungen haben, nehmen wir grundlegende Leistungstests in unsere Tests auf. Normalerweise schreiben wir die Tests mit BadBoy aus und importieren sie in JMeter, wobei wir die Anmeldedaten und andere threadspezifische Dinge ersetzen. Wir erhöhen diese dann auf die Ebene, auf der der Server 100 Anforderungen pro Sekunde verarbeitet. Wenn die Reaktionszeit weniger als 1 Sekunde beträgt, ist dies normalerweise ausreichend. Wir starten und fahren mit unserem Leben fort.

Für Projekte mit extremen Leistungsanforderungen verwenden wir weiterhin BadBoy und JMeter, investieren jedoch viel Energie in das Verständnis der Engpässe auf den Servern auf unserem Prüfstand (normalerweise Web- und Datenbankserver). Es gibt ein gutes Tool zum Analysieren von Microsoft-Ereignisprotokollen das dabei sehr hilfreich ist. Wir finden normalerweise unerwartete Engpässe, die wir nach Möglichkeit optimieren. Das gibt uns eine Anwendung, die so schnell wie möglich auf "1 Webserver, 1 Datenbankserver" ist. Wir stellen dann normalerweise in unserer Zielinfrastruktur bereit und verwenden einen der "Jmeter in the Cloud" -Dienste, um die Tests in großem Maßstab erneut auszuführen.

Auch hier helfen PAL-Berichte bei der Analyse der Ereignisse während der Tests. In Produktionsumgebungen treten häufig sehr unterschiedliche Engpässe auf.

Der Schlüssel besteht darin, sicherzustellen, dass Sie nicht nur Ihre Stresstests durchführen, sondern auch die Informationen sammeln, die Sie benötigen, um die Leistung Ihrer Anwendung zu verstehen.


1

Hier werden viele gute Tools erwähnt. Ich frage mich, ob Tools eine Antwort auf die Frage sind: "Wie können Sie eine Webanwendung einem Stresstest unterziehen?" Die Tools bieten keine Methode, um eine Web-App zu belasten. Folgendes weiß ich:

Stresstests zeigen, wie eine Web-App fehlschlägt, während Antworten an eine wachsende Anzahl von Benutzern gesendet werden. Stresstests zeigen, wie die Web-App funktioniert, wenn sie fehlschlägt. Die meisten heutigen Web-Apps - insbesondere die Social / Mobile-Web-Apps - sind Integrationen von Diensten. Als Facebook beispielsweise im Mai 2011 ausfiel, konnte man sich nicht bei der Web-App von Pepsi.com anmelden. Die App ist nicht vollständig ausgefallen, nur ein großer Teil ihrer normalen Funktion steht den Benutzern nicht mehr zur Verfügung.

Leistungstests zeigen, dass eine Web-App die Antwortzeiten unabhängig davon einhalten kann, wie viele Benutzer die App gleichzeitig verwenden. Beispielsweise sollte eine App, die 10 Transaktionen pro Sekunde mit 10 gleichzeitigen Benutzern verarbeitet, 20 Transaktionen pro Sekunde mit 20 Benutzern verarbeiten. Wenn die App weniger als 20 Transaktionen pro Sekunde verarbeitet, werden die Antwortzeiten länger und die App kann keine lineare Skalierbarkeit erreichen.

Im obigen Beispiel sollte die Anzahl der Transaktionen pro Sekunde nur für erfolgreiche Operationen eines Testanwendungsfalls / Workflows gelten. Fehler treten normalerweise in kürzeren Zeiträumen auf und machen die TPS-Messung zu optimistisch. Fehler sind für einen Stress- und Leistungstest wichtig, da sie auch die App belasten.

Ich habe die PushToTest-Methodik im TestMaker-Benutzerhandbuch unter http://www.pushtotest.com/pushtotest-testmaker-6-methodology beschrieben . TestMaker gibt es in zwei Varianten: Open Source (GPL) Community-Version und TestMaker Enterprise (kommerziell mit hervorragender professioneller Unterstützung).

-Frank


1
Dies beantwortet überhaupt nicht die Frage des OP
Corey Goldberg

1

Schauen Sie sich LoadBooster an ( https://www.loadbooster.com ). Es verwendet kopflose skriptfähige Browser PhantomJS / CasperJs, um Websites zu testen. Phantomjs analysiert und rendert jede Seite und führt das clientseitige Skript aus. Der kopflose Browser-Ansatz ist einfacher, Testszenarien zu schreiben, um komplexe AJAX-schwere Web 2.0-Apps zu unterstützen: Browsernavigation, Mausklick und Tastenanschläge in den Browser oder warten, bis ein Element in DOM vorhanden ist. LoadBooster unterstützt auch Selen-HTML-Skripte.

Haftungsausschluss: Ich arbeite für LoadBooster.


1

Probieren Sie ZebraTester aus, der viel einfacher zu bedienen ist als jMeter. Ich habe jMeter schon lange verwendet, aber die gesamte Einrichtungszeit für einen Auslastungstest war immer ein Problem. Obwohl ZebraTester kein Open Source ist, macht die Zeit, die ich in den letzten sechs Monaten gespart habe, das wieder wett. Sie haben auch ein SaaS-Portal, über das Tests mit ihren Lastgeneratoren schnell ausgeführt werden können.


0

Noch eine Anmerkung für unsere Webanwendung: Ich stellte fest, dass wir aufgrund von Konflikten zwischen Threads über Sperren große Leistungsprobleme hatten. Die Moral bestand also darin, das Sperrschema sehr sorgfältig zu überdenken. Wir hatten Worker-Threads, um zu viele Anforderungen mithilfe eines asynchronen http-Handlers zu drosseln, da sonst die Anwendung einfach überfordert wäre und abstürzt und brennt. Es bedeutete, dass sich ein riesiger Rückstand ansammeln konnte, aber zumindest die Site aufbleiben würde.


Dies beantwortet überhaupt nicht die Frage des OP
Corey Goldberg


0

Ich stimme dem Opensta-Vorschlag zu. Ich möchte nur hinzufügen, dass Sie damit den Server, den Sie testen, mithilfe von SMTP überwachen können. Wir verfolgen die Prozessorlast, den verwendeten Speicher, die gesendeten Byes usw. Der einzige Nachteil ist, dass Sie, wenn Sie etwas Boken finden und eine Korrektur vornehmen möchten, auf mehrere Open-Source-Bibliotheken angewiesen sind, die nicht mehr verwaltet werden, sodass eine Kompilierung durchgeführt wird Die Version der Quelle ist schwieriger als bei den meisten OSS.


0

Ich habe mit JMeter gespielt. Ein Gedanke, den es nicht testen konnte, war ASP.NET Webforms. Der Viewstate hat meine Tests gebrochen. Ich bin mir nicht sicher warum, aber es gibt ein paar Tools, die Viewstate nicht richtig handhaben. Mein aktuelles Projekt ist ASP.NET MVC und JMeter funktioniert gut damit.


0

Ich hatte gute Ergebnisse mit FunkLoad :

  • einfach zu skriptierende Benutzerinteraktion
  • Berichte sind klar
  • kann die Serverlast überwachen

0

Auf die Gefahr hin, wegen schamloser Eigenwerbung angeklagt zu werden, möchte ich darauf hinweisen, dass ich bei meiner Suche nach einem kostenlosen Lasttest-Tool zu diesem Artikel gegangen bin: http://www.devcurry.com/2010/07/10-free- tools-to-loadstress-test-your.html

Entweder konnte ich nicht den gewünschten Durchsatz erzielen, oder ich konnte nicht die gewünschte Flexibilität erzielen. UND ich wollte die Ergebnisse mehrerer Hosts zur Erzeugung von Lasttests in der Post-Test-Analyse einfach zusammenfassen.

Ich habe jedes Tool auf der Liste ausprobiert und zu meiner Frustration festgestellt, dass keines von ihnen das tat, was ich wollte. Also habe ich eine gebaut und teile sie.

Hier ist es: http://sourceforge.net/projects/loadmonger

PS: Keine abfälligen Kommentare zu dem Namen von Leuten, die mit urbanem Slang vertraut sind. Ich war es nicht, aber jetzt bin ich etwas weltlicher.


0

Ich stimme auch für jMeter und möchte der @ PeterBernier-Antwort einige Zitate hinzufügen.

Die Hauptfrage, die Lasttests beantworten, ist, wie viele gleichzeitige Benutzer meine Webanwendung unterstützen kann. Um eine korrekte Antwort zu erhalten, sollten Lasttests die tatsächliche Anwendungsnutzung so nah wie möglich darstellen .

Halten Sie oben im Kopf, jMeter viele Bausteine hat Logical Controller , Config - Elemente , Pre - Prozessoren , Hörer , ... , die können Sie dabei helfen.

Mit jMeter können Sie die reale Situation nachahmen, zum Beispiel:

  1. Konfigurieren jMeter als echter Browser wirken , indem sie die Konfiguration ( concurrent resource download, browser cache, http headers, setting request time out, cookie management, https support, encoding,ajax support , ...)
  2. Configure jMeter Benutzeranforderungen zu erzeugen (durch Definition number of users per second, ramp-up time, scheduling, ...)
  3. Konfigurieren Sie viele Clients mit jMeter, um einen verteilten Auslastungstest durchzuführen.
  4. Verarbeiten Sie die Antwort, um festzustellen, ob der Server während des Tests korrekt reagiert. (Zum Beispiel assertAntwort, um einen Text darin zu finden)

Beachten Sie bitte:

Das https://www.blazemeter.com/jmeter enthält sehr gute und praktische Informationen, die Sie bei der Konfiguration Ihrer Testumgebung unterstützen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.