Portfolio |

Videostream-Testing mit JMeter

Warum Lasttests für Streaminganbieter essentiell wichtig für das Nutzererlebnis sind und wie sich diese mit Apache JMeter realisieren lassen, skizziert Lara in ihrem Beitrag.

Unter Streaming versteht man heute die live oder leicht zeitversetzte Ausstrahlung von Audio- (z.B.  Musik, Radio, Podcast) oder Videoinhalten (z.B. Filme, Serien, Videospiele) zwischen Client und Server. Die Inhalte können aufgezeichnet oder live übertragen und von einem Media Player, einem Webbrowser oder einer mit einem Streaming-Dienst verbundenen Software wiedergegeben werden.

Um sicherzustellen, dass Nutzer die Streaming-Medien nahtlos, mit weniger Pufferzeit und in höchster Qualität erhalten, müssen für eine Evaluierung des Nutzungserlebnisses diese Medieninhalte einem Lasttest unterzogen werden. Selbst die kleinste Verzögerung bei den Medien oder Einbußen bei der Qualität kann die Kundenerfahrung beeinträchtigen und den Nutzerstamm einschränken.

Wiedergabe eines Streams

Wenn ein Benutzer die Wiedergabe eines Video- oder Audiostreams von einer Website oder einer Anwendung startet, wird der auf einem Server gespeicherte Inhalt in den Arbeitsspeicher des Computers oder des Wiedergabegeräts übertragen, der die Daten vorübergehend in einem Pufferspeicher ablegt. Diese Daten werden von der Website oder Anwendung gelesen. Das Herunterladen des Inhalts in den Puffer wird während der Wiedergabe fortgesetzt. Die Wiedergabe eines Streams kann progressiv oder kontinuierlich erfolgen.

Die progressive Wiedergabe ist die einfachste und am häufigsten verwendete Methode. Es kann jeweils nur eine Datei abgespielt werden. Es werden mehrere Dateien mit unterschiedlichen Qualitäten zur Verfügung gestellt und der Benutzer kann die Qualität der Übertragung wählen.

Die anspruchsvollere, kontinuierliche Wiedergabe passt sich automatisch an die Internetgeschwindigkeit des Benutzers an. Eine einzelne Datei enthält mehrere Varianten mit unterschiedlichen Qualitäten. Der Benutzer kann dann ohne Eingriff eine Übertragung in optimaler Qualität genießen. Einige der größten Streaminganbieter nutzen diese Art der Wiedergabe.

Videoformate

Bekannte Videoformate sind etwa MP4, AVI, MOV und MPG – es gibt aber noch viele mehr. Der Hintergrund für ein neues Format ist häufig, dass Hersteller eigene Formate durchsetzen wollen, etwa Apple mit Quicktime (MOV) oder Microsoft mit AVI und ASF (bzw. WMV).

FLV / 3GP

Im Internet und auf Smartphones ist dieses Format zuhause. Flash Video (FLV) von Adobe ist vor allem für die Internetnutzung ausgelegt, da es ein komprimiertes Format ist, jedoch leidet oft die Bild- und Tonqualität durch die Komprimierung. Ähnliches gilt für 3GP, das zur Verwendung auf Smartphones und Tablets entwickelt wurde und möglichst wenig Datenvolumen verbrauchen soll. Immer mehr Videoportale steigen allerdings vom älteren Flash Video auf neuere Protokolle um.

HLS

HTTP Live Streaming (HLS) ist eines der am häufigsten verwendeten Protokolle für Video-Streaming. Bei HLS werden Videodateien in kleinere herunterladbare HTTP-Dateien zerlegt und mithilfe des HTTP-Protokolls übertragen. Client-Geräte laden diese HTTP-Dateien und geben sie dann als Video wieder. Die Videoqualität kann abhängig von den Netzwerkbedingungen erhöht oder verringert werden, ohne die Wiedergabe zu unterbrechen. Deshalb kann die Videoqualität mitten in einem Video besser oder schlechter werden, während man es sich ansieht. HLS wurde von Apple für Apple-Produkte entwickelt, inzwischen aber für eine Vielzahl von Geräten verwendet.

MPEG DASH, mpd

Dynamic Adaptive Streaming over HTTP (DASH), auch bekannt als MPEG-DASH, ermöglicht qualitativ hochwertiges Streaming von Medieninhalten über das Internet durch herkömmliche HTTP-Webserver. Die Inhalte werden in eine Folge kleiner http-basierter Datei-Segmente zerlegt. Die Inhalte werden in einer Auswahl verschiedener Bitraten vorgehalten – also inhaltlich übereinstimmende Abschnitte, die mit unterschiedlichen Bitraten kodiert sind. Der Client wählt das Segment mit der höchstmöglichen Bitrate aus, das in der verfügbaren Zeit bis zur Wiedergabe übertragen werden kann, ohne dass die Wiedergabe stockt und erst wieder gepuffert werden muss. Dadurch kann sich ein DASH-Client nahtlos an veränderliche Netzwerkbedingungen anpassen und eine hochwertige, flüssige Wiedergabe gewährleisten.

Wichtige Metriken für Lasttests

Metriken helfen dabei, das Verhalten von Anwendungen unter Last zu überwachen und können zur Verbesserung der Gesamtleistung verwendet werden. Hier eine Auflistung der wichtigsten Metriken, die sich auf die Leistung von Streaming-Medien auswirken:

Abbildung 1: Wichtige Streaming-Lasttestmetriken (Quelle: proficom GmbH)

Bitrate

Eine höhere Bitrate bedeutet, dass der Benutzer in der Lage ist, Inhalte in hoher Auflösung zu konsumieren, sowohl bei Audio als auch bei visuellen Grafiken.

Play Rate

Die Play Rate (Wiedergaberate) wird verwendet, um die Anzahl oder den Prozentsatz der Nutzer zu berechnen, die das Video tatsächlich abgespielt haben. Wenn der Inhalt nicht innerhalb der ersten 30 Sekunden geladen wird, neigen die Nutzer dazu, den Streaming-Dienst zu schließen, was in der Regel zu einem starken Rückgang der Abspielrate führt.

Pufferzeit

Die Pufferzeit ist die Zeit, die benötigt wird, um den Inhalt zu laden. Sie hängt von der Netzwerklatenz und der Downloadgeschwindigkeit der Nutzer ab. Die Berechnung der Pufferzeit gibt Aufschluss über die Zeit, die der Nutzer auf das Laden von Inhalten warten muss. Ein Anstieg der Pufferzeit kann das Gesamterlebnis des Nutzers beeinträchtigen und er könnte sogar aufhören, sich den Inhalt anzusehen, wenn er unter einen bestimmten Schwellenwert fällt.

Verzögerungsrate

Nachdem die Pufferung abgeschlossen ist, werden die Medien normalerweise abgespielt. Die Zeitspanne zwischen dem gepufferten Inhalt und der Medienwiedergabe wird als Verzögerungszeit bezeichnet. Die Verzögerungszeit spielt eine wichtige Rolle, denn wenn die Verzögerungszeit zunimmt, wird die Kontinuität des Streaming insgesamt beeinträchtigt.

Videostream-Testing mit JMeter

Ein geeignetes Tool, um die Metriken von Videostreams zu testen, ist JMeter. Einen Überblick über Performancetests im Allgemeinen und Apache JMeter findet ihr in unserem Beitrag „Getting started with JMeter“.

Um die Funktionalität von JMeter zu erweitern, können Plugins hinzugefügt werden. In diesem Beispiel wird das HLS-Plugin von Blazemeter (https://github.com/Blazemeter/HLSPlugin) hinzugefügt. Mit dieser Erweiterung können die Protokolle HLS und MPEG-DASH getestet werden. Das Plugin kann über den Plugin Manager in JMeter installiert werden und der Streaming-Sampler dann der Thread Group hinzugefügt werden.

Abbildung 2: Das HLS-Plugin wird der Thread Group hinzugefügt

Das Plugin ist einfach aufgebaut. Es gibt nur eine Anfrage an die Master Playlist und der Rest läuft automatisch ähnlich wie bei einem Videoplayer ab. Es ist nicht notwendig, alle Anfragen separat zu stellen oder die Antworten zu analysieren, um zu sehen, welche Anfragen als nächstes gestellt werden sollten.

Abbildung 3: Hier sehr iht die Konfigurationsmöglichkeiten des Streaming Samplers

Der Streaming Sampler kann wie folgt konfiguriert werden:

  • ­­Video: URL zur Master-Wiedergabelistendatei festlegen
  • Protocol: Protokoll angeben, welches getestet werden soll
  • Duration: Wiedergabedauer kann entweder auf das gesamte Video oder auf eine bestimmte Anzahl von Sekunden eingestellt werden
  • Tracks: einealternative Audio- oder Untertitelspur kann entweder über den Sprachcode oder den Namen herunterladen werden
  • Bandwidth: Bandbreitenkriterium, welches für die Auswahl einer bestimmten Variante des Videos verwendet werden sollen
  • Resolution: Auflösungskriterien, die für die Auswahl einer bestimmten Variante des Videos verwendet werden sollen

Wenn ein Test mit diesem Plugin durchgeführt wird, sieht das Ergebnis in JMeter wie folgt aus:

Abbildung 4: Die Ergebnisse eures Streaming-Tests werden in JMeter ausgegeben

Der View Results Tree Listener zeigt die gesendeten Requests des HLS-Sampler an, so dass überprüft werden kann, wie die Anfragen und Antworten funktioniert haben. Jeder Request wird mit dem zugehörigen Typ (zum Beispiel Master-Playlist oder Videosegment) angezeigt, um sie leicht zu identifizieren.

Mein Fazit

Um die Zufriedenheit der User eines Streamingdienstes zu gewährleisten ist es empfehlenswert, die Streaming-Infrastruktur mittels Lasttests zu untersuchen und somit die bestmögliche Performance zu erreichen. Die Art und Weise des Testings sowie eine Auswertung und Einbindung dieser Tests in den DevSecOps-Cycle kann beispielsweise mit JMeter als Lasttest-Tool inklusive HLS Sampler erfolgen.

In kommenden Beiträgen werden wir das Thema vertiefen und für euch weitere Aspekte beleuchten.

Wer sich mit JMeter intensiver beschäftigen möchte, findet in unserem Trainingsangebot die passende Schulung.