Simulierte Netzwerktests

23. Jun. 2022

Das 4G Dilemma - Netzwerktest für eine noch bessere Softwarequalität?

Mobiles Internet für alle – vor 20 Jahren noch eine weit entfernte Vision, heute bereits Realität. 86% der Deutschen besitzen laut einer aktuellen Statistik heutzutage bereits ein internetfähiges Smartphone, Tendenz steigend. Gleichzeitig bildet Deutschland jedoch das Schlusslicht Europas wenn es um das Thema Netzausbau geht – nur 65% des Landes wird mit einem 4G Netz abgedeckt, 2% weniger als in Albanien und 24% hinter den Niederlanden, siehe aktuelle Analysen.

Diese Diskrepanz führt zu einem beinnahe alltäglichen Problem in der mobilen Anwendungsentwicklung. Nahezu jede Anwendung besitzt heutzutage Funktionalitäten, die eine Internetverbindung benötigen. Dabei gehört es grundsätzlich zu den Anforderungen an ein Softwaresystem, dass dieses unter allen sich ihm bietenden Netzwerkbedingungen stabil, oder zumindest vorhersagbar agiert.

Eine Netzwerkumgebung, die zur Entwicklung von Anwendungen geeignet ist, ist dabei glücklicherweise meistens zu stabil, um die im mobilen Netz auftretenden Schwankungen von Geschwindigkeit und Paketverlust zu simulieren – ganz zum Nachteil der Qualitätssicherung.

Wenn die Funktionalität einer Anwendung nur im klinisch stabilen Business Netz getestet wird, fallen eventuelle Fehler bei sich ändernden Netzwerkbedingungen oftmals nicht direkt auf – bis zum ersten Nutzer-Feedback. Werden hierbei beispielsweise große Daten, wie Fotos oder Videos, an einen Server übermittelt, während kurzzeitig die Verbindung abbricht, hängt das darauffolgende Verhalten der Anwendung von der Implementierung einer Reaktion auf diese Unterbrechung ab. Deshalb ist es wichtig die eventuellen Zustände des mobilen Netzes zu kennen und die Anwendung unter möglichst vielen von diesen entsprechend zu testen.

Sie fragen sich, welche Netzwerkfehler es überhaupt gibt und wie diese digital simuliert sowie identifiziert werden können?

Die gängigsten Netzwerkfehler und ihre Folgen

Geschwindigkeit

Einer der wichtigsten Faktoren für das Testen des Verhaltens einer Anwendung ist die Netzwerkgeschwindigkeit.

Was geschieht beispielsweise, wenn ein Datastream eine Bandbreite von mindestens 1MBit/s benötigt, jedoch nur ein 3G Netz mit maximal 384KBit/s zur Verfügung steht?

Hierbei ist es wichtig, entweder die benötigte Bandbreite zu reduzieren oder aber die Daten vorab zu laden, um dem Nutzer so ein bestmögliches Erlebnis zu liefern.

Paketbeschädigungen

Jede Kommunikation mit anderen Geräten im Internet erfolgt über sogenannte “Pakete”. Dies bedeutet, dass jede Nachricht in gleichgroße Elemente und somit Pakete, zerlegt und anschließend versendet wird. Pakete, die über das Internet versendet werden, können jedoch, so wie alle von Computern verarbeiteten Daten, an jedem Punkt der Übertragung beschädigt werden – egal ob durch ein falsch übertragenes Bit, Interferenzen im Kabel oder kosmische Strahlung.

Die Ursachen für Übertragungsfehler sind dabei vielseitig. Die meisten dieser Beschädigungen werden bereits in den unteren Schichten des OSI-Modells bearbeitet. Das OSI – Open Systems Interconnection Model – beschreibt die Schichtenarchitektur von Netzwerkprotokollen und damit die Kommunikation zwischen Geräten im gleichen Netzwerk sowie zwischen den einzelnen Schichten eines Gerätes. Fehlerhafte Pakete können so auf unterschiedlichen Wegen zu einem ungewollten Verhalten in der Anwendung führen.

Paketverlust

Pakete können jedoch nicht nur beschädigt werden, sondern auch vollständig verloren gehen. Dies kann durch zu lange oder beschädigte Leitungen sowie Interferenzen auftreten.

Auch dieser Fehler soll in der Netzwerkschicht behandelt werden – bestenfalls indem das fehlende Paket erneut angefordert und an der richtigen Stelle in den Kommunikationsstrom eingesetzt wird.

Reihenfolge & Verzögerung

Die Übertragung von Paketen von einem Gerät zu einem anderen geschieht prinzipiell sequentiell, wobei für jedes Paket die derzeit kürzeste Route zum Zielgerät bestimmt wird.

Da sich die kürzeste Route jedoch dynamisch verändern kann, auch innerhalb der Zeit, die benötigt wird, um alle Pakete zu senden, ist es möglich, dass die Pakete nicht in der erwarteten Reihenfolge beim Client ankommen.

Nidhogg - Beschützer von Yggdrasil und Anwendungen

Um der Herausforderung von zu spät entdeckten Netzwerkfehlern in der Entwicklung von mobilen Anwendungen entgegenzuwirken, haben wir die Software “Nidhogg” entwickelt, um Netzwerksituationen zu simulieren. Mit diesem digitalen Tool können mobile Anwendungen unter den verschiedensten Bedingungen getestet werden.

Nidhogg ist ein leichtgewichtiger Webserver auf Flask-Basis mit einem passenden Vue-Frontend, deployed auf einem Raspberry Pi. Dabei dient der WLAN-Port des Pi als privater Access Point. Testgeräte können sich so per WLAN mit dem Netzwerk verbinden. Der Zugang zum Frontend kann dabei über jedes Gerät erfolgen, das sich im gleichen Netz wie der Raspberry Pi befindet. Über das Fontend kann zudem der Zustand des Netzwerkes modifiziert werden. Das System ist dabei als Plug and Play konzipiert, der Raspberry Pi kann über ein Ethernet Kabel mit einem Netzwerk verbunden werden, startet anschließend automatisiert den lokalen Server und spannt sein WLAN-Netz auf.

Nidhogg hat hierbei zwei Hauptfunktionalitäten:

  • Die manuelle Manipulation des Netzwerkes
  • Das automatisierte sequenzielle Annehmen von verschiedenen Netzwerkzuständen

Vielfältige Einstellungsmöglichkeiten durch Profile und Slider

Mithilfe unterschiedlicher Slider lassen sich im Frontend verschiedene Netzwerkparameter einstellen. Die Änderung der Parameter wird an den Webserver gesendet und auf die Netzwerkeinstellungen übertragen.

Hierbei simuliert der Server anschließend die entsprechenden Eigenschaften, sodass auf mit dem Netzwerk verbundenen Geräten das Verhalten von Anwendungen unter eben diesen Bedingungen getestet werden kann. Für eine wiederkehrende Nutzung können die Einstellungen als Profil abgespeichert und zu einem späteren Zeitpunkt mit nur einem Klick verwendet werden.

Eigene Sequenzen und Scripts

Häufig sind jedoch nicht statische Netzeigenschaften die Ursache von Problemen in Anwendungen, sondern die Veränderung des Netzwerkes während einer bestimmten Aktion. Um dies ebenfalls simulieren zu können, wurde ein Drag-and-drop Script-Editor implementiert. Mit dessen Hilfe können die drei Eigenschaften “Schlafen” (halte die aktuelle Konfiguration für x Sekunden), “WiFi aus” (Abschalten für x Sekunden) sowie “Paketverlust” (Anteil y in Prozent für x Sekunden) in beliebiger Sequenz miteinander kombiniert werden. Auch die Scripts können für eine erneute Wiederverwendung gespeichert werden.

Stabile Apps und Automatisierung durch Pipelines

Die umfangreichen Möglichkeiten der Simulation verschiedener Netzwerkzustände durch Nidhogg werden bereits in verschiedenen Projekten zur Qualitätssicherung eingesetzt.

So werden mit unserem digitalen Tool beispielsweise eigene mobile Apps, wie die Spiele-App “Morty” oder auch die mobilen Anwendungen unseres Partners CEWE allumfänglich geprüft. Dadurch können mögliche fehlerhafte Reaktionen und auftretende Fehler bereits in der Testphase erkannt sowie behoben werden. Auch die sogenannten Edge Cases, also Fälle, die bei Normalverwendung nur selten auftreten, allerdings großen Einfluss auf die Korrektheit einer Anwendung haben können, können so bereits innerhalb der Entwicklungentdeckt und angepasst werden.

Und was ist mit automatisierten Netzwerktests durch standardisierte Pipelines?

Dank des Aufbaus des Servers als REST-API können die Netzwerktests in Kombination mit einer CI/CD Pipeline vollständig automatisiert werden. Eine entsprechende Pipeline hierfür, reduziert auf die betreffenden Elemente von Nidhogg, könnte wie folgt aussehen:

  • Eine Funktionalität einer Anwendung wurde modifiziert, die vom Server angeforderte Datenmenge beim Launch erhöht sich
  • Die veränderte Code Base wird auf ein simuliertes Testgerät gespielt
  • Das Gerät wird mit dem lokalen Netz von Nidhogg verbunden
  • Vorhandene Systemtests werden abgespielt
  • Währenddessen werden über Anfragen an die API mittels JSON die Netzwerkbedingungen verändert, sodass die Funktionen in unterschiedlichen Umgebungen getestet werden

REST - Representational State Transfer

Paradigma der Architektur von Webservices. Wichtig für die Automatisierung ist die Repräsentation zur Veränderung von Ressourcen, hier als JSON.

CI/CD - Continuous Integration and Delivery

