8

Wir prüfen, wie die Leistung auf einer single-page application (SPA) getestet werden kann, die stark auf JavaScript und dynamischen Inhalten (aktualisiert über Ajax) basiert.Wie kann man "End-Client" -Performance-Tests bei einseitigen (Web-) Anwendungen durchführen?

Beliebte Lasttest-Tools wie Apache JMeter oder Gatling sind in der Lage, große Lasten mit wenig Hardware zu generieren, indem HTTP-Anfragen gesendet werden. Sie verarbeiten jedoch keinen JavaScript-Code.

Wir möchten die vom Kunden wahrgenommene Leistung messen, dh wie sie vom Endbenutzer vor einem Browser wahrgenommen wird (mit all dem Rendering und JavaScript Overhead).

Wir haben folgende Alternativen in den Sinn:

  1. Verwendung Selenium Grid ein Testskript gleichzeitig auf mehreren Rechnern zu laufen. Jede Instanz übermittelt Latenzdaten, die zur Laufzeit an ein zentrales Repository gesendet werden.

  2. Ähnlich wie oben, nur dass nur eine Selenium-Skriptinstanz gestartet wird. Wir würden dann JMeter/Gatling die schwere Last im Hintergrund erzeugen.

  3. Verwenden Sie kein Selen. Während ein Belastungstest läuft mit JMeter/Gatling, überprüfen manuell das Verhalten der Seite durch die Verwendung von Tools wie Firebug, YSlow usw.

Jeder Ansatz seine Stärken und Nachteile. Auf (1) Ich bin in der Lage, die "realistischste" Last zu erstellen, aber es skaliert nicht, (2) skaliert durch JMeter/Gatling, aber ich muss sicherstellen, dass die Last, die sie erstellen, auch nicht abweichen viel von der tatsächlichen Anwendung und (3) ist die einfachste Einrichtung, aber es ist offensichtlich zeitaufwendig, da es nicht automatisiert ist.

Bis jetzt konnte ich kein Tool, Framework oder auch nur eine Reihe von Richtlinien zu diesem Thema finden, daher würde ich gerne von Experten hier bei SO wissen: Welche Art von Ansatz verwenden Sie für diese Art von Test?

This entry on the Selenium Grid FAQ besagt, dass * "Durchführung von Leistung/Belastungstests mit echten Browser ist eine ziemlich schlechte Idee, wie es schwierig/teuer ist, die Last zu skalieren und die tatsächliche Belastung ist sehr inkonsistent ...". Ich kann nur denken, dass sie beziehen sich auf "Backend-Leistung/Belastungstest". Wenn ich an der Leistung der Endbenutzer interessiert bin, was ist die Alternative?

+0

Nun, was Sie Informationen erhalten Sie durch das Testen Ihres SPA. Ich denke nicht, dass es irgendwelche wertvollen Informationen haben wird; Die Leistung hängt hauptsächlich von der Ausführung von JavaScript ab. So wird es auf jeder Maschine anders sein. Sie können auf Ihrem testen, aber das gibt Ihnen keinen Einblick, wie es auf Ihren Client-Computern funktioniert. Sie testen jedoch immer noch die Leistung Ihrer Apis, da sie die Geschwindigkeit der gesamten Anwendung teilweise beeinflussen. – ppoliani

+0

Ich verstehe Ihren Standpunkt, aber ich stimme nicht zu. Ich kann sehr schnelle APIs haben, aber die Anwendung wird immer noch langsam sein, wenn der JavaScript-Code schlecht geschrieben ist. –

+0

Ich habe nicht gesagt, dass die Gesamtleistung davon abhängt, wie schnell Sie APIs sind; Was Ihre JavaScript-Leistung betrifft, können Sie sie in Ihrem Browser testen und nach Engpässen suchen. Sie können nach häufigen Problemen wie Speicherlecks, langsamen Methoden, Repaints/Reflows usw. suchen. Ich denke, dass die Lösung dieser Probleme ausreicht, um davon auszugehen, dass Ihre App auf den Computern Ihrer Kunden ziemlich schnell läuft. – ppoliani

Antwort

6

Auschecken JMeter WebDriver http://jmeter-plugins.org/wiki/WebDriverTutorial/. Sie können eine Parallele zu Ihrem Auslastungstest definieren, um die vom Client wahrgenommene Leistung zu messen, während der Server belastet ist.

Von ihrer Website:

Web-Treiber Sampler automatisiert die Ausführung und die Sammlung von Performance-Metriken auf dem Browser (Client-Seite). Ein großer Teil von Leistungstests, bis zu diesem Zeitpunkt wurde auf der Serverseite von Dinge. Mit dem Fortschritt der Technologie, HTML5, JS und CSS Verbesserungen, mehr und mehr Logik und Verhalten wurden auf den Client gedrückt. Dies trägt zur insgesamt wahrgenommenen Leistung von website/webapp bei, aber diese Metrik ist in JMeter nicht verfügbar.Dinge , die zur Gesamtlaufzeit des Browsers hinzufügen, können sein:

Clientseitige Javascript-Ausführung - z. AJAX, JS Vorlagen CSS transformiert - zB. 3D Matrix Transformationen, Animationen 3rd Party Plugins - zB. Facebook-ähnliche, Doppelklick-Anzeigen, Website-Analysen, etc. Alle diese Dinge zur Gesamtlaufzeit des Browsers hinzufügen, und dieses Projekt zielt darauf ab, die Zeit zu messen, die es dauert, um den gesamten Inhalt Inhalt zu vervollständigen.

Verwandte Themen