fbpx

Laden von AJAX-Anwendungen

Erstellen Sie Benutzerszenarien für Ihre AJAX-Anwendungen, um das Benutzerverhalten zu untersuchen,
Probleme zu identifizieren und die Leistung unter Last zu überprüfen.

Inhaltsübersicht

 


 

Was ist AJAX?

 

Diejenigen von Ihnen, die sich mit Lasttests von AJAX-basierten Anwendungen auseinandersetzen mussten, haben gelernt, dass dies oft eine unangenehme Entwicklungs- und Automatisierungsherausforderung ist. Diese Seite bietet einige Hintergrundinformationen zu AJAX, gefolgt von Vor- und Nachteilen und einem empfohlenen AJAX-Leistungstestansatz.

Vor fünfzehn Jahren waren Webseiten langweilig, aber extrem leicht, einfach zu pflegen, und ihre Testbarkeit war fantastisch. Benutzer verbrachten oft mehr Zeit damit, vor einem weißen Bildschirm zu warten, als mit diesen frühen Webanwendungen zu interagieren. Aufgrund dieser begrenzten Usability vermieden es Unternehmen, Geld für neue webbasierte Dienste auszugeben.

Ab 2005 ermöglichte eine neue Technologie namens AJAX Entwicklern, moderne Websites zu erstellen, wodurch die Zeit, die Benutzer vor einem leeren Bildschirm auf das Laden einer Seite warteten, minimiert wurde. AJAX ist eine Abkürzung für Asynchronous JavaScript und XML und es ist mehr als eine Technologie, weil es aus HTML, CSS, JavaScript, XMLHttpRequest und einer serverseitigen Skriptsprache wie PHP besteht.

Zu Beginn des Internetzeitalters war die Popularität von inhaltsreichen und interaktiven Webseiten schlecht, da es keine Möglichkeit gab, eine Webseite zu aktualisieren, ohne die ganze Seite neu zu laden. AJAX schloss diese Lücke und führte das asynchrone Datenladekonzept ein, das es einem Endbenutzer ermöglicht, mit der Seite zu interagieren, während die Daten im Hintergrund geladen werden. Heutzutage ist dieses Konzept weit verbreitet, weil es die Implementierung von interaktiven Webanwendungen ermöglicht.

 

Eine typische AJAX-Anforderungen besteht aus:

  1. Benutzer klickt durch die Webseite
  2. Der Handler dieser Webseite erstellt ein XMLHttpRequest-Objekt
  3. XMLHttpRequest-Objekt fordert ein Dokument vom Server an
  4. Der Server ruft die entsprechenden Daten ab und sendet sie zurück.
  5. XMLHttpRequest löst ein Ereignis aus, um die Webseite zu benachrichtigen, auf der die Daten angekommen sind
  6. Der Handler verarbeitet die Daten und zeigt sie an

 


 

Welche Herausforderungen stellen sich bei AJAX-Anwendungen?

 

Offensichtlich gibt es Fallstricke in dynamischen AJAX-basierten Webseiten, die bereits in der Entwickler-Community bekannt sind. Lassen Sie uns die Problemstellen in diesem AJAX-Bereich unten zusammenfassen.

Zuallererst, AJAX-Gründe auf JavaScript und wenn Sie Java auf Ihrem Browser deaktivieren, wird es überhaupt nicht funktionieren. Vor einigen Jahren war es üblich, dass Organisationen ihren Browser gesperrt und JavaScript aus Sicherheitsgründen deaktiviert haben. Diese Tage sind nun vorbei, aber es ist immer noch gut, dies im Hinterkopf zu behalten.

Zweitens sind dynamisch geladene und angezeigte Daten nicht Teil der Seite. Wenn eine Suchmaschine Ihre AJAX-basierte Webanwendung indiziert hat, kann das Ergebnis unbefriedigend sein, da ein großer Teil des Inhalts für diese Indizierungsmodule nicht sichtbar ist.

Drittens können die laufenden dynamischen Seitenaktualisierungen Benutzer mit einer geringen Aufmerksamkeitsspanne stören. Je dynamischer Elemente auf diesen Seiten auftauchen, desto höher ist die Wahrscheinlichkeit, dass der Benutzer unterbrochen wird und seine Arbeit nicht innerhalb einer akzeptablen Zeit abschließen kann.

Schließlich ist die Kommunikationlatenz auf Rückrufbasis im Vergleich zu Websockets um ein Vielfaches höher. Webclients suchen nach Datenaktualisierungen, was auch eine Herausforderung für automatisierte Tests darstellt.

 


 

Benutzersimulationstechniken

 

