© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 2: ScalaTest-Implementierung

Automatisierung: nicht um jeden Preis

Im zweiten Teil unserer Serie stellen wir unsere Arbeit mit ScalaTest vor. Bei der Implementierung des Testtools sind zunächst unerwartete Folgen eingetreten. Unsere Erfahrungen möchten wir hier teilen.

Dennis Rieks, Angi Mathea, Daniel Börgers


ArtikelserieTeil 1: Automatisiertes Testen: ein Erfahrungsbericht Teil 2: ScalaTest-Implementierung

Was bisher geschah: Im ersten Teil dieses Artikels haben wir uns zunächst mit der Auswahl eines Frameworks für die Automatisierung einer Anwendung auf unterschiedlichen Plattformen, unterschiedlichen Domänen und mit zehn verschiedenen Sprachen beschäftigt. Die erste Wahl fiel auf das Framework Geb mit der darunterliegenden Programmiersprache Groovy. Da sowohl das Framework als auch die Programmiersprache uns mit der Zeit Schwierigkeiten machten, war es notwendig, die Entscheidung zu überdenken. Wir entschieden, ScalaTest zu evaluieren, da hier bereits firmenintern Vorkenntnisse in anderen Projekten vorlagen und Scala als Sprache innerhalb der Firma etabliert ist. Diesen Vorteilen standen jedoch auch Nachteile gegenüber. Hier ist insbesondere das PageObject-Pattern zu nennen, das aber in ScalaTest nicht ausprogrammiert ist. Es ist nur eine einzige Klasse vorgesehen, die einer Seite die Eigenschaft URL zuteilt. Um den ausgereiften Zustand der Geb-­Implementierung zu erreichen, war noch viel Entwicklungsarbeit zu leisten. Zunächst mussten wir daher identifizieren, was ScalaTest bietet und was wir in welchem Umfang selbst programmieren wollen oder müssen.

Anforderungen, die in ScalaTest bereits vorhanden sind

Anforderungen, die in ScalaTest bereits vorhanden sind, gehen Hand in Hand mit Anforderungen für aussagekräftige und analysierbare Testergebnisse. Für die Umsetzung einer Testanwendung mit Oberflächentests im Web oder auf einem Mobilgerät bietet ScalaTest recht wenig. Umfangreiche Möglichkeiten finden sich aber beim Management der Testfälle. Es gibt eine große Bibliothek an möglichen Darstellungen für die Ergebnisse. Außerdem ist ein Tagging von Testfällen vorgesehen, um diese zu kategorisieren. Es können damit je Testlauf Kategorien gewählt werden, die ausgeführt werden sollen. Dies ist insbesondere sinnvoll, wenn es Tests gibt, die nicht jedes Mal ausgeführt werden müssen, oder Tests, die sehr lange brauchen:

it("an empty stack should have size 0") taggedAs(Fast) { // define test case here}

Selbstverständlich sind auch Assertions vorgesehen, die sehr ähnlich zu den aus Java bekannten JUnit-Test-Assertions sind. Sehr wichtig für uns war zuletzt noch, dass Selenium bereits angebunden war.

Anforderungen für aussagekräftige und analysierbare Testergebnisse

Folgende Teile, die ScalaTest bereitstellt, sollten eingesetzt werden: Die DiagrammedAssertions sollten zu...

Java Magazin
Teil 2: ScalaTest-Implementierung

Automatisierung: nicht um jeden Preis

Im zweiten Teil unserer Serie stellen wir unsere Arbeit mit ScalaTest vor. Bei der Implementierung des Testtools sind zunächst unerwartete Folgen eingetreten. Unsere Erfahrungen möchten wir hier teilen.

Dennis Rieks, Angi Mathea, Daniel Börgers


ArtikelserieTeil 1: Automatisiertes Testen: ein Erfahrungsbericht Teil 2: ScalaTest-Implementierung

Was bisher geschah: Im ersten Teil dieses Artikels haben wir uns zunächst mit der Auswahl eines Frameworks für die Automatisierung einer Anwendung auf unterschiedlichen Plattformen, unterschiedlichen Domänen und mit zehn verschiedenen Sprachen beschäftigt. Die erste Wahl fiel auf das Framework Geb mit der darunterliegenden Programmiersprache Groovy. Da sowohl das Framework als auch die Programmiersprache uns mit der Zeit Schwierigkeiten machten, war es notwendig, die Entscheidung zu überdenken. Wir entschieden, ScalaTest zu evaluieren, da hier bereits firmenintern Vorkenntnisse in anderen Projekten vorlagen und Scala als Sprache innerhalb der Firma etabliert ist. Diesen Vorteilen standen jedoch auch Nachteile gegenüber. Hier ist insbesondere das PageObject-Pattern zu nennen, das aber in ScalaTest nicht ausprogrammiert ist. Es ist nur eine einzige Klasse vorgesehen, die einer Seite die Eigenschaft URL zuteilt. Um den ausgereiften Zustand der Geb-­Implementierung zu erreichen, war noch viel Entwicklungsarbeit zu leisten. Zunächst mussten wir daher identifizieren, was ScalaTest bietet und was wir in welchem Umfang selbst programmieren wollen oder müssen.

Anforderungen, die in ScalaTest bereits vorhanden sind

Anforderungen, die in ScalaTest bereits vorhanden sind, gehen Hand in Hand mit Anforderungen für aussagekräftige und analysierbare Testergebnisse. Für die Umsetzung einer Testanwendung mit Oberflächentests im Web oder auf einem Mobilgerät bietet ScalaTest recht wenig. Umfangreiche Möglichkeiten finden sich aber beim Management der Testfälle. Es gibt eine große Bibliothek an möglichen Darstellungen für die Ergebnisse. Außerdem ist ein Tagging von Testfällen vorgesehen, um diese zu kategorisieren. Es können damit je Testlauf Kategorien gewählt werden, die ausgeführt werden sollen. Dies ist insbesondere sinnvoll, wenn es Tests gibt, die nicht jedes Mal ausgeführt werden müssen, oder Tests, die sehr lange brauchen:

it("an empty stack should have size 0") taggedAs(Fast) { // define test case here}

Selbstverständlich sind auch Assertions vorgesehen, die sehr ähnlich zu den aus Java bekannten JUnit-Test-Assertions sind. Sehr wichtig für uns war zuletzt noch, dass Selenium bereits angebunden war.

Anforderungen für aussagekräftige und analysierbare Testergebnisse

Folgende Teile, die ScalaTest bereitstellt, sollten eingesetzt werden: Die DiagrammedAssertions sollten zu...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang