Ein Thema, das jedem Softwareentwickler immer wieder über den Weg läuft, ist das zugleich gehasste und dennoch sehr wichtige und nützliche Thema Softwaretest.
Im Arbeitsalltag finden wir meistens keine Zeit für zusätzliche Arbeit und Tests bedeuten im ersten Moment genau das. Neben dem Coding selbst müssen Testfälle erstellt werden, die im besten Fall jede Codezeile ausführen.
Also was spricht für Tests? Welchen Gegenwert erhalten wir für die zusätzliche Arbeit?
Das Hauptziel von Softwaretests ist es, die Qualität der Anwendung zu gewährleisten. Im Idealfall können alle Anforderungen in Testfälle umgesetzt werden und wenn alle Tests erfolgreich absolviert werden, sind gleichzeitig auch alle funktionellen, Design und sicherheitsrelevante Anforderungen erfüllt.
Ein Bonus der am Anfang eines Projekts aber meist noch nicht entscheidend ist. Die Anforderungen sind zu Beginn meist noch überschaubar und man ist mit der Thematik vertraut und kennt sich aus.
Der entscheidende Vorteil ergibt sich oft erst über die Zeit. Ein neues Feature an dieser Stelle, ein Redesign an einer anderen Stelle. Die Komplexität der Anwendung steigt und steigt und die Auswirkungen sind bereits nach kurzer Zeit teils nicht mehr nachvollziehbar.
Abhängigkeiten können oft an den verschiedensten Stellen auftreten und sind diese nicht bekannt, tritt der Fehler erst beim Endanwender auf.
Genau an dieser Stelle helfen uns Tests, da diese immer die komplette Funktionalität Testen und der Fehler beim Ausführen direkt auffällt.
Zusammenfassend können wir feststellen, dass Softwaretests ein wichtiger Bestandteil jedes Softwareentwicklungsprozesses sein sollte, da so zu jeder Zeit sichergestellt werden kann, dass die Anwendung korrekt funktioniert und Fehler schnellstmöglich identifiziert werden können.
Also welche Möglichkeiten haben wir im SAPUI5 Umfeld?
Wie bei jeder Webapplikation gibt es eine Vielzahl an Testtools und Frameworks zur Realisierung von Tests auf verschiedensten Applikationslevels. Jedoch stellt die SAP zwei Frameworks bereit die auf SAPUI5 angepasst wurden und eine stabile Integration zu UI5 Elementen bieten.
Testframeworks:
OPA5 (One Page Acceptance Tests): Ein Testframework zum Erstellen von JavaScript basierten Akzeptanztests. Durch einen integrierten Polling Mechanismus wird eine Asynchronität gewährleistet, was eine sauberen und einen gut lesbaren Testaufbau ermöglicht. OPA5 ist besonders hilfreich zum Testen von Benutzerinteraktionen, Navigation innerhalb von Apps und Datenbindungen.
WDI5 (/vdif5/): Ein offizieller WDIO-Service für Plattformübergreifende End-to-End Tests mit integrierten Selektoren aus dem OPA5 Framework. WDIO ist im JavaScript Bereich ein sehr beliebtes Browsertesttool. Es ermöglicht die Interaktion mit „echten“ Browsern und simuliert eine definierte Abfolge von Userinteraktionen. Das Besondere daran ist, dass sich die Integration hierbei nicht auf den Browser beschränkt, sondern auch Anwendungen auf IOS und Android simuliert und getestet werden können. Ein weiterer Vorteil von WDIO ist es das mehrere Tests, solange sie unabhängig voneinander sind, parallel ausgeführt werden können. Jedoch fehlt WDIO die Kenntnis spezieller Frameworks wie SAPUI5, um diese Lücke zu schließen wurde WDI5 entwickelt. WDI5 wurde speziell für die Automatisierung von SAPUI5 basierten Anwendungstests entwickelt. Es ermöglicht Testern, UI5-Elemente direkt in ihren Testfällen anzusprechen, ohne zu tief in die umgebende DOM-Struktur der Anwendung einzutauchen.
Für stabile Ergebnisse beim Testing, empfiehlt es sich die Anwendung isoliert vom angebundenen Backendsystem zu testen. Das kann im SAPUI5 Umfeld ganz einfach mit einem Mock Server, einem Framework, welches sämtliche Requests eines Backendsystems simulieren kann, erreicht werden.
Bei der Verwendung „realer“ Daten aus dem Backendsystem, besteht immer die Gefahr, dass Dateninkonsistenzen erzeugt oder unerwartete Ergebnisse empfangen werden und die Tests fehlschlagen, ohne dass eine wirkliche Fehlfunktion vorliegt.
Zusammenfassung
Dadurch, dass beide Frameworks auf die gleiche Codebasis (Selektoren-Logik) zurückgreifen, bestehen die Unterschiede darin, dass sie in verschiedenen Umgebungen ausgeführt werden.
Während der OPA5-Test direkt in der Browserinstanz ausgeführt wird, läuft WDI5 in seiner eigenen Testumgebung und hat dadurch einen merkbaren Performancenachteil gegenüber OPA5. Ein weiterer großer Unterschied, ist das WDI5 Cross-Plattform (Browser/IOS/Android) Testing ermöglicht, ohne dass Tests geändert oder in einer neuen Syntax erstellt werden müssen. Weiter gibt es einige Funktionen, die mit OPA5 nicht so einfach nachgestellt werden können. Bei einem Seiten-Reload oder dem Abgreifen von Elementen wie Kalender Popups wird das mit Testing mit OPA5 schnell kompliziert.
Die Entscheidung welches Framework letztendlich verwendet werden soll ist vermutlich eine sehr subjektive Entscheidung. Letztendlich ist die Frage welche Notation einem mehr liegt und welche Anforderungen man erfüllen muss.
Tipp
Beide Test-Frameworks sind sein UI5 Release 1.105 in SAPUI5 Test Recorder und dem Browser Plugin UI5 Journey Recorder integriert. Zwei Tools zum Aufzeichnen von Testszenarios, deren Output in die Testfiles einfach übernommen werden kann.