Die Spezialisten für Lasttests sind dafür verantwortlich, einen geeigneten Benutzersimulationsansatz zu wählen, der sowohl für Ihre getestete Anwendung geeignet ist als auch nicht zu viel Aufwand erzeugt. Wenn Sie die falsche Simulationsmethode wählen, ist die Wahrscheinlichkeit sehr hoch, dass Sie Leistungs-Hotspots in Ihrer Anwendung nicht bewältigen können.

Es gibt zwei Benutzersimulationsmethoden.

1. Protokollbasierte Simulation von Anfragen und Antworten
Die meisten Open-Source-Testtools und auch alle kommerziellen Lasttest-Tools unterstützen dieses Verfahren. Sie zeichnen Client-Server-Interaktionen auf, und das Testtool erfasst alle Anforderungen und Antworten in einem Testskript. Nach der Parametrierung dynamischer Daten wie Sitzungs-IDs oder Testeingabedaten können die Skripts verwendet werden, um die erforderliche Auslastung Ihres Backend-Systems zu simulieren. Beachten Sie, dass die Verarbeitung auf der Clientseite oder Interaktionen nicht Teil der Reaktionszeitmessungen auf Protokollebene sind.

2. Vollständige browserbasierte Simulation realer Benutzerinteraktionen
Nur die herausragenden Akteure im Load Testing-Geschäft unterstützen diesen Simulationsansatz. Der Grund dafür ist, dass die Anforderungen an die Systemressourcen höher sind und eine zuverlässige Wiedergabe schwierig zu implementieren ist. Wenn es um die Erstellung von Testskripten geht, ähnelt er dem protokollbasierten Ansatz. Der Tester navigiert durch die Webseite, während ein Skriptrecorder alle Interaktionen im Webbrowser erfasst. Während der Testausführung führt ein kopfloser Webbrowser die aufgezeichneten Interaktionen aus und reagiert auf Serverrückrufe, die einem echten Benutzer ähneln. Diese Art von Benutzersimulation ist sehr genau und bietet realistische Front-End-Leistungsmetriken.

 

Die bisherige Simulationsmethode eignet sich perfekt für statische Bahnanwendungen, hat einen geringen Simulationsaufwand auf Ihrer Lastspritzmaschine und ist oft einfach zu implementieren. Die spätere Technik bietet genaue End-to-End-Antwortzeiten, aber ihr Overhead auf dem Lasttestserver ist viel höher. Wie würden Sie also die beste Benutzersimulationsmethode für Ihren nächsten AJAX-basierten Auslastungstest auswählen?

 


 

AJAX-Lasttests in Aktion

 

Was ist der beste AJAX-Lasttestansatz und wie können Sie Ihre Entscheidung validieren? Offensichtlich ist es eine gute Idee, ein kleines Experiment zu starten, wenn Sie nicht sicher sind, welcher Ansatz genaue Ergebnisse liefern würde.

Ich gebe Ihnen jetzt zwei Beispielauslastungstestimplementierungen für eine AJAX-Beispielanwendung https://ajaxsearchpro.com. Diese Demo-Anwendung ist eine einfache Suchmaschine. Während eines Benutzertyps werden übereinstimmende Begriffe angezeigt. Nachdem der Eingabeschlüssel ausgelöst wurde oder auf die Suchtaste geklickt wurde, wird die endgültige Suche ausgeführt und die entsprechenden Suchergebnisse werden Schritt für Schritt auf dem Bildschirm angezeigt.

Dies ist das Wasserfalldiagramm, das mit meinem Chrome-Browser erfasst wurde. Die Antwortzeit meiner „Auto“-Suchanfrage betrug 2,2 Sekunden.

 

waterfall chart chrome browser

 

Ich habe die Entwicklertools meines Browsers verwendet, die mir geholfen haben, herauszufinden, dass diese Anforderung beim Ausführen der Suchaktion ausgeführt wird: https://ajaxsearchpro.com/?s=car

 

Ich habe ein protokollbasiertes und ein browserbasiertes Auslastungstestskript erstellt, beide ausgeführt und die resultierenden Leistungsmetriken verglichen. Was denkst du? Welche Benutzersimulation ist die beste für eine AJAX-basierte Anwendung?

 

Protokollbasiertes AJAX-Auslastungstestskript

 

Skriptschritte: https://ajaxsearchpro.com/?s=car Reaktionszeit: 594 ms
Simulationsansatz: Protokollebene, Chrome Anzahl der Anfragen: 1

 

Waterfall Chart
protocol based ajax waterfall chart

 

Zusammenfassung dieser protokollbasierten Skriptausführung
protocol based ajax script execution

 

Browserbasiertes AJAX-Auslastungstestskript

 

Skriptschritte: https://ajaxsearchpro.com/?s=car Reaktionszeit: 2,18 Sek.
Simulationsansatz: Protokollebene, Chrome Anzahl der Anfragen: 32

 

Waterfall Chart
browser based ajax waterfall chart

 

Zusammenfassung dieser protokollbasierten Skriptausführung
browser based ajax script execution

 

