Klasse

Die Klasse einer Komponente steht für den Typ der jeweiligen Komponente und ist daher sehr wichtig. Vereinfacht gesagt: Wenn QF-Test einen Button aufnimmt, sucht es bei der Wiedergabe auch nur nach einem Button und nicht nach einer Tabelle oder einem Baum. Dies verbessert Performanz und Stabilität der Wiedererkennung und hilft Ihnen außerdem, die von QF-Test aufgezeichnete Information zu einer Komponente mit der tatsächlichen Komponente im GUI zu korrelieren.

Neben ihrer Rolle bei der Identifikation von Komponenten ist die Klasse auch wichtig für die Registrierung verschiedener Arten von Resolvern, die großen Einfluss darauf nehmen können, wie QF-Test Komponenten behandelt. Resolver werden in Abschnitt 52.1.7 detailliert erläutert.

Der 'Name' wird für die Generierung der 'QF-Test ID der Komponente' verwendet. Beispiele hierzu finden Sie in Woran erkennt man eine robuste Komponentenerkennung?.

Komponenten können in einer SmartID auch direkt über den 'Namen' adressiert werden, ohne Aufnahme eines 'Komponente'-Knotens.

Der Einfluss der Klasse auf die 'QF-Test ID' der Komponente ist in Generierung der 'QF-Test ID' der Komponente beschrieben. Die Verwendung als SmartID in Abschnitt 5.6.

Generische Klassen

Normalerweise gibt es in jeder UI-Technologie systemspezifische Klassen, die einen Button, eine Tabelle oder anderen Typ kennzeichnen. Für einen Button kann diese Repräsentation z.B. ein javax.swing.JButton in Java Swing, ein org.eclipse.swt.widgets.Button in Java SWT, ein javafx.scene.control.ButtonBase in JavaFX oder ein INPUT:SUBMIT in Web-Anwendungen sein. Um ein technologieübergreifendes Testen zu ermöglichen, vereinheitlicht QF-Test nun diese spezifischen Klassen und arbeitet mit sogenannten generischen Klassen, z.B. Button für alle zuvor genannten Button-Beispiele.

Sie finden eine Beschreibung der generischen Klassen in Kapitel 59. Zusätzlich zu der generischen Klasse werden systemspezifische Klassen als 'Weitere Merkmale' aufgenommen, allerdings mit dem Status "Ignorieren". Im Fall von Erkennungsproblemen aufgrund zu vieler ähnlicher Komponenten können diese aktiviert werden, um die Erkennung zu schärfen, wenn auch auf Kosten der Flexibilität.

Swing
JavaFX Sogar dann, wenn von der Klasse abgeleitet wurde, wird die generische Klasse aufgenommen. Zusätzlich sei erwähnt, dass dieses Konzept QF-Test erlaubt, problemlos Tests mit obfuskierten Klassen zu erstellen, ohne dass Sie die Standardeinstellungen ändern müssen. Während der Wiedergabe vergleicht QF-Test das aufgezeichnete 'Klasse' Attribut der Komponente mit jeder Klasse des Objektes im SUT. Deshalb kann QF-Test auch mit Änderungen von Klassennamen umgehen, solange der Basistyp der selbe bleibt.

Web HTML ist eine sehr flexible Sprache, um den Inhalt und Aufbau einer Webseite zu beschreiben. Es gibt nur ein Minimum an Quasi-Standards wie zum Beispiel "INPUT:SUBMIT", bei denen immer die selbe Funktionalität zu erwarten ist und die somit einer QF-Test Klasse standardmäßig zugewiesen werden können. Die Entwicklung von Web-Applikationen erfolgt im Normalfall mit Toolkits, die ihre eigenen Standards haben. In QF-Test wurden für eine Reihe gängiger Toolkits die Klassenzuordnungen vorgenommen, siehe Besondere Unterstützung für verschiedene Web-Komponentenbibliotheken. Wenn die Anwendung mit einem erweiterten Toolkit erstellt wurde oder ganz mit einem eigenen gearbeitet wurde, wird es notwendig sein, QF-Test die Klassenzuordnungen bekanntzugeben. Dies ist in Verbesserte Komponentenerkennung mittels CustomWebResolver beschrieben.

Wenn QF-Test einer Komponente eine generische Klasse zuordnen kann, bietet das für die Testerstellung und Ausführung folgende Vorteile:

Unabhängigkeit von den konkreten technischen Klassen
Mit den generischen Klassen wird eine gewisse Unabhängigkeit von den konkreten technischen Klassen hergestellt. Dieses Konzept ermöglicht es Ihnen, Tests unabhängig von der konkreten Technologie zu erstellen.
Verbesserte Komponentenerkennung

Wenn die Funktionalität der Komponente bekannt ist, können die für die Erkennung am besten geeigneten Kriterien abgespeichert werden.

Beispiel Button: Hier ist die Beschriftung des Buttons erste Wahl für das 'Merkmal' und das weitere Merkmal 'qfs:labelText'.

Beispiel Textfeld: Bei einem Textfeld hingegen macht es keinen Sinn, den eigenen Text für die Wiedererkennung zu verwenden. Hier sucht QF-Test nach einer Beschriftung in der Nähe und speichert diese im weiteren Merkmal in einer der qfs:label*-Varianten, zum Beispiel in 'qfs:labelLeft', wenn sich die Beschriftung links des Textfelds befindet.

Auch die generische Klasse an sich ist ein Unterscheidungskriterium. Dies wird besonders bei Web-Anwendungen deutlich, bei denen es vorkommen kann, dass die meisten Komponenten mit der Klasse DIV, entsprechend ihres HTML-Tags, aufgenommen werden.

Optimale Mausposition bei der Wiedergabe

Die generische Klasse hat auch Einfluss auf die optimale Mausposition beim Abspielen der Events.

Beispiel Button: Ein Mausklick wird am besten mittig auf den Button abgespielt.

Beispiel Textfeld: Der Mausklick sollte die gleiche Stelle abgespielt werden, auf die der Tester bei der Aufnahme geklickt hat, damit bei Bedarf anschließend Text genau dort eingefügt werden kann.

Klassenspezifische Checks
Außerdem bietet QF-Test bei der Checkaufnahme klassenspezifische Checks an. Bei Textfeldern kann zum Beispiel zusätzlich geprüft werden, ob sie editierbar sind. 'Check Elemente' ist hingegen nur bei Listen, Tabellen oder Bäume sinnvoll.