Tutorial Icon
QF-Test Tutorial Videoversion

Tutorial als Videoversion, in dem wir Sie Schritt für Schritt durch QF-Test führen...

Der Bereich 'Fenster und Komponenten'

Zum Thema "Komponenten" gibt es mehrere Videos:

Video Das Video 'Komponentenerkennung' erläutert zunächst die Wiedererkennungskriterien für Komponenten, danach (ab Minute 13:07) werden generische Komponenten erläutert, zuerst solche mit regulären Ausdrücken, danach solche mit Variablen für die Wiedererkennungsmerkmale.

Es gibt zwei Videos, die die Behandlung einer ComponentNotFoundException ausführlich erklären:

Ein einfacher Fall wird im Video 'ComponentNotFoundException - einfacher Fall' erläutert.

Einen komplexeren Fall gibt es in 'ComponentNotFoundException - komplexer Fall'.

Das Video 'Die Explosion der Komplexität in der Web Testautomatisierung eindämmen' zeigt eindrucksvoll den Umgang von QF-Test mit tief geschachtelten DOM-Strukturen.

Video-Mitschnitt des Spezialwebinars 'Komponentenerkennung'.

QF-Test speichert die Informationen, wie es die im GUI des SUT angezeigten Komponenten wiederfindet, im Bereich 'Fenster und Komponenten' ab. Dabei analysiert QF-Test bei der Aufnahme die erhaltenen GUI-Element-Informationen und speichert diejenigen, mit denen der Anwender interagiert hat, in den Details der 'Komponente' Knoten ab.

In diesem Abschnitt wollen wir Ihnen eine Vorstellung davon vermitteln, welche Informationen in 'Komponente' Knoten abgespeichert werden und wie diese von QF-Test für die Wiedererkennung verwendet werden. Es gibt zwei Fälle bei denen Sie sich mit Komponenten befassen müssen und wo ein Grundverständnis für die Komponentenerkennung hilfreich ist.

Der erste Fall betrifft Änderungen im GUI zwischen dem Zeitpunkt der Aufnahme und demjenigen, wenn Sie einen Test abspielen wollen, wie dies z.B. bei einer neuen Version der Anwendung passieren kann. QF-Test verfügt zwar über eine Reihe von Algorithmen zur Komponentenerkennung, so dass diese im allgemeinen stabil ist. Wenn sich aber zu viele Merkmale des GUI-Elements verändert haben, müssen Sie die Änderungen in der Testsuite nachziehen und entweder die Details des vorhandenen 'Komponente' Knoten anpassen oder das GUI-Element neu aufnehmen. Detaillierte Informationen zur Vorgehensweise finden Sie im Handbuch, Kapitel Lösung von Problemen bei der Wiedererkennung. Dort gibt es auch Links auf Videos mit entsprechenden Beispielen.

Im zweiten Fall geht es um die Verbesserung der Komponentenerkennung. Wie Sie bereits aus Kapitel Web-Komponentenerkennung wissen, werden bei Web-Anwendungen die funktionalen Komponenten wie Checkbox oder Tabelle, sogar Eingabefelder, in mannigfaltiger Art und Weise aus den verfügbaren HTML Basiskomponenten erstellt. So kommt es immer wieder vor, dass QF-Test bei einem GUI-Element nicht erkennen kann, welche Funktionalität es aus Anwendersicht erfüllen soll. Für solche Fälle stehen sogenannte "Resolver" zur Verfügung. Wie diese eingesetzt werden, ist im technischen Teil des Handbuchs im Kapitel 'CustomWebResolver' erläutert.

Wir wollen uns nun anhand einer 'TextField' Komponente die von QF-Test analysierten und abgespeicherten Merkmale ansehen.

  • AktionStarten Sie das CarConfig Demo, falls dies nicht bereits läuft. Führen Sie dazu den 'Vorbereitung' Knoten in der Testsuite aus.
  • Öffnen Sie die Prozedur 'Endpreis prüfen'.
  • Öffnen Sie das Kontextmenü des 'Check Text'-Knotens.
  • Springen Sie zum Knoten der Komponente über den Menüpunkt »Komponente finden« im Popup-Menü oder über das Tastaturkürzel [Strg-W].
Popup-menu
Abbildung 13.3:  Komponente finden

Dadurch gelangen Sie direkt zum Knoten 'TextField CalculatedPrice' im Bereich 'Fenster und Komponenten'.

Komponentenbaum
Abbildung 13.4:  Komponentenbaum

Dieser Komponentenbaum hat nur wenige Ebenen. Dies ist eine Wirkung der in Abschnitt 13.2 beschriebenen verbesserten Web-Komponentenerkennung. Wenn Sie sich den Komponentenbaum in der in Kapitel 11 erstellten eigenen Testsuite ansehen, werden Sie feststellen, dass dort eine große Anzahl an DIV-Ebenen aufgenommen wird. Diese sind auf der HTML-Seite definiert. Für die Komponentenerkennung sind sie jedoch nicht relevant bzw. sogar störend. Daher wird ihre Aufnahme mittels des CustomWebResolvers in der Demo-Testsuite unterdrückt.

Für den 'Komponente' Knoten mit der QF-Test ID CalculatedPrice sehen die Details wie folgt aus:

Component details
Abbildung 13.5:  Details eines 'Komponente' Knoten

Wie werden die Attribute des 'Komponente' Knotens zur Wiedererkennung der GUI-Elemente eingesetzt?

Das erste Attribut ist QF-Test ID, das in den Testfällen und Prozeduren zur Ansprache der Komponente verwendet wird. Alle anderen Attribute beziehen sich auf Eigenschaften des GUI-Elements.

Das folgende Attribut ist die Klasse. In unserem Fall TextField. Für die Komponentenerkennung ist die Klasse ein eindeutiges Merkmal. Die angezeigte Klasse ist eine von QF-Test verallgemeinerte Klasse. Durch diese generische Klasse werden die Tests unabhängig von der konkreten Implementierung und können leicht portiert werden. Die speziellen Werte werden in der Tabelle "Weitere Merkmale" abgespeichert. Sie spielen standardmäßig für die Erkennung keine Rolle, können aber für Sonderfälle genutzt werden.

Weitere Beispiele für generische Klassen sind "Panel", "Dialog" und "Button".

Dass Attribut "Name" enthält den Namen oder die Id, die dem GUI-Element seitens des Programmierers gegeben wurde. Falls ein Name vorhanden ist, ist dies für QF-Test zusammen mit der Klasse zur Komponentenerkennung ausreichend. Die übrigen Attribute bleiben dann unberücksichtigt.

Wenn weder ein Name noch eine Id durch den Entwickler gesetzt wurde und das Attribut "Name" daher keinen Wert enthält, verwendet QF-Test andere Kriterien für die Erkennung wie z.B. einen bestimmten Text, der zur Komponente gehört, Index und Geometrie.

Ein zur Komponente gehörendes Merkmal wäre bei einer Schaltfläche zum Beispiel der darauf angezeigte Text. QF-Test speichert Texte, die direkt zur Komponente gehören im Attribut "Merkmal" ab. Wenn das Web-Element keinen Text enthält, jedoch eine Id vorhanden ist, so wird diese im Attribut "Merkmal" abgespeichert. Wenn keines von beiden vorhanden ist, dann ein Text in der Nähe der Komponente, den QF-Test als mögliche Beschriftung identifiziert, ebenfalls im Merkmal-Attribut abgespeichert werden. Auf jeden Fall wird dieser Text in der Tabelle "Weitere Merkmale" unter dem Namen qfs:label gespeichert.

Die Struktur Informationen beziehen sich auf alle GUI-Elemente der jeweiligen Klasse. Die Gesamtzahl der GUI-Elemente der Klasse wird im Attribut "Insgesamt", der Index der Komponente selbst im Attribut "Index" abgespeichert.

Am Schluss befinden sich die Werte für die Geometrie. Diese erhalten im Wiedererkennungsalgorithmus die geringste Gewichtung. In seltenen Fällen kann es jedoch vorkommen, dass sie die einzigen Kennzeichen sind, die zur Identifizierung des GUI-Elements zur Verfügung stehen.

Wenn Sie an weiteren Details zum genauen Ablauf bei der Wiedererkennung interessiert sind, können Sie diese im Kapitel Komponentenerkennung der technischen Referenz im Handbuch nachlesen.

Um ein Gefühl für die Komponentenerkennung zu erhalten, können Sie ein bisschen mit den Attributwerten herumspielen, bis QF-Test das GUI-Element nicht mehr findet oder sogar eine falsche Komponente auswählt. Sie werden feststellen, dass die Änderungen beträchtlich sein müssen, bevor QF-Test ein falsches GUI-Element identifiziert. Das heißt, dass die Komponentenerkennung von QF-Test sehr robust ist und sich bei neuen Versionen einer Anwendung ein erheblicher Anteil der Attribute eines GUI-Elements verändern kann, bevor die Komponentenerkennung fehlschlägt - selbst wenn das GUI-Element keinen Namen oder keine Id hat.

Beim Klick auf einen 'Komponente' Knoten markiert QF-Test das erkannte GUI-Element mit einem dunkelblauen Rand.

  • AktionLöschen Sie den Wert CalculatedPrice aus dem Name-Attribut, da QF-Test sonst die nachfolgenden Attribute nicht berücksichtigt.
  • Bitte ändern Sie in der Tabelle 'Extra features' den Status des weiteren Merkmals mit dem Namen id von Sollte übereinstimmen auf Ignorieren.
  • Ändern Sie das Merkmal-Attribut von CalculatedPrice auf xxx.
  • Klicken Sie auf den "TextField" Knoten um zu sehen, ob QF-Test immer noch das Endpreis-Feld markiert.
  • Setzen Sie das Merkmal-Attribut zurück auf CalculatedPrice, entweder über den entsprechenden Button in der Werkzeugleiste oder über das Tastaturkürzel [Ctrl-Z].
  • Ändern Sie den Wert von qfs:label in der Weitere-Merkmale-Tabelle von Endpreis auf Rabatt.
  • Klicken Sie auf den "TextField" Knoten um zu sehen, ob QF-Test immer noch das Endpreis-Feld markiert.
  • Setzen Sie den Wert von qfs:label in der Weitere-Merkmale-Tabelle zurück auf Endpreis.
  • Setzen Sie alle Struktur- und Geometrie-Attribute auf andere Werte und überprüfen Sie, ob QF-Test immer noch das Endpreisfeld im GUI markiert.
  • Löschen Sie das Merkmal-Attribut and Ändern Sie den Wert von qfs:label in der Weitere-Merkmale-Tabelle von Endpreis auf Rabatt.

Nun markiert QF-Test das Rabattfeld.

Diese Übung ist nur eine kleine Spielerei mit der Komponentenerkennung. Konkrete Informationen, wie Sie bei Problemen mit der Komponentenerkennung umgehen, finden Sie in den oben genannten und weiteren Kapiteln im Handbuch.