Vergleich beider Simulationsmethoden

 

Aufgrund des asynchronen Kommunikationsmusters können AJAX-basierte Anwendungen auf Protokollebene nicht automatisiert werden. Nur echte Browser-basierte Simulation liefert genaue Ergebnisse und generiert eine realistische Last auf Ihrem Backend-System.

Betrachten Sie einen Auslastungstest unserer AjaxSearchPro Demo-Anwendung mit 100 gleichzeitigen Benutzern und 10000 Suchanfragen pro Stunde. Wenn Sie sich für die protokollbasierte Simulation entscheiden, würden Sie 10000 x 31 = 310.000 Anforderungen verpassen. Offensichtlich würde dies zu völlig ungenauen Auslastungstestergebnissen führen.

 


 

So behebt die LoadView-Lösung von Dotcom-Monitor Lasttests mit AJAX

 

Unsere cloudbasierte Load-Testing-Plattform LoadView wurde zum Testen aller modernen Web 2.0-Anwendungen wie AJAX, Flash, HTML5 oder jQuery entwickelt. Seine Benutzerfreundlichkeit ist hervorragend. Sie können vollständige browserbasierte Szenarien aufzeichnen und mehr als 40 mobile oder browserbasierte Geräte wie Internet Explorer, Chrome, iPhone, Samsung, Blackberry und viele mehr simulieren.

Viele Load-Testing-Lösungen bieten nur einen protokollbasierten Benutzersimulationsansatz, der nicht ausreicht. Sie können Ihr Backend mit Tests auf Protokollebene belasten, aber ein erheblicher Teil der Client-Server-Anforderungen und der clientseitigen Verarbeitung wird nicht mehr verwendet. Unsere LoadView-Plattform bietet Ihnen alles, was Sie brauchen, wenn es um genaue Benutzersimulationen geht.

 

5 Schritte zum Ausführen des AJAX-basierten Auslastungstests mit LoadView

 

1. Zeichnen Sie Ihre AJAX-Anwendung auf
Sie können unseren EveryStep Web Recorder verwenden, um manuell durch Ihre AJAX-basierte Anwendung zu navigieren. Jeder Schritt zeichnet alle Aktionen auf und ermöglicht es Ihnen, Timer- oder Überprüfungsschritte hinzuzufügen. Sobald Sie durch Ihr zu testendes System geklickt haben, können Sie einen einzelnen Benutzertestlauf durchführen oder die aufgezeichneten Aktionen auf unsere Plattform hochladen und Ihr Auslastungstestgerät erstellen.

2. Kalibrieren
Die Zuordnung von Lastspritzmaschinen ist oft Rätselraten. Fehlerhafte Lasterzeugungsmaschinen fälschen Ihre Testergebnisse. LoadView führt einen einzelnen Benutzertestlauf Ihres Geräts aus und berechnet die maximale Anzahl von Benutzern pro Lastinjektionsmaschine. In diesem Schritt wird vermieden, dass sich ein überlasteter Computer negativ auf die Reaktionszeiten Ihrer Anwendung auswirkt.

3. Ausführungsplan
Das Benutzervolumen variiert oft entlang eines typischen Werktages. Wir haben dieses Bedürfnis mit unserer Ausführungsplanfunktion angegangen. Es gibt Ihnen volle Flexibilität, um realistische Auslastungstestszenarien zu modellieren.

4. Virtuelle Benutzerverteilung
Mit LoadView können Sie zwischen einer breiten Palette von Lastspritzmaschinen auf der ganzen Welt wählen. Wählen Sie diese aus, die den üblichen Standort Ihrer Kunden darstellen.

5. Führen Sie den Test durch und erhalten Sie Ihre Ergebnisse
In diesem letzten Schritt können Sie die Ausführung des Auslastungstests starten. Eine Online-Ansicht gibt Ihnen Echtzeit-Einblicke darüber, wie Ihre AJAX-Anwendung unter Last abschneidet. Sobald Ihre Testausführung abgeschlossen ist, erhalten Sie einen detaillierten Bericht mit den wichtigsten Leistungsindikatoren.

 

Unter alle Bedenklichkeiten erfüllt LoadView alle Anforderungen einer modernen Auslastungstestplattform, vereinfacht die Herausforderungen der Testautomatisierung und hilft Ihnen, reale Produktionen wie Szenarien in Ihren komplexen Geschäftsanwendungen zu simulieren.

 


 

Verwendete Werkzeuge

 

LoadView: Cloud-basierte Load-Testing-Plattform von Dotcom-Monitor

EveryStep Web Recorder: Scripting Tool von Dotcom-Monitor

Chrome Developer Tools: Analyse des Kommunikationsmusters

Weitere Informationen zur Dotcom-Monitor-Plattform finden Sie unter www.dotcom-monitor.com