Saros Test Framework für die HTML-GUI

worked on by: Jannis Fey

Ausgangssituation

Das Saros Test Framework (kurz STF) ist ein Baustein im Entwicklungsprozess des Saros Plugins. Das Ziel des Frameworks ist es, Ende-zu-Ende Tests zu ermöglichen. Dazu stellt es Funktionen bereit, um einzelne GUI-Elemente anzusprechen wie z.B. das klicken auf einen Button. Durch eine Reihe von Operationen kann somit ein ganzer STF-Test geschrieben werden, welcher das Verhalten von Saros auf der obersten Ebene (der Benutzeroberfläche) testet. Im Zuge der Weiterentwicklung von Saros wurde eine neue HTML-GUI in das Saros-Plugin integriert. Diese neue “HTML-Cross-IDE-GUI” wird von Saros für Eclipse sowie in Saros für IntelliJ in einem eingebetteten Browser genutzt.

Problem

Die neue HTML-Oberfläche wird noch nicht für die automatisierten Ende-zu-Ende Tests verwendet. Das Saros Test Framework kann so wie es jetzt ist nicht einfach auf die neuen HTML-Elemente angewendet werden. Der einzige Zugang zu den HTML-Elementen im DOM besteht über den eingebetteten Browser über welchen direkt Javascript auf der HTML-GUI ausgeführt werden kann. Was fehlt, ist eine API um gezielt über diese Javascript-Schnittstelle einfach Operationen, wie z.B das Klicken auf einen Button, auszuführen.

Ziel

Das Ziel der Arbeit lässt sich in 4 Teilziele unterteilen:
  1. Die HTML-GUI lässt sich über eine API ansprechen. STF-Tests können mithilfe der neuen API geschrieben werden.
  2. Bestehende STF-Tests lassen sich Schrittweise auf die neue API umstellen.
  3. STF-Tests können sowohl für Eclipse als auch für IntelliJ ausgeführt werden.
  4. Ein API-Design welches verständlich und einfach zu lesen ist.
Die Ziele 1 bis 4 sind nach ihrer Priorität sortiert. (1 = hoch, 4 = niedrig)

Abgrenzung

In dieser Arbeit geht es lediglich darum die Infrastruktur für HTML-STF-Tests bereit zu stellen. Die Umstellung aller bestehenden STF-Tests auf die neue HTML-Oberfläche soll prinzipiell möglich sein, aber nur Schrittweise geschehen. Die volle Unterstützung von STF-Tests in IntelliJ ist ebenfalls kein Bestandteil der Arbeit. D.h. es werden nur HTML-Elemente vom Test angesprochen keine Swing-Elemente aus IntelliJ.

Umsetzung

Als erster Schritt wird es notwendig sein, alle grundlegenden HTML-Elemente (z.B. Button, Dropdown, Input-Field, …) via Javascript aus dem Framework anzusprechen. Dafür müssen die entsprechenden Klassen und Interfaces in Java angelegt werden. Damit die API auch für spätere hinzugefügte HTML-Elemente funktioniert, ist eine einfaches Regelwerk für die implementierung der Saros-HTML-GUI notwendig. Darauf aufbauend können erweiterte Funktionen (z.B. einen Kontakt einladen) für das Framework geschrieben werden. Um zu entscheiden welche Funktionen umgesetzt werden sollen, dienen die bestehenden STF-Test als Orientierungspunkt. Jeder STF-Test wird dupliziert und schrittweise so angepasst, dass er die neu API verwendet. Sobald einige STF-Tests für Saros/E mit der HTML-GUI angepasst wurden, kann damit begonnen werden die Test-Infrastruktur so anzupassen, dass der STF-Test auch mit Saros/I ausgeführt werden kann. Dazu müssen in Saros/I die entsprechenden RMI-Objekte angelegt werden. Um eine gute Granularität der API herauszufinden ist es evt. sinnvoll eine Umfrage unter den Saros Entwicklern durchzuführen. Sollte diese Umfrage einen zu kleinen Personenkreis einschließen, so ist es möglicherweise sinnvoller die Umfrage allgemeiner zu gestalten und dann eine größere Gruppe zu befragen. Aus den Ergebnissen kann dann eine sinnvolle Struktur für das API-Design ermittelt und umgesetzt werden.

Status

14.06.2018

  • Grundlegede HTML-Element sind ansprechbar (lesen und schreiben der Value)
  • Umgesetzt sind: InputField, Checkbox, RadioButton, Select, MultiSelect, Progressbar, Button