Java GUI Plugins

Aus expecco Wiki (Version 2.x)
Zur Navigation springen Zur Suche springen
AllJavaInterfaces.png

expecco unterstützt unterschiedliche UI-Frameworks. Hierzu zählen unter anderem auch JavaFX, Java Swing und Java SWT. Die folgenden Abschnitte sollen einen Überblick in die von expecco unterstützten Java UI-Frameworks geben, um Ihnen einen schnellen und einfachen Einstieg zu ermöglichen. In diesem Zusammenhang wird Ihnen bei dieser Einführung von den Hauptmerkmalen der einzelnen Frameworks über die Funktionsweise, die Konfigurationen und den Anforderungen bis hin zu der Verwendung einzelner Funktionsbausteine aus den jeweiligen 'Funktionsbibliotheken' näher erläutert. Um das Verständnis zum theoretischen Teil noch zu festigen, wird im Anschluss ein Praxisnahes Beispiel Schritt für Schritt durchgearbeitet und beschrieben, bei dem Sie aktiv mitarbeiten können. Die dazu benötigten Testsuiten und Anwendungen laden Sie sich bitte über die in den Abschnitten zu Verfügung gestellten Links herunter.

Java Swing[Bearbeiten]

Diese Erweiterung für expecco ermöglicht die Benutzeroberflächen Testautomatisierung für Java Anwendungen deren Benutzeroberflächen mit Swing erstellt wurden. Die Baustein-Bibliothek beinhaltet Blöcke zur Steuerung und Überprüfung von Swing Benutzeroberflächen. Zudem integriert sich diese Erweiterung in die expecco GUI Test Extension. Diese dient der Unterstützung bei der Entwicklung von Testsequenzen.

Hauptmerkmale[Bearbeiten]

  • Automatisierte Bedienung und Überprüfung von Swing Benutzeroberflächen
  • Gleichzeitige Bedienung mehrerer Anwendungen
  • Steuerung von Swing Benutzeroberflächen auf entfernten Zielsystemen
  • Steuerung von bereits eigenständig Laufenden Java Anwendungen (keine Änderung am Quell-Code notwendig, Keine Rekompilierung der Anwendung nötig)
  • Adressierung der Bedienelemente durch Pfade ähnliche dem XPath
  • Zugriff auf Objektebene durch Java Bridge Interface Library möglich
  • Integration in die expecco GUI Tests Extension
  • Block-Bibliothek mit Aktionen und Überprüfungen für Swing Komponenten

Funktionsweise[Bearbeiten]

Das Interface baut eine Verbindung zur Java VM auf, und stellt Funktionen zum Lesen von Widget-Attributen, Aufnehmen von Benutzereingaben sowie zum Fernsteuern der Anwendung zur Verfügung. Außerdem werden in einer Bibliothek zusätzliche Bausteine zur Automatisierung von Tests bereitgestellt. Im wesentlichen besteht das Java Swing plugin aus zwei Teilen, der Erweiterung für expecco und der Applikationssteuerung (Agent). Zur Steuerung der Swing Anwendung wird ein so genannter Agent in die Java Virtual Machine der laufenden Java Anwendung geladen. Um den Agenten zu laden wird ein Java Development Kit 1.8 (JDK) oder höher benötigt. Die zu Testende Anwendung kann jedoch in einer normalen Java Runtime Edition 1.8 (JRE) ausgeführt werden.

Anforderungen[Bearbeiten]

Auf dem Rechner auf dem die zu testende Anwendung laufen soll (lokal oder entfernt):

Auf dem expecco Rechner gelten die expecco Anforderungen.

Bitte nehmen Sie zur Kenntnis, dass sowohl der Agent als auch die zu testende Anwendung, jeweils beide entweder mit 32 oder 64 Bit Java gestartet werden müssen, da ansonsten keine Verbindung möglich ist. Aufgrund von JDK Änderungen zwischen den Java Versionen, können bei falscher Handhabung Konflikte auftreten.

Die Kompatibilität der Versionen ist wie folgt. Weitere Informationen dazu.
JavaSwing Bridge Compatibility.png

Konfiguration[Bearbeiten]

Installation auf dem expecco Rechner[Bearbeiten]

Die Java Swing Erweiterung wird automatisch durch ein Installationsprogramm in expecco Installiert. Wird die zu Testende Anwendung zur Entwicklung von Testsequenzen auf dem gleichen Rechner ausgeführt sollte nach dem Start von expecco unter
Extras => Einstellungen => Erweiterungen => Java Bridge der Lokale Pfad zu einem Java Development Kit 1.8 oder höher angegeben werden.
Die unbedingt erforderliche Einstellung hier ist Pfad zur JDK Installation welcher für die Hauptverbindung genutzt wird.
Pfad zur Java Installation ist eine alternative Einstellung für Groovy, welches nur ein JRE benötigt. Der Java Agent wird in lokalen Verbindungen automatisch mit diesen Einstellungen gestartet.

JDKPfadEinstellungen.png

Installation auf dem Testanwendungsrechner[Bearbeiten]

Es muss das javaBin Verzeichnis des Expecco Bridge Frameworks auf den Testrechner kopiert werden. Dieses befindet sich im expecco Installationsverzeichnis unter:

         ...\exept\bridgeFramework\javaBridge\javaBin

expecco GUI Browser[Bearbeiten]

Der expecco GUI-Browser ist ein zusätzliches 'Werkzeug', welches die Möglichkeit bietet, laufende Anwendungen zu analysieren und Testsequenzen zu entwickeln. Anschließend kann man die Informationen, wie beispielsweise Namen und Eigenschaften einzelner Elemente dazu verwenden, um mit der Funktionsbibliothek Aktionen auszuführen bzw. mit einzelnen Elementen zu interagieren.

Verbindungsaufbau[Bearbeiten]

Im Folgenden eine kurze Bilderstrecke, die Ihnen beim Einrichten einer Verbindung als Leitfaden dienen kann

JavaSwing GUI Browser.png

Zunächst wählt man über den GUI Browser (schwarzer Kreis) im Reiter Verbinden die Option Java (roter Kreis) aus. Im sich öffnenden Dialog kann man nun zwischen 3 Optionen wählen.

  • Anwendung auf der lokalen Maschine starten
    liefert eine bequeme Möglichkeit eine lokale Java Anwendung per Kommandozeilenbefehl zu starten
  • Zu einer laufenden Anwendung auf der lokalen Maschine verbinden
    Ermöglicht die Verbindung zu lokal laufenden Java Anwendungen
    Der Java Agent wird automatisch mit der Java Version, die Sie in den Expecco Einstellungen festgelegt haben, gestartet.
  • Zu einer laufenden Anwendung auf einer anderen Maschine verbinden
    Ermöglicht die Verbindung zu einem bereits gestarteten Java Agenten auf einer anderen Maschine
    Dieser stellt dann die Verbindung zur dort laufenden Java Anwendung her.



JavaSwing Connection Window.png

Eine Suche nach Java Anwendungen listet uns alle laufenden Java Virtuellen Maschinen auf, die sich auf dem Zielsystem befinden
(im Beispiel: localhost). Eine Auswahl der einzelnen Einträge listet weitere Informationen über die betreffende Anwendung auf.

JavaSwing Connection Connected.png

Wenn eine Verbindung erfolgreich aufgebaut wurde, wird sie automatisch in die Expecco Konfigurationsliste eingetragen.
Dort kann auch der GUI Aufbau der Anwendung als hierarchischer Baum eingesehen werden.
Informationen zum weiteren Vorgehen können Sie hier finden Expecco_GUI_Tests_Extension_Reference

JavaSwing Connection Reconnect.png

Wenn Sie zu einer zuvor verbundenen Anwendung erneut eine Verbindung aufstellen möchten, können Sie dies durch Rechtsklick auf den Eintrag.
Falls Sie die Anwendung (oder im Fall entferntes System auch den Agenten) zwischenzeitlich neu gestartet haben, müssen Sie die Verbindung eventuell neu aufbauen.

Verbindung zu Entfernten Systemen[Bearbeiten]

JavaSwing Connection RemoteSetup.png

Um eine Verbindung remote zu erstellen, muss zunächst auf dem Zielrechner der Java Agent gestartet werden.
Dazu navigieren Sie auf dem Rechner zum zuvor kopierten Verzeichnis ...\exept\bridgeFramework\javaBridge\javaBin
Dort liegt ein Skript, welches automatisch die Java Version in JAVA_HOME erkennt und den korrekten Agenten startet.

  • Windows Nutzer starten startAgentLoader.bar
  • UNIX Nutzer starten startAgentLoader.sh

Diese Skripte können über die Kommandozeile wie im Bild gezeigt mit Parametern versehen werden.

  • -ip <HostnameOderIP> gibt dem Agenten eine spezielle IP an, auf der auf eine Verbindung gewartet werden soll. Nützlich für spezifische Netzwerkmasken.
    StandardHost ist 0.0.0.0.
  • -port >PortNummer gibt dem Agenten einen spezifischen Port an, auf dem auf Verbindungen von Expecco gewartet werden soll.
    Standardport ist 56784.

Fehlerbehandlung[Bearbeiten]

JavaSwing Connection Warnings.png

Sollten bei den Anwendungen in dieser Liste Probleme auftreten wie im oben stehenden Bild zu sehen ist, liefert der Verbindungsdialog automatisch einen Lösungsvorschlag.
Wenn der auftretende Fehler eine Verbindung unmöglich machen würde, wird der Entsprechende Eintrag automatisch als ungültig markiert.
Folgende Fehlermeldungen könnten eventuell auftreten und sind einfach behebbar:

JAVA VERSION MISMATCH Wie im Bild zu sehen, kann es zu Java Versionskonflikten zwischen dem Agenten und der Anwendung kommen.
In diesem Fall ist es am einfachsten die Expecco Einstellungen für Java Bridge anzupassen.
32 BIT - 64 BIT KONFLIKT 32 und 64 Bit Versionen von Java sind nicht miteinander Kompatibel.
Sowohl der Agent als auch die Anwendung müssen mit der selben "Bit Version" von Java gestartet werden.
UNABLE TO DETERMINE VERSION Der Agent kann nicht feststellen, welche Java Version die Anwendung nutzt.
Eine Verbindung ist eventuell möglich, es kann aber potentiell ein Versionskonflikt auftreten.
CONNECTION REFUSED In seltenen Fällen, kann die Socket-Verbindung zu einer Anwendung oder dem Agent durch eine vorherige Verbindung blockiert werden.
Ein Neustart der Anwendung und des Agenten (im Fall remote) sollte helfen.
Sollte das Problem bestehen bleiben, prüfen Sie bitte auch ihre Firewall Einstellungen, die eine Verbindung verhindern können.

JavaSwingLibrary[Bearbeiten]

Example[Bearbeiten]

FAQ[Bearbeiten]

  • Der Baum im GUI-Browsers zeigt nicht alle Elemente meiner Applikation
Eine Applikation besteht aus vielen verschiedenen Elementen. Manche davon sind nicht interaktiv, das heißt sie sind für den Anwender nicht direkt sichtbar und dienen lediglich der Formatierung, wie beispielsweise Panels. Das Vorhandensein solcher Elemente führt dazu, dass der Baum sehr groß und tief werden kann. Da diese Elemente in der Regel für die Automatisierung uninteressant sind, werden sie in expecco standardmäßig ausgeblendet.
Wenn Sie in Ihrem Fall auf eines dieser Elemente zugreifen wollen oder es für das Erstellen eines eindeutigen Pfades brauchen, können Sie dieses Verhalten ändern. In der JavaSwingLibrary gibt es dafür den Baustein Set Skip Mode. Dabei sind vier Modi auswählbar:
INTERACTIVE nur interaktive Elemente einsammeln
ALL alle Elemente einsammeln
INTERACTIVE_HYBRID wie INTERACTIVE, aber mit dem Fallback zu ALL wenn ein Pfad nicht aufgelöst werden kann
ALL_HYBRID wie ALL, aber mit dem Fallback auf INTERACTIVE wenn ein Pfad nicht aufgelöst werden kann
Durch das Ausführen des Bausteins ändert sich das Verhalten für die aktuelle Verbindung. Es bezieht sich sowohl darauf, was im Baum angezeigt wird, als auch, wie mit den Pfaden an den Bausteinen umgegangen wird.

Java SWT[Bearbeiten]

JavaFX[Bearbeiten]



Copyright © 2014-2024 eXept Software AG