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 54.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 61. 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.