Wie kann man "End-Client" -Performance-Tests bei einseitigen (Web-) Anwendungen durchführen?

8

Wir prüfen, wie die Leistung auf einer Einzelseitenanwendung ( SPA ) getestet werden kann , die stark auf JavaScript und dynamischen Inhalten basiert (aktualisiert über Ajax).

Beliebte Tools zum Testen von Lasten wie Apache JMeter oder Gatling können große Lasten mit wenig Hardware generieren, indem sie HTTP-Anfragen senden. Aber sie verarbeiten keinen Javascript-Code.

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

Wir haben folgende Alternativen im Hinterkopf:

  1. Verwenden Sie Selenium Grid, um ein Testskript gleichzeitig auf mehreren Computern auszuführen. Jede Instanz übermittelt Latenzdaten, die zur Laufzeit an ein zentrales Repository gesendet werden.

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

  3. Verwenden Sie Selen überhaupt nicht. Testen Sie beim Ausführen eines Auslastungstests mit JMeter / Gatling das Verhalten der Seite manuell mithilfe von Tools wie Firebug, YSlow usw.

Jeder Ansatz hat seine Stärken und Schwächen. Auf (1) kann ich die "realistischste" Ladung erstellen, aber sie skaliert nicht, (2) skaliert durch JMeter / Gatling, aber ich muss Stellen Sie sicher, dass die von ihnen erzeugte Last nicht zu sehr von der tatsächlichen Anwendung abweicht, und (3) ist am einfachsten einzurichten, aber es ist offensichtlich zeitaufwendig, da es nicht automatisiert ist.

Bisher konnte ich zu diesem Thema kein Tool, keinen Rahmen oder sogar nur eine Reihe von Richtlinien finden, daher würde ich gerne von Experten hier bei SO wissen: welche Art von Ansatz verwenden Sie für diese Art von Test?

Dieser Eintrag im Selenium Grid FAQ stellt fest, dass "das Durchführen von Performance- / Lasttests mit einem echten Browser eine ziemlich schlechte Idee ist, da es schwierig / teuer ist, die Last zu skalieren und die tatsächliche Last sehr inkonsistent ist ...". Ich kann nur denken, dass sie sich auf " Backend-Leistung / Lasttests " beziehen. Wenn ich an der Leistung der Endbenutzer interessiert bin, was ist die Alternative?

    
E.Z. 14.02.2014, 13:12
quelle

1 Antwort

6

Sehen Sie sich JMeter WebDriver Ссылка an. 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 Driver Sampler automatisiert die Ausführung und Sammlung von Performance-Metriken im Browser (clientseitig). Ein großer Teil von   Performance-Tests, bis zu diesem Zeitpunkt, war auf der Server-Seite von   Dinge. Mit dem Fortschritt der Technologie, HTML5, JS und CSS   Verbesserungen, mehr und mehr Logik und Verhalten wurden gedrückt   an den Client. Dies trägt zur insgesamt wahrgenommenen Leistung bei   website / webapp, aber diese Metrik ist in JMeter nicht verfügbar. Dinge   Zu dieser Zeit kann Folgendes hinzugefügt werden:

     

Clientseitige Javascript-Ausführung - z. AJAX, JS Vorlagen CSS   verwandelt - z. 3D Matrix Transformationen, Animationen 3rd Party Plugins -   z.B. Facebook wie, Doppelklick-Anzeigen, Website-Analysen, usw. All diese   Dinge addieren sich zur Gesamtdauer des Browsers und zu diesem Projekt   zielt darauf ab, die Zeit zu messen, die benötigt wird, um das Rendering zu vollenden   Inhalt.

    
digidigo 18.10.2014, 23:27
quelle