Laden von AJAX-Anwendungen

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

Inhaltsübersicht

 


 

Was ist AJAX?

 

Diejenigen von Ihnen, die sich mit Auslastungstests von AJAX-Webanwendungen (Asynchronous JavaScript and XML) auseinandersetzen mussten, haben gelernt, dass dies oft eine schwierige Entwicklungs- und Automatisierungsherausforderung sein kann. Dieser Artikel enthält einige zusätzliche Hintergrundinformationen zur AJAX-Entwicklungstechnik, zu den Vor- und Nachteilen von AJAX sowie zu einem empfohlenen AJAX-Leistungstestansatz.

Vor Jahrzehnten waren Webseiten und Anwendungen langweilig, aber extrem leicht, einfach zu warten, und ihre Testbarkeit war fantastisch im Vergleich zu den web application frameworks, die heute verwendet werden. Benutzer verbrachten oft mehr Zeit damit, vor einem weißen Bildschirm zu warten, als mit diesen frühen Webanwendungen zu interagieren. Aufgrund dieser begrenzten Benutzerfreundlichkeit 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 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 gesamte Seite neu zu laden. Im Laufe der Entwicklung neuer Technologien und Techniken half AJAX, diese Lücke zu schließen und das asynchrone Datenladekonzept einzuführen, das es einem Endbenutzer ermöglichte, mit der Seite zu interagieren, während die Daten im Hintergrund geladen wurden. Heute ist dieses Konzept weit verbreitet, weil es die Implementierung von interaktiven und dynamischen Webanwendungen ermöglicht, was dazu beiträgt, die allgemeine Benutzererfahrung zu verbessern.

 

Eine typische AJAX-Anforderungen besteht aus dem folgenden Prozess:

  1. Der Benutzer klickt durch die Webseite oder Webanwendung.
  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 oder Anwendung zu benachrichtigen, dass die Daten angekommen sind.
  6. Der Handler verarbeitet und zeigt die Daten an.

 


 

Welche Herausforderungen kommen mit AJAX-Anwendungen?

 

Es gibt einige häufige Fallstricke in dynamischen AJAX-basierten Webanwendungen, die bereits in der Entwicklercommunity bekannt sind. Wir werden einige der problematischeren Bereiche von AJAX unten behandeln.

Erstens ist JavaScript, wie oben erläutert, eine der Komponenten, aus denen AJAX besteht. Wenn Sie JavaScript in Ihrem Browser deaktivieren, wird Ihre Anwendung oder Website nutzlos. Vor einigen Jahren war es üblich, dass Organisationen Browser für ihre Mitarbeiter gesperrt und JavaScript aus Sicherheitsgründen deaktiviert haben. Diese Tage sind nun vorbei, aber es ist immer noch gut, dies im Hinterkopf zu behalten, da selbst Solche Veränderungen unbeabsichtigte Folgen haben könnten.

Zweitens, dynamisch geladene und angezeigte Daten sind nicht Teil der Seite, insbesondere für Seiten, die als SPA erstellt werden (Single-Page Application) Wenn eine Suchmaschine Ihre AJAX-basierte Webseite indiziert hat, kann das Ergebnis aus SEO-Sicht unbefriedigend sein, da ein großer Teil des Inhalts für diese Indizierungs-Engines 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 kann die Latenz aufgrund der Callback-basierten Client-Server-Kommunikation im Vergleich zu anderen Technologien, wie z. B. WebSockets, um ein Vielfaches höher sein. Webclients suchen nach Datenaktualisierungen, was auch eine Herausforderung für automatisierte Tests darstellt.

 


 

Auslastungstests AJAX: Benutzersimulationstechniken

 

Lastprüfungsspezialisten und Leistungsingenieure 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 auf Ihrer Seite 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, die wir unten besprechen werden.

Protokollbasierte Simulation von Anforderungen und Antworten

Die meisten Open-Source-Testtools sowie kommerzielle Auslastungstesttools 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, z. B. Sitzungs-IDs oder Testeingabedaten, können die Skripts verwendet werden, um die erforderliche Last auf Ihrem Back-End-System zu simulieren. Beachten Sie, dass die clientseitige Verarbeitung oder Interaktionen nicht Teil der Reaktionszeitmessungen auf Protokollebene sind.

Vollständige browserbasierte Simulation realer Benutzerinteraktionen

Nur einige der umfassenderen Lasttestlösungen auf dem Markt bieten und unterstützen vollständige browserbasierte Auslastungstestsimulationen. Der Grund dafür ist, dass die Anforderungen an die Systemressourcen höher sind und die Implementierung einer zuverlässigen Wiedergabe etwas schwierig sein kann. Wenn es an der Zeit ist, Testskripts für vollständige browserbasierte Benutzersimulationen zu erstellen, ist die Erstellung wie der protokollbasierte Ansatz, jedoch werden dieses Mal alle clientseitigen Interaktionen aufgezeichnet und gespeichert.

Der Tester oder Ingenieur navigiert durch die Webseite oder Webanwendung, 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 wie ein echter Benutzer auf Serverrückrufe. Diese Art von Benutzersimulation ist sehr genau und bietet realistische Front-End-Leistungsmetriken.

Die erste Simulationsmethode, die wir beschrieben haben, ist perfekt für statische Webanwendungen, hat einen geringen Simulationsaufwand auf Ihrer Lasteinspritzmaschine und ist oft einfach zu implementieren. Die spätere Technik bietet genaue End-to-End-Antwortzeiten, aber ihr Overhead auf dem Auslastungstestserver ist viel höher. Wie würden Sie also die beste Benutzersimulationsmethode zum Auslastungstesten von AJAX-basierten Webanwendungen oder -seiten 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.

In diesem Szenario decken wir zwei Auslastungstestimplementierungen für eine AJAX-Beispielanwendung mit ajaxsearchpro.com. Diese Demo-Anwendung ist eine einfache Suchmaschine. Angenommen, ein Benutzer tippt in dieses Beispiel einen Suchbegriff in das Suchfeld, und der entsprechende Inhalt wird angezeigt. Nachdem der Eingabeschlüssel ausgelöst oder auf die Suchtaste geklickt wurde, wird die endgültige Suche ausgeführt, und die entsprechenden Suchergebnisse werden auf dem Bildschirm angezeigt. Unten ist das Wasserfalldiagramm, das mit dem Chrome-Browser DevTools aufgenommen wurde. Die Antwortzeit der Suchanfrage “Auto” betrug 2,2 Sekunden.

 

waterfall chart chrome browser

 

Wir haben die Entwicklertools innerhalb des Chrome-Browsers verwendet, die uns geholfen haben, herauszufinden, dass diese Anforderung ausgeführt wird, wenn die Suchaktion ausgeführt wird: ajaxsearchpro.com/?s=car

Wir haben 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 der 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 der protokollbasierten Skriptausführung
browser based ajax script execution

 

Vergleich beider Simulationsmethoden

 

Aufgrund seiner asynchronen Kommunikationsmuster, AJAXbasierte Anwendungen könnennicht an der Protokollebene. Nur real browerbasierte Simulation liefert genaue Ergebnisse underzeugteine realistische Belastung ihres Back-End-Systems.

Betrachten Sie einen Auslastungstest unserer ajaxsearchpro.com

Demo-Anwendung mit 100 gleichzeitigen Benutzer und 10,000 Suchvorgänge pro Stunde. Wenn Sie sich für die protokollbasierte Simulation entscheiden, Wird 10000 x 31 = 310.000 Anfragen. Offensichtlich würde dies zu völlig ungenauen Auslastungstestergebnissen führen.

 


 

So behebt LoadView-Lösung Auslastungstests mit AJAX

 

LoadView, unsere cloudbasierte Auslastungstestplattform, wurde zum Testen aller modernen Web 2.0-Anwendungen wie AJAX, Flash, Angular, Knockout, HTML5, jQuery und vielen mehr 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.

Wie bereits erwähnt, bieten viele Lasttestlösungen nur einen protokollbasierten Benutzersimulationsansatz, der nicht ausreicht. Sie können Ihr Back-End mit Tests auf Protokollebene belasten, aber ein erheblicher Teil der Client-Server-Anforderungen und der clientseitigen Verarbeitung wird nicht mehr verwendet. Die LoadView-Plattform bietet Ihnen alles, was Sie brauchen, wenn es um genaue Benutzersimulationen geht.

 

Fünf Schritte zum Ausführen Ihrer AJAX-basierten Auslastungstests mit LoadView

 

1. Zeichnen Sie Ihre AJAX-Anwendung auf
Sie können den EveryStep Web Recorder verwenden, um manuell durch Ihre AJAX-basierte Anwendung zu navigieren. EveryStep zeichnet alle Aktionen auf und ermöglicht es Ihnen, Timer- oder Überprüfungsschritte hinzuzufügen. Nachdem Sie durch Ihre Anwendung geklickt und ein Skript erstellt 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 aus und zeigen Sie Ihre Ergebnisse an
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 Bedenksachen erfüllt LoadView alle Anforderungen einer modernen Auslastungstestplattform, die die Herausforderungen der Testautomatisierung vereinfacht und Ihnen hilft, reale Produktionsarten wie Szenarien in Ihren komplexen Geschäftsanwendungen zu simulieren. Weitere Informationen zu LoadView finden Sie auf der LoadView-Website. Ausführlichere technische Informationen und Videos finden Sie in unserer Knowledge Base.

Sie interessieren sich für eine Live-Demo? Planen Sie eine Demo mit einem unserer Performance-Ingenieure. Unsere Performance-Ingenieure führen Sie durch die gesamte LoadView-Lösung, vom Skripten und Konfigurieren eines Auslastungstests bis hin zur Ausführung und Nachtestanalyse. Holen Sie sich alle Ihre Lasttest-Fragen beantwortet!

 


 

Verwendete Werkzeuge

 

LoadView: Cloud-basierte Auslastungstestplattform von Dotcom-Monitor

EveryStep Web Recorder: Web-basiertes Point-and-Click-Skriptwerkzeug.

Chrome Developer Tools: Entwicklertools, die in den Chrome-Browser integriert sind.

Weitere Informationen zur Plattform und den Überwachungslösungen von Dotcom-Monitor finden Sie unter www.dotcom-monitor.com