unic.com - Navigations- und Servicebereich


Inhaltsbereich

„We share code“: Die Open-Source-Initiative “ScalaWebTest” von Daniel Rey, Senior Application Architect

Von am 13. Januar 2017

„We share code“. Wir sind überzeugt: Teilen fördert Innovation und Vernetzung. Wir setzen uns deshalb aktiv für das Weitergeben von Know-how ein.

In den kommenden Monaten stellen wir hier Initiativen vor, über welche wir unser technisches Wissen anderen zur Verfügung stellen – ganz im Sinne von „We share code“. Treiber hinter diesen Projekten sind Enthusiasten bei Unic, die sich mit Herzblut für ihre Sache einsetzen.

Daniel, Du bist als Initiator von ScalaWebTest massgeblich für dessen konzeptionelle und technische Entwicklung verantwortlich. Welche Prozesse und Funktionen werden mit ScalaWebTest unterstützt?
ScalaWebTest ermöglicht es, mit wenig Aufwand Integrationstests für Webapplikationen zu schreiben. Das Projekt verfolgt drei zentrale Ziele: eine Struktur bieten, einfache und gut lesbare Tests ermöglichen und eine Bibliothek mit guten Beispielen zur Verfügung stellen. Diese Ziele versuchen wir wie folgt zu erreichen.

ScalaWebTest kümmert sich um die korrekte Verknüpfung von ScalaTest und Selenium. Dank entsprechender Basisklassen genügt es, Server, Pfad und falls notwendig Usernamen und Passwort anzugeben; ScalaWebTest kümmert sich um Login, Anfrage und Aufbereitung der Ressource.

Mit Hilfe von Gauges, zu Deutsch (Prüf-)Lehren, können die Nutzer von ScalaWebTest das erwartete Testresultat in HTML formulieren. Dieses wird nicht eins zu eins verwendet, zusätzliche Elemente und Attribute sind erlaubt. Das Dokument, welches mit der Gauge geprüft wird, darf also zusätzliche Dinge beinhalten. Es darf aber nichts fehlen oder im Widerspruch zur Gauge stehen.
Wir alle lernen neue Dinge durch Kopieren. Diesen Teil des Lernprozesses möchten wir mit einer Bibliothek von guten Beispielen unterstützen. Um sicherzustellen, dass diese Beispiele immer dem neusten Stand entsprechen und funktionsfähig sind, verwenden wir sie gleichzeitig zum Testen von ScalaWebTest.

Was gab den Anstoss, dieses Werkzeug zu entwickeln?  
Wir haben vor zwei bis drei Jahren begonnen, unsere Integrationstests in Scala mit ScalaTest zu schreiben. Davor hatten wir JUnit in Java verwendet. Nachdem wir erste Erfahrungen gesammelt hatten, starteten wir ein Unic-internes Projekt, damit wir unsere Integrationstests nicht jedes Mal neu aufsetzen müssen. Entwickler bzw. Tester einer Webapplikation können sich damit viel Arbeit ersparen und bauen auf einer Struktur auf, die sich in mehreren Projekten bewährt hat.

Was ist der grundlegende Mechanismus hinter ScalaWebTest? Auf welchen Prinzipien basiert die Lösung?
ScalaWebTest baut auf ScalaTest und Selenium auf. ScalaTest ist ein Testing Framework, mit welchem schön strukturierte, gut lesbare Tests geschrieben werden können. Stösst der Test auf einen Fehler, so liefert ScalaTest eine hilfreiche Meldung mit Vergleich zwischen dem erhaltenen und dem erwarteten Wert. Mit Selenium lässt sich ein Webbrowser emulieren und fernsteuern. Dabei können nicht nur Seiten aufgerufen werden, sondern auch Interaktion ist möglich und JavaScript kann ausgeführt werden.

Ihr habt ScalaWebTest als Open-Source-Lösung entwickelt und stellt es offen unter www.scalawebtest.org zur Verfügung. Was ist die Motivation dahinter?
Wir verfolgen mehrere Ziele damit: Im Idealfall können wir eine lebhafte Community um das Projekt aufbauen. Gelingt dies, so liefern Entwickler aus verschiedensten Unternehmen und Ländern Vorschläge und Verbesserungen für das Projekt, von welchen wir am Ende selber wieder profitieren. Dank dem Open-Source-Ansatz können wir Code über mehrere Kundenprojekte teilen. Weiter versuchen wir über unsere Open-Source-Initiativen den Namen Unic in die Welt zu tragen und Kunden sowie neue Mitarbeitende für Unic zu begeistern. Ich hatte vor kurzem die Möglichkeit, ScalaWebTest an der Scala eXchange in London vorzustellen (Skillscast). Vor Ort anwesend war auch Bill Venners, der Autor von ScalaTest – ein Glücksfall: Er hat sich Zeit genommen, unser Projekt anzuschauen, zieht es sogar für sein nächstes Kundenprojekt in Betracht und hat schon Vorschläge gemacht, wie wir angestrebte Verbesserungen umsetzen könnten.

Last but not least wollen wir der Open-Source-Gemeinschaft etwas zurückgeben. Wie die meisten IT-Firmen sind auch wir von verschiedensten Open-Source-Projekten abhängig. Dies funktioniert aber nur, wenn jede Firma ihren Teil dazu beiträgt.

Welchen Herausforderungen seid ihr bei der Entwicklung von ScalaWebTest begegnet?
Scala-Projekte werden meistens mit sbt gebaut und nicht mit Maven, welches wir in unseren Projekten normalerweise verwenden. Damit ScalaWebTest breite Unterstützung finden kann, war es aber wichtig, dass dieses mit sbt gebaut wird. Entsprechend mussten wir uns das Wissen für dieses Buildtool aneignen.

Eine weiterhin offene Herausforderung sind richtig gute Fehlermeldungen für die Gauge. Diese sind zwar schon sehr hilfreich, wir sind aber überzeugt, dass wir hier noch besser werden können. Angenommen wir suchen in einem Dokument den Titel «Leidenschaftlich» und dieses enthält die Titel «Leidenschaft», «Qualitätsorientiert» und «Persönlich», so gibt ScalaWebTest aktuell für jeden der Titel ein Erklärung ab, weshalb dieser nicht passt. Für einen Menschen ist aber offensichtlich, dass beim Titel «Leidenschaft» doch einfach die Endung «lich» fehlt und es sich bei den anderen beiden nicht um den gesuchten Titel handelt. Entsprechend würden wir am liebsten als Fehler zurück geben, dass «Leidenschaft[lich]» und «Leidenschaft» nicht identisch sind. Das Hervorheben des Unterschiedes könnte uns in einem der nächsten Releases gelingen, das Verwerfen der anderen Kandidaten, da sie weniger Ähnlichkeit zum gesuchten Element haben, dürfte aber deutlich schwieriger werden.

Wer steckt hinter ScalaWebTest? Gerne würden wir etwas mehr über Dich als Person erfahren.
Ich bin Softwareentwickler mit Herzblut und seit über 15 Jahren in der Informatik tätig. Ich habe eine grosse Begeisterung für die verschiedensten Programmiersprachen und Datenbanken. Möglichst lesbaren Code zu schreiben, ist eines meiner Lieblingsthemen, das mich antreibt, wenn ich mir eine neue Programmiersprache anschaue. Aktuell schaue ich mir gerade Elm an. Diese Sprache ist von Haskell inspiriert und wird zu JavaScript kompiliert. In meiner Freizeit bin ich Schlagzeuger bei Pale Black. Wenn ich mich nicht im Proberaum verkrieche, bin ich oft auf dem Mountainbike anzutreffen.

 

Danke Daniel für diesen Blick hinter die Kulissen von ScalaWebTest. Ein wirklich spannendes Projekt. Wir wünschen Euch, dass eine lebendige Community rund um ScalaWebTest entsteht, welche das Projekt bereichert und weitertreibt. Viel Erfolg!

Diesen Beitrag kommentieren

Die E-Mail-Adresse wird nicht veröffentlicht.