Automatisierung von Deployment-Prozessen, wie dem Testen und Kompilieren der Software.

Unser Nidhogg-Experte

ist für Sie da!

Haben Sie Fragen?

Weitere Blogartikel

01. Mai. 2022

Benutzerdokumentation automatisiert generieren

Blog

Die agile Softwareentwicklung hat sich in den letzten Jahren zu einem wichtigen Ansatz der technischen Umsetzbarkeit entfaltet. Neben den Vorteilen, wie z. B. Flexibilität, Fehlererkennung und erhöhte Performanz durch eine stetige Kommunikation, bringt eine agile Softwareentwicklung jedoch auch Einschränkungen mit sich. So wird die Dokumentation - zu welcher auch die Benutzerdokumentation zählt - eher relativiert betrachtet und zugunsten der engen Zusammenarbeit zwischen Entwickler:innen, Tester:innen, Kund:innen und Nutzer:innen auf ein Minimum beschränkt. Bedingt durch Covid-19 musste der persönliche Kontakt mit Kunden, welcher in einer agilen Entwicklungsumgebung einen hohen Stellenwert besitzt, auf ein Minimum reduziert werden. Dabei gewann Software allgemein in den letzten Jahren immer mehr an Komplexität, welches auch eine zunehmende Rolle in der Organisation von Informationen innerhalb der Benutzerdokumentation zur Folge hat. mehr

28. Apr. 2022

Empathy Maps als UX-Tool

Headerbild Empathy Maps
Blog

In Entwicklungs-, Design- oder Marketing-Teams bestehen oftmals unterschiedliche Vorstellungen von Zielgruppen, bzw. dem Endnutzer einer Applikation. Dies kann dann problematisch werden, wenn bspw. neue Features geplant oder versucht wird, den Endnutzer in Texten sowie Bildern direkt anzusprechen. Vor allem aber führt dies oftmals zu langwierigen Prozessen sowie Entscheidungen über die Nutzer und deren Bedürfnisse. Um dieser Herausforderung entgegenzuwirken, lassen sich unterschiedliche Ansätze sowie Methoden nutzen. Eine besonders effiziente und in der Umsetzung einfache Methode ist die „Empathy Map“. Empathy Maps sind ein agiles Tool im Bereich des User Experience Designs, das dabei hilft, die Nutzer sowie deren Bedürfnisse besser zu verstehen und ein einheitliches Mindset im Projekt-Team zu etablieren. Die Nielsen Norman Group, eine Erfolgreiche UX Beratungsfirma aus Amerika, welche von den User Experience Pionieren, Don Norman und Jakob Nielsen gegründet wurde, definiert Empathy Maps wie folgt: mehr

15. Apr. 2022

Flexibel einsetzbare Markupsprache

Blog

Die Idee, dass Daten wertvoll sind und das strukturierte Speichern dieser sinnvoll ist, wurde schon in den 60er Jahren im Konzept des Generic Coding erkannt. Diese Versuche, eine vereinheitlichte Sprache zur Beschreibung von Daten zu entwickeln, mündeten 1986 in die Entstehung der Standard Generalized Markup Language (SGML), welche sich durch die Verwendung von sogenannten Tags auszeichnet. Die Ähnlichkeit zu modernen Markup-Sprachen wie HTML oder XML ist kein Zufall, da diese SGML-konform entstanden sind, sich aber mittlerweile davon gelöst haben, um ihre Struktur weniger eingeschränkt anpassen zu können. mehr

17. Mär. 2022

Wohin mit all den Daten?

Blog

Kennen Sie es auch? Sie wollen in Ihrem Unternehmen auf bestimmte Daten zugreifen, können diese aber auf die Schnelle nicht finden – einige liegen auf den Rechnern der Mitarbeitenden, andere auf Datenbanken oder in der Cloud und wieder andere innerhalb von Softwaresystemen. Sie fragen sich, ob es nicht eine Möglichkeit gibt, all’ diese Daten ohne einen großen Aufwand zu sammeln und von einem Ort aus nutzen zu können? Die Antwort ist: Ja! Die Digitalisierung von Unternehmen ist in vollem Gange: Prozesse werden optimiert und automatisiert, Kommunikation wird dynamischer und die generelle Effizienz von Unternehmen steigert sich. Die mit der digitalen Transformation einhergehenden, gewaltigen Datenmengen – Stichwort Big Data – können genutzt werden, um Datenanalysen durchzuführen, die hochwertige Erkenntnisse für das eigene Unternehmen generieren können. Aber wo soll man nun beginnen? Daten innerhalb des eigenen Unternehmens sind oftmals weitläufig verteilt, nicht zwangsläufig strukturiert und haben unterschiedliche Dateiformate. Die Nutzung einer geeigneten Infrastruktur, die die Daten automatisiert extrahiert und speichert, stellt die Basis für eine organisierte Datenhaltung dar, die anschließende Auswertungen und Analysen ermöglicht. mehr