38.2
Besondere Unterstützung für verschiedene AJAX Toolkits

Das Akronym AJAX für "Asynchronous Javascript and XML" wird allgemein mit modernen Webanwendungen assoziiert, die sich interaktiver anfühlen als die klassischen <FORM>-basierten Anwendungen und vom Look&Feel her schon fast an Desktop-Applikationen herankommen. Hinter diesem gemeinsamen Akronym steckt allerdings ein ganzer Zoo von Toolkits, auf denen solche Anwendungen basieren. Jedes davon setzt eigene Schwerpunkte und kommt mit einem eigenen Satz von Widgets. Solche Toolkits stellen für QF-Test und jedes andere automatisierte Testwerkzeug aus folgenden Gründen ein Problem dar:

Es gibt kein Allheilmittel, mit dem sich diese Probleme generisch lösen lassen. In vielen Fällen kann QF-Test trotzdem ohne weiteres Zutun mit AJAX Anwendungen interagieren. Dabei sind Wiedererkennung und Performanz allerdings nicht ideal. Optimale Testbarkeit kann nur mit Hilfe von Spezialfunktionen erreicht werden, die genau auf ein Toolkit zugeschnitten sind und sich dessen Eigenheiten zu Nutze machen.

38.2.1
Konzepte für AJAX Resolver

Ein AJAX Resolver besteht aus verschiedenen Resolvern und anderen Funktionen, die speziell für ein bestimmtes AJAX Toolkit entwickelt werden. Vor allem versucht QF-Test, den DOM Knoten Klassen zuzuweisen, die den zugehörigen abstrakten Widgets entsprechen und Knoten auf Zwischenebenen, die nur ein Detail der Toolkit-Implementierung sind, aus der Hierarchie herauszufiltern. Die Attribute 'Name', 'Merkmal' und 'Weiteres Merkmal' werden passend zum Toolkit ermittelt und Events werden so auf den korrekten DOM Knoten wiedergegeben, dass dies möglichst exakt einer Aktion von einem echten Anwender entspricht. Diese Maßnahmen reduzieren die Hierarchie der Komponenten drastisch und erhöhen Performanz und Zuverlässigkeit der Wiedererkennung und Wiedergabe gleichermaßen. Zudem werden Timing und Synchronisation besonders unterstützt.

Zwangsläufig unterscheiden sich Komponenten und Events für eine Webanwendung mit und ohne aktiviertem AJAX Resolver signifikant und sind nicht zueinander kompatibel. Daher sollte die Entscheidung, ob ein AJAX Resolver verwendet wird, so früh wie möglich getroffen werden. Andernfalls müssen entweder bestehende Tests neu implementiert werden, nachdem der Resolver aktiviert wird, oder Tests mit und ohne Resolver müssen sauber voneinander getrennt werden. Wenn ein Resolver für Ihre Anwendung verfügbar ist, sollten Sie ihn praktisch immer auch einsetzen, außer Ihre Tests sind bereits zu umfangreich, weitgehend vollständig und stabil.

Die Implementierung eines AJAX Resolvers ist ein fortlaufender Prozess. Da Änderungen an einem Resolver Auswirkungen darauf haben können, wie Komponenten aufgenommen und erkannt werden, muss sichergestellt sein, dass Sie Ihre QF-Test Version aktualisieren können, ohne die Kompatibilität bestehender Tests zu gefährden. Hierzu werden AJAX Resolver mit einer eigenen dreistelligen Version versehen, beginnend mit Version 1.0.0, mit folgender Bedeutung:

AJAX Resolver werden über die 'Prozedur' qfs.web.ajax.installToolkitResolver in der Standardbibliothek qfs.qft aktiviert, bei der Sie die zu verwendende Version angeben müssen. Sie können wahlweise nur die Major Version angeben, in welchen Fall QF-Test die höchste verfügbare Medium.Minor Version für diese Major Version verwendet. Dies ist üblicherweise die beste Option und wird in der mit Hilfe des Schnellstart-Assistenten erstellten Startsequenz verwendet (vgl. Kapitel 3). Alternativ können Sie die Major.Medium Version festlegen, oder sogar die exakte Major.Medium.Minor Version und so Ihre Tests mit der Version des Resolvers ausführen, mit der sie erstellt wurden.

38.2.2
Unterstützte AJAX Toolkits

Leider steigt die Zahl der verfügbaren AJAX Toolkits rasant und deren Popularität ändert sich sehr schnell. Daher müssen wir sehr genau abwägen, welche Toolkits wir zu welchem Grad unterstützen. Die Zusammenarbeit mit QF-Test Anwendern spielt hierbei auch eine große Rolle. Die Enwicklung eines Resolvers kann - bis auf die Beseitigung kritischer Bugs - auch eingefroren werden, wenn ein Toolkit an Bedeutung verliert.

Dieser Abschnitt führt die unterstützen AJAX Toolkits und deren Version zusammen mit den verfügbaren Versionen der Resolver auf. Neuere Versionen eines Toolkits benötigen nicht immer ein Update des Resolvers. Sollte Ihre Anwendung mit einer neueren Version des Toolkits arbeiten, verwenden Sie bitte den aktuellsten verfügbaren AJAX Resolver für dieses Toolkit und informieren Sie uns über Ihre Ergebnisse.

38.2.2.1
Google Widget Toolkit - GWT

Das Google Widget Toolkit wird seit GWT Version 1.5 unterstützt. Eine Demo-Testsuite für GWT, die mit GWT Version 2.3 getestet wurde, finden Sie in der Datei .../demo/web/gwt.qft. Dieses Demo verwendet generische Komponenten und stellt einige nützliche Prozeduren für die Arbeit mit GWT Widgets zur Verfügung.

Resolver Version QF-Test Version Anmerkungen
1.4.0 3.4.2 Behebt Fehler beim Filtern von <DIV> Knoten
1.3.0 3.4.1 Unterstützung für GWT-TABLAYOUTPANEL und GWT-TABLAYOUTPANELTAB
1.2.0 3.4.0 Filtern von <DIV> Knoten, verbesserte weitere Merkmale, eingeschränkte Unterstützung für obfuskierte GWT Klassennamen
1.1.0 3.3.0 Verbesserte Unterstützung für GWT-TREEITEM, GWT-STACKPANELITEM and GWT-TABBARITEM
1.0.1 3.1.4 Verbesserte Wiedergabe mit GWT 2.0
1.0.0 3.1.1 Initiale Version
Tabelle 38.1:  GWT Resolver Versionen
38.2.2.2
Ext JS

Dieser Resolver wurde zunächst mit Ext JS Version 2 entwickelt. Angetestet für Ext JS Version 4.0.1.

Resolver Version QF-Test Version Anmerkungen
1.2.0 3.4.1 Unterstützung für Ext JS Version 4
1.1.0 3.3.0 Verbesserte Unterstützung für Elemente von Tree, Grid, Tab Panel und Combo Widgets
1.0.0 3.1.1 Initiale Version
Tabelle 38.2:  Ext JS Resolver Versionen
38.2.2.3
Ext GWT

Es gibt keinen eigenen Ext GWT Resolver. Ext GWT ist faktisch eine Kombination aus Ext JS und GWT und wird von QF-Test durch Aktivierung der beiden entsprechenden Resolver unterstützt.

38.2.2.4
RichFaces

Dieser Resolver wurde mit den RichFaces Versionen 3 und 4 entwickelt.

Resolver Version QF-Test Version Anmerkungen
1.2.0 3.4.1 Unterstützt RichFaces 4
1.1.0 3.3.0 Grundlegend überarbeitet
1.0.0 3.1.4 Initiale Version
Tabelle 38.3:  RichFaces Resolver Versionen
38.2.2.5
Qooxdoo

Dieser Resolver wurde mit qooxdoo Version 0.7.2 entwickelt. Zur Zeit keine Aktivitäten.

Resolver Version QF-Test Version Anmerkungen
1.1.0 3.3.0 Verbesserte Unterstützung für Elemente von List und Menu Widgets
1.0.0 3.1.1 Initiale Version
Tabelle 38.4:  Qooxdoo Resolver Versionen
38.2.2.6
Rich Ajax Platform - RAP

Dieser Resolver wurde mit RAP Version 1 entwickelt, die Unterstützung für RAP Versionen 2 und höher ist unvollständig. Zur Zeit keine Aktivitäten.

Resolver Version QF-Test Version Anmerkungen
1.1.0 3.3.0 Verbesserte Unterstützung für Elemente von List, CTabFolder, Table und Tree Widgets
1.0.1 3.3.0 Verbesserte Erkennung von Widgets
1.0.0 3.1.1 Initiale Version
Tabelle 38.5:  RAP Resolver Versionen
38.2.2.7
Vaadin

Vaadin ist ein Toolkit, das zwar auf GWT aufsetzt, aber zusätzliche Features und seine eigenen Widgets mitbringt und somit für das Testen ganz andere Anforderungen stellt als GWT. Ein Resolver für Vaadin befindet sich derzeit in der Entwicklung. Fall Sie Interesse haben, melden Sie sich bitte.

38.2.2.8
jQuery UI

jQuery UI scheint der aufgehende Stern unter den aktuellen AJAX Toolkits zu sein. Ein Resolver für jQuery UI befindet sich in der Diskussion. Falls Sie Interesse haben, melden Sie sich bitte.