28. Februar 2022
4 Kurztipps aus dem QF-Test Support
Tag ein, Tag aus liest und beantwortet unser fleißiges Supportteam die Fragen unserer Kunden, die vor allem per Mail bei uns eingehen. Um etwas von dieser gesammelten Weisheit weiterzugeben, kommen hier einige dieser Fragen zu QF-Test und unsere Antworten.
Wie benutzt man einen Text Check mit einem Datentreiber-Eintrag
Einer unserer Kunden hatte einen Datentreiber eingerichtet, um seine Datenbank abzufragen, und wollte einen "Check Text"-Knoten benutzen, um den Text eines Datenbankeintrags zu prüfen statt den Text einer GUI-Komponente.
Leider bezieht sich ein "Check Text"-Knoten immer auf eine GUI-Komponente as Quelle. Aber das Gleiche lässt sich leicht mit einem kurzen SUT-Skript erreichen:
rc.checkEqual( rc.lookup("variableMitDatentreiberDaten"), rc.lookup("variableMitErwartetemWert"), "Prüfen ob der Datentreiber die erwarteten Daten enthält" )
Wie vergleicht man zwei Datentreiber-Quellen miteinander
Der nächste Fall hat auch mit Datentreibern zu tun.
Ein Kunde wollte Werte aus einer Datenbank mit einem anderen Datensatz (aus einer Datentabelle) vergleichen. Der Kunde stellte fest, dass Datentreiber zu verschachteln oder zwei Quellen in einem Datentreiber anzugeben nicht die gewünschte Wirkung hatten. (Zwei Quellen in einem Datentreiber anzugeben hat den Effekt, über das Kreuzprodukt beider Quellen zu iterieren, was zwar cool ist, aber nicht was wir hier wollen).
Also: gibt es einen Weg, durch die Reihen der Datentabelle mit dem Zähler des Datenbanktreibers zu iterieren? Ja! Um die Elemente eines Datentreibers mit den Elementen einer anderen Datenbankabfrage zu vergleichen, können Sie folgendermaßen vorgehen:
Benutzen Sie vor der Iteration über die eigentlichen Daten die Prozedur qfs.database.executeSelectStatement
aus der Standardbibliothek, um die Referenzdaten in eine Variablengruppe "erwarteteWerte" zu laden.
Dann können Sie innerhalb der Datentreiberschleife so Checks durchführen:
rc.checkEqual(
rc.lookup("variableMitDatentreiberDaten"),
rc.lookup("erwarteteWerte", "dataColumn:" + rc.lookup("counter")),
"Prüfen ob der Datentreiber die erwarteten Daten enthält"
)
Wie filtert man Fehlermeldungen aus dem QF-Test Terminal
Ein anderer Kunde hatte eine Frage zu einer Fehlermeldung aus seinem SUT, die das QF-Test Terminal überfüllt hat, wodurch wichtige Log-Informationen übersehen wurden.
Auch wenn QF-Test Fehler in einem SUT natürlich nicht verhindern kann, ist es doch über einen "Output Filter" möglich, QF-Test bestimmte Nachrichten aus den Terminalausgaben herauszufiltern zu lassen.
Das geht, indem man das folgende Doctag im Kommentarfeld des "Web-Engine starten" Knotens einfügt:
@outputFilter drop [regulärer Ausdruck für die zu filternden Nachricht]
Wie prüft man, ob eine Variable zur Laufzeit gesetzt ist
Die letzte Kundenfrage für Heute dreht sich um Variablen. Ein Kunde wollte wissen, wie man während eines Testlaufs prüft ob eine QF-Test Variable einen Wert zugewiesen bekommen hat oder nicht.
Allgemein wird der Zugriff auf eine "ungebundene" Variable eine Exception vom Typ "UnboundVariableException" auslösen. Sie könnten diese Exception natürlich mit einem "Try"- und "Catch"-Knoten abfangen. Aber es gibt für die meisten Situationen einen einfacheren Weg.
Anstatt auf die Variable mit $(meineVariable)
zuzugreifen, können Sie die spezielle default
-Gruppe verwenden, um für den Fall, dass die Variable nicht gesetzt ist, einen Standardwert zu definieren: ${default:meineVariable:MeinStandardwert}
.
Das war's für Heute! Wenn Sie Ihre eigene Frage zur Verwendung von QF-Test haben, wenden Sie sich gern direkt an unser Support-Team.