Historische Knoten
Die folgenden Knoten wurden im Laufe der Entwicklungszeit von QF-Test angeboten, werden aber nicht mehr weitergepflegt. Aus Gründen der Rückwärtskompatibilität können diese aber noch ausgeführt werden.
Test
|
Hinweis Vor QF-Test Version 2 war der Test Knoten einer der zentralen Bausteine einer Testsuite. Er hat allerdings einige Schwachpunkte. So ist zum Beispiel seine Struktur für Vorbereitungs- und Aufräumarbeiten für komplexe Szenarios zu unflexibel. Außerdem war nie klar, ob ein Test Knoten einen logischen Testfall repräsentiert oder nur zur Implementierung einer einfachen Sequenz dient. Daher wurden Test Knoten durch Testfallsatz und Testfall Knoten abgelöst. Ein Test ist eine besondere Sequenz, die es erlaubt, vor und nach der Ausführung jedes ihrer Childknoten spezielle Maßnahmen zu treffen, um einen gesicherten Ausgangszustand herzustellen. Dazu kann der Test neben seinen normalen Children als erstes Child einen Vorbereitung und als letztes Child einen Aufräumen Knoten enthalten. Die Vorbereitung wird vor, das Aufräumen nach jedem normalen Childknoten ausgeführt. Mit seinem Attribut Implizit Exceptions fangen bietet ein Test eine besondere Möglichkeit zur Behandlung von Exceptions um den Abbruch eines gesamten Testlaufs durch eine einzelne Exception in einem Test zu verhindern. Für spezielle Fälle von datengetriebenem Testen kann der Test auch einen Datentreiber enthalten. Im Regelfall wird dies jedoch mit Hilfe von Testfallsätze realisiert, wie in Kapitel 23 beschrieben. Dieser Anwendungsfall kann auch per Testschritt Knoten abgedeckt werden. Aus Gründen der Rückwärtskompatibilität und um den Übergang von den alten Test Knoten zu den modernen Testfallsatz und Testfall Knoten zu erleichtern, behandelt QF-Test Test Knoten im Report analog zu Testfallsatz oder Testfall Knoten, sofern deren Position in der Hierarchie dies zulässt. In einigen Fällen konnte ein Test Knoten auch wie ein Testschritt behandelt werden, um z.B. datengetriebene Testschritte zu erlauben. Alte Testsuiten, deren Struktur noch auf Test Knoten basiert, können migriert werden, um die neuen Features von Testfallsätze und Testfälle zu nutzen. Klicken Sie hierzu mit der rechten Maustaste auf einen Knoten, um dessen Kontextmenü anzuzeigen. Wenn eine Transformation erlaubt ist, wird QF-Test anbieten, den Test Knoten in einen Testfallsatz, Testfall oder Testschritt Knoten umzuwandeln. 3.0+ Um eine ganze Hierarchie von Test Knoten zu transformieren müssen Sie von oben nach unten arbeiten oder die Knotentransformation "Testfallsatz rekursiv" anwenden. Hinweis Sowohl Testfallsatz als auch Testfall Knoten können aus Gründen der Rückwärtskompatibilität Vorbereitung und Aufräumen Knoten enthalten. Bei einem Testfallsatz verhalten sich diese genau wie bei einem Test, d.h. Vorbereitung und Aufräumen Knoten werden vor und nach jedem im Testfallsatz enthalten Test ausgeführt. Bei einem Testfall werden hingegen Vorbereitung und Aufräumen nur einmal ganz zu Beginn und Ende ausgeführt. Enthält ein Testfallsatz oder Testfall Knoten sowohl Abhängigkeit als auch Vorbereitung/Aufräumen Knoten wir die Abhängigkeit zuerst aufgelöst. Vorbereitung und Aufräumen haben keinen Einfluss auf den in Abschnitt 8.6.3 beschriebenen Stapel von Abhängigkeiten. |
Enthalten in: Alle Arten von Sequenzen.
Kinder: Ein optionaler Datentreiber gefolgt von einer optionalen Vorbereitung am Anfang, dann beliebige ausführbare Knoten und ein optionales Aufräumen am Ende.
Ausführung: Die Variablendefinitionen des Tests werden gebunden. Ist ein Datentreiber Knoten vorhanden, wird dieser ausgeführt, um einen entsprechenden Datenkontext zu erzeugen und einen oder mehrere Daten Knoten zu binden mit dem Zweck, über die ermittelten Datensätze zu iterieren (vgl. Kapitel 23). Für jeden normalen Childknoten des Tests wird zunächst die Vorbereitung ausgeführt, dann das Child, dann der Aufräumen Knoten. Zuletzt werden die Variablen des Tests wieder gelöscht.
Attribute:

- Name
-
Der Name einer Sequenz ist eine Art Kurzkommentar. Er wird in der Baumdarstellung der Testsuite angegeben und sollte etwas über die Funktion der Sequenz aussagen.
Variabel: Nein
Einschränkungen: Keine
- Name für separates Protokoll
-
Mit diesem Attribut kann ein Knoten als Bruchstelle zum Abteilen eines Protokolls markiert werden. Es legt den Dateinamen für das abgeteilte Protokoll fest. Nach Durchlaufen des Knotens wird das zugehörige Protokoll aus dem Hauptprotokoll entfernt und als eigenständiges Protokoll gespeichert. Diese Operation ist vollständig transparent, da das Hauptprotokoll eine Referenz auf das abgeteilte Protokoll erhält und somit vollständig navigierbar bleibt. Näheres zu geteilten Protokollen finden Sie in Abschnitt 7.1.6.
Dieses Attribut hat keinen Effekt, wenn die Option Geteilte Protokolle erzeugen deaktiviert ist oder geteilte Protokolle durch explizite Angabe von
-splitlog
im Batchmodus ausgeschaltet werden.Es ist nicht nötig für Eindeutigkeit der Dateinamen für abgeteilte Protokolle zu sorgen. Wo nötig hängt QF-Test eine Zahl an den Dateinamen an, um Konflikte zu vermeiden. Der Dateiname darf Verzeichnisse enthalten und es können - analog zur Angabe des Dateinamens für das Protokoll im Batchmodus - folgende Platzhalter in Kombination mit einem '%' oder '+' Zeichen verwendet werden:
Zeichen Bedeutung % '%'-Zeichen. + '+'-Zeichen. i Die aktuelle Runid wie mit -runid [<ID>]
angegeben.r Die Fehlerstufe des abgeteilten Protokolls. w Die Anzahl der Warnungen im abgeteilten Protokoll. e Die Anzahl der Fehler im abgeteilten Protokoll. x Die Anzahl der Exceptions im abgeteilten Protokoll. t Der Threadindex zu dem das abgeteilte Protokoll gehört (für Tests mit parallelen Threads). y Das aktuelle Jahr (2 Ziffern). Y Das aktuelle Jahr (4 Ziffern). M Der aktuelle Monat (2 Ziffern). d Der aktuelle Tag (2 Ziffern). h Die aktuelle Stunde (2 Ziffern). m Die aktuelle Minute (2 Ziffern). s Die aktuelle Sekunde (2 Ziffern). Tabelle 42.40: Platzhalter für das Attribut Name für separates Protokoll Variabel: Ja
Einschränkungen: Keine, Zeichen die für Dateinamen nicht zulässig sind werden durch '_' ersetzt.
- Variablendefinitionen
-
Hier können Sie Werte für Variablen definieren, die während der Ausführung der Children der Sequenz Gültigkeit besitzen. Näheres zur Arbeit mit der Tabelle finden Sie in Abschnitt 2.2.5. Eine detaillierte Erklärung zur Definition und Verwendung von Variablen finden Sie in Kapitel 6.
Variabel: Namen der Variablen nein, Werte ja
Einschränkungen: Keine
- Implizit Exceptions fangen
-
Wenn in einem der Children des Tests eine Exception auftritt, die nicht abgefangen wird, ist der Test normalerweise beendet. Das ist oft nicht wünschenswert, da man keine Information über den Testausgang der weiteren Children erhält.
Wenn Vorbereitung und Aufräumen so beschaffen sind, dass Sie den Ausgangszustand auch dann sicher stellen können, wenn eine Exception in einem normalen Child des Tests auftritt, können Sie hiermit die Exception implizit abfangen.
Anstatt dann bei einer Exception abzubrechen, protokolliert der Test diese und fährt mit dem Aufräumen fort. Anschließend wird der nächste Childknoten ganz normal mit Vorbereitung und Aufräumen ausgeführt.
Exceptions, die während der Vorbereitung oder des Aufräumen auftreten, können auf diesem Weg nicht abgefangen werden.
Variabel: Nein
Einschränkungen: Keine
- Maximaler Fehler
-
Wenn beim Ablauf des Tests innerhalb der Sequenz eine Warnung, ein Fehler oder eine Exception auftritt, wird dieser Status im Protokoll normalerweise an die übergeordneten Knoten weitergeleitet. Mit diesem Attribut können Sie den Fehlerstatus, den das Protokoll für diese Sequenz erhält, beschränken.
Hinweis Dieser Wert beeinflusst ausschließlich den Status des Protokolls und damit den Rückgabewert von QF-Test falls es im Batchmodus läuft (vgl. Abschnitt 1.7). Auf die Behandlung von Exceptions hat er keinen Einfluss.
Auch für die Erstellung kompakter Protokolle (vgl. Kompakte Protokolle erstellen), hat dieser Wert keinen Einfluss. Eine Sequenz, in der eine Warnung oder ein Fehler auftritt, wird nicht aus einem kompakten Protokoll entfernt, selbst wenn über dieses Attribut der Fehlerstatus auf "Keinen Fehler" zurückgesetzt wird.
Variabel: Nein
Einschränkungen: Keine
- Maximale Ausführungszeit
-
Zeit in Millisekunden, die der Knoten maximal ausgeführt werden soll. Nach Ablauf dieser Zeit wird der Knoten abgebrochen.
Variabel: Ja
Einschränkungen: >= 0
- QF-Test ID
-
Bei der Ausführung von Tests im Batchmodus kann beim Kommandozeilenargument
-test <Index>|<ID>
alternativ zum qualifizierten Namen die QF-Test ID des Knotens angegeben werden.Variabel: Nein
Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.
- Verzögerung vorher/nachher
-
Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.
Variabel: Ja
Einschränkungen: Leer oder >0
- Bemerkung
-
Hier können Sie einen beliebigen Kommentar eintragen.
Hinweis Für die ausführliche Dokumentation, insbesondere von Testfallsatz, Testfall oder Prozedur Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von Alt+Eingabe oder Klicken des
Buttons der Kommentar komfortabel bearbeitet werden kann.
Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.
Falls bei Komponenten Knoten in dem Bemerkungsfeld eine Eintragung gemacht wurde, wird der Knoten bei der Suche bzw. dem Löschen von ungenutzten Komponenten übersprungen.
Variabel: Ja
Einschränkungen: Keine
Prozedur installCustomWebResolver
Bis QF-Test 7 erfolgte die Zuordnung der funktionalen Komponenten zu HTML Objekten im
Normalfall über die Prozedur
qfs.web.ajax.installCustomWebResolver
aus der Standardbibliothek qfs.qft
.
Sie wurde durch den CustomWebResolver installieren Knoten ersetzt.

Die Erläuterung der Parameter finden Sie
in installCustomWebResolver
- Parameter, die der Parametersyntax
in installCustomWebResolver
- Parametersyntax.
Beispiele für die Verwendung der Prozedur Sie daran anschließend.
installCustomWebResolver
- Parameter
Die Parameter sind entsprechend ihrer Relevanz geordnet. Da die
Komponentenerkennung sehr oft auf der Zuordnung von CSS Klassen oder anderen
Attributwerten zu generischen Klassen von QF-Test basiert, sind somit die
Parameter genericClasses
und attributesToGenericClasses
an erster Stelle zu finden.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
installCustomWebResolver
- Parametersyntax
Wenn für einen Parameter mehrere Einträge möglich sind, so müssen die einzelnen Zuweisungen oder Ausdrücke in den Parameterlisten durch Kommas voneinander getrennt werden. Nach dem Komma kann ein Zeilenumbruch eingefügt werden, aber kein Leerzeichen!
Die Parametersyntax umfasst folgende Ausdrücke, nach Relevanz geordnet:
- %
-
%
gibt an, das die folgende Zeichenkette als regulärer Ausdruck interpretiert werden soll.%list.*
bezeichnet alle Werte, die mitlist
beginnen.Nutzbar für alle Parameter.
-
css-class
=generic class
-
Ordnet einem GUI-Element mit der angegebenen CSS Klasse eine QF-Test Komponente der angegebenen generischen Klasse zu.
css-button=Button
ordnet dem GUI-Element mit der CSS Klassecss-button
eine QF-Test Komponente mit der generischen KlasseButton
zu.Nutzbar im Parameter
.genericClasses
-
attribute
=value
=generic class
-
Ordnet einem GUI-Element mit dem angegebenen Attributwert eine QF-Test Komponente der angegebenen generischen Klasse zu.
role=toggle=RadioButton
weist Elementen mitrole
Attributen, die den Werttoggle
haben, QF-Test Komponenten der KlasseRadioButton
zu.Nutzbar im Parameter
attributesToGenericClasses
. -
TAG
=generic class
-
Ordnet einem GUI-Element mit dem angegebenen Tag eine QF-Test Komponente der angegebenen generischen Klasse zu. Tags müssen in Großbuchstaben angegeben werden.
LI=ListItem
ordnet einem GUI-Element mit dem Tagli
eine QF-Test Komponente mit der generischen KlasseListItem
zu.Nutzbar im Parameter
tagsToGenericClasses
. - @::ancestor=
classname oder TAG
-
Kann an einen Eintrag der Parameterliste angehängt werden. Der Eintrag wird nur dann ausgewertet, wenn eines der übergeordneten Objekte des GUI-Elements den angegebenen generischen Klassenamen oder das angegebene Tag (in Großbuchstaben) hat.
Nutzbar in allen Parametern.
Beispiel für den Parameter
tagsToGenericClasses
:LI=TableCell@::ancestor=TableRow
ordnet einem GUI-Element mit dem Tagli
eine QF-Test Komponente der generischen KlasseTableCell
zu, wenn ein übergeordnetes Element die KlasseTableRow
hat. - ...=
TAG
-
Die vorangehende Zuweisung wird nur ausgewertet, wenn das GUI-Element das angegebene Tag hat. Muss bei Bedarf vor
@::
stehen.
Tags müssen in Großbuchstaben angegeben werden.Nutzbar in allen Parametern.
Beispiel für den Parameter
genericClasses
:row=TableRow=SPAN
ordnet einem GUI-Element der CSS-Klasserow
eine QF-Test Komponente mit der generischen KlasseTableRow
zu, wenn das Tag den WertSPAN
hat.Beispiel für den Parameter
genericClasses
:row=TableRow=SPAN@::ancestor=Table
ordnet einem GUI-Element der CSS-Klasserow
eine QF-Test Komponente mit der generischen KlasseTableRow
zu, wenn das Tag den WertSPAN
hat und wenn eines der übergeordneten Elemente die Klasse.Table
hat.Beispiel für den Parameter
interestingByAttributes
:myid=%.*=CONTAINER
nimmt GUI-Elemente mit dem Tagcontainer
auf, aber nur, wenn das Attribut den Wertmyid
hat. - @::parent=
classname oder TAG
-
Kann an einen Eintrag der Parameterliste angehängt werden. Der Eintrag wird nur dann ausgewertet, wenn eines der übergeordneten Objekte des GUI-Elements den angegebenen generischen Klassenamen oder das angegebene Tag (in Großbuchstaben) hat.
Nutzbar in allen Parametern.
Beispiel für den Parameter
genericClasses
:css-data-row=TableRow@::parent=Table
ordnet dem GUI-Element mit der CSS Klassecss-data-row
eine QF-Test Komponente der generischen KlasseTableRow
zu, wenn das direkt übergeordnete GUI-Element die KlasseTable
hat. - @::parent<
level
>=classname oder TAG
-
Kann an einen Eintrag der Parameterliste angehängt werden. Der Eintrag wird nur dann ausgewertet, wenn eines der übergeordneten Objekte des GUI-Elements den angegebenen generischen Klassenamen oder das angegebene Tag (in Großbuchstaben) hat.
Die Ebene bezieht sich auf die von QF-Test aufgenommene Komponentenstruktur bzw. den generierten DomNode. Dies bedeutet, dass die Komponentenerkennung fehlschlagen kann, wenn sich die Webseite ändert oder Sie Resolver-Einträge ändern. Es könnte besser sein, statt dessen
@::ancestor
zu verwenden. Alternativ können Sie das entscheidende übergeordnete GUI-Element einer eigenen Klasse (oder Klassentyp) zuweisen und diese dann in@::parent
oder@::ancestor
einsetzen. Das Beispiel in CustomWebResolver – Baum (Tree) verdeutlicht diese Technik.Nutzbar in allen Parametern.
Beispiel für den Parameter
genericClasses
:css-button=Button:ComboBoxButton@::parent<3>=ComboBox
Nimmt einen Button mit dem TypComboBoxButton
auf, wenn der übergeordnete Knoten in Ebene drei die KlasseComboBox
hat. - @::ancestor<
level
>=classname oder TAG
-
Kann an einen Eintrag der Parameterliste angehängt werden. Der Eintrag wird nur dann ausgewertet, wenn eines der übergeordneten Objekte des GUI-Elements den angegebenen generischen Klassenamen oder das angegebene Tag (in Großbuchstaben) hat. (Ebenenzählung wie bei @::parent.)
Nutzbar in allen Parametern.
Beispiel für den Parameter
genericClasses
:cbx=CheckBox:ListItemCheckBox@::ancestor<3>=List
Nimmt eine CheckBox mit dem TypListItemCheckBox
auf, wenn einer der Knoten in den drei übergeordneten Ebenen die KlasseList
hat. -
attribute
=value
-
Nutzbar in den Parametern
ignoreByAttributes
undinterestingByAttributes
.Im Parameter
ignoreByAttributes
bewirkt die Zuweisung, dass GUI-Elemente mit dem angegebenen Attributwert in der Baumhierarchie nicht angelegt werden.Im Parameter
interestingByAttributes
bewirkt die Zuweisung, dass im Komponentenbaum Knoten für Elemente angelegt werden, die den angegebenen Attributwert aufweisen.Beispiel für den Parameter
ignoreByAttributes
:type=container
bewirkt, dass im Komponentenbaum keine Knoten für Elemente angelegt werden, bei denen das Attributtype
den Wertcontainer
hat.Beispiel für den Parameter
interestingByAttributes
:type=splitpane
bewirkt, dass im Komponentenbaum Knoten für Elemente angelegt werden, bei denen das Attributtype
den Wertsplitpane
hat.
Für Interessierte:
@::ancestor=class
nutzt intern die Objekt-Methode obj.getAncestorOfClass(class
).
@::ancestor<level
>=class
nutzt intern die
Objekt-Methode obj.getAncestorOfClass(class, level
)
@::parent= nutzt intern die Objekt-Methode obj.getParent()
@::parent<level
>= nutzt intern die Objekt-Methode
obj.getNthParent(level
)
Details zu den Methoden finden Sie in Pseudo DOM API für Web-Anwendungen.