Video zu den neuen Features in Version 4.2: 'QF-Test Features 4.2'.
Neue Features:
- Web
Das eingebettete Selenium WebDriver Framework wurde auf Version 3.13.0 aktualisiert und GeckoDriver auf
Version 0.21.0, welche auch Firefox Version 61 unterstützt.
Beseitigte Bugs:
-
Wurden durch ein QF-Test Update neue Benutzer- oder Systemeinstellungen eingeführt, so wurden diese
verworfen, wenn zwischendurch mit einer älteren QF-Test Version gearbeitet wurde. Ab QF-Test Version 4.2.5
bleiben solche Einstellungen immer erhalten.
- Web
Von Microsoft Edge in einer Hinweiszeile angezeigte Fehler werden nun automatisch geschlossen.
-
Wurde ein Oracle Datenbanktreiber in einer jar-Datei mit defektem Manifest in das Plugin-Verzeichnis von
QF-Test kopiert, konnten keine Testsuiten mehr geladen werden.
-
Bei Aktivierung einer Lizenz im Demo-Modus von QF-Test wird der Menüeintrag »Datei«-»Speichern« nun sofort aktiv.
Neue Features:
- Web
Das eingebettete Selenium WebDriver Framework wurde auf Version 3.12.0 aktualisiert und ChromeDriver auf
Version 2.40 (unterstützt Chrome bis Version 68). Firefox Version 60 wird ebenfalls unterstützt.
- Web
Auf Windows Insider Builds wird nun der neue Mechanismus zur Installation des Microsoft WebDrivers für
Edge erkannt und unterstützt.
Beseitigte Bugs:
-
Die Optionen zur interaktiven Auswahl der GUI Engine Lizenzen waren auch im Fall einer Lizenz mit
gemischten Engines deaktiviert.
-
Datentreiber für sehr große Excel Dateien brauchen nun weniger Speicher.
-
Der Export eines Test-Projekts aus Testlink für QF-Test wird eine vorhandene node_order Definition nun
korrekt behandelt.
-
Im Report wurden erwartete Fehler innerhalb von verschachtelten Testfällen als normale Fehler gezählt.
Außerdem sind erwartete Fehler im Protokoll nun besser zu erkennen.
-
Der 'Server HTTP Request' Knoten unterstützt nun leere Werte für HTTP Header.
-
Das Beenden von Clients funktioniert nun auch auf Windows Embedded Systemen sauber.
- Web
Der Start von Chrome unter Linux funktionierte in QF-Test Version 4.2.3 nicht zuverlässig.
- Web
Der Versuch, beim Start von Microsoft Edge ein nicht existierendes Cache-Verzeichnis zu entfernen, konnte
zu einer Exception führen.
Neue Features:
- Web
Das eingebettete Selenium WebDriver Framework wurde auf Version 3.11.0 aktualisiert und ChromeDriver auf
Version 2.38 (unterstützt Chrome bis Version 66) und GeckoDriver auf Version 0.20.1, welche auch Firefox
Version 59 unterstützt. Die 32 Bit Linux Version von ChromeDriver wurde aus QF-Test entfernt, da diese nicht
mehr von den Chrome Entwicklern unterstützt wird. Bei Bedarf kann die letzte verfügbare Version (2.33) vom
ChromeDriver
Archiv heruntergeladen werden.
-
QF-Test unterstützt nun das Shadow DOM API und somit Interaktionen mit Web-Elementen, die in ein offenes
ShadowRoot Element eingebettet sind.
-
Als Überbrückung, bis eine vollwertige Windows Engine für QF-Test verfügbar ist, wurde das
qfs.autowin
Package in der Standardbibliothek qfs.qft
um diverse Prozeduren
erweitert, die auf Basis von Windows UIAutomation einfache Tests für native Windows-Anwendungen
ermöglichen. Detaillierte Informationen hierzu finden Sie in Kapitel 50.
-
Wird der Mauszeiger über den Menüeintrag für einen verbundenen Client im »Clients« Menü bewegt, wird das Hauptfenster des entsprechenden Clients hervorgehoben.
-
Die neue Variablengruppe ${idlocal:...} ist analog zu ${id:...} mit dem zusätzlichen Effekt, dass die
Komponenten nur in der zum Zeitpunkt der Expansion aktuellen Testsuite gesucht wird (siehe Abschnitt 6.5).
-
Die Debug-Ausgaben zur Wiedererkennung von Komponenten im Protokoll sind nun lesbarer formatiert und können
- ebenso wie andere Textfelder im Protokoll - über das neue Tastenkürzel [Umschalt-Strg-Return] in einem externen Editor geöffnet werden.
Beseitigte Bugs:
-
Der "Veraltet" Warnungsdialog für Java WebStart in Java 9 oder höher wird nun automatisch von QF-Test
behandelt.
-
Beim Refactoring oder der Analyse von Testsuite werden
rc.callProcedure
Aufrufe nun in
überall berücksichtigt, d.h. in allen Attributen, die Variablen enthalten können.
-
Eine Datentreiber-Iteration unterhalb eines 'Testschritt' Knotens kann nun wie jede andere
Knoten-Iteration in QF-Test durch einen 'Break' Knoten abgebrochen werden.
- Web
Firefox im QF-Driver Modus unter Linux konnte bei der Bearbeitung spezieller nicht-UTF-8-kodierter
Zeichenketten abstürzen.
- Web
Mit Chrome im QF-Driver Modus funktionierten Mausklicks mit der rechten Maustaste in qooxdoo Anwendungen
nicht korrekt.
- Web
Ein fehlender "http:" Protokoll-Header in einer URL zur automatischen Proxy-Konfiguration wird nun
implizit korrigiert.
- JavaFX
Die Ermittlung des Namens für ein eingebettetes Swing Fenster aus dem umgebenen
JavaFX
SwingNode
Element funktioniert nun auch mit dem Java Update 8u171.
Neue Features:
- Web
Das eingebettete Selenium WebDriver Framework wurde auf Version 3.10.0 aktualisiert und ChromeDriver
auf Version 2.36 (unterstützt Chrome bis Version 66).
- Web
Für den Mobile Emulation Mode werden nun auch gerätespezifische Ränder unterstützt.
- JavaFX
Es werden nun JavaFX SubScene Komponenten unterstützt.
Beseitigte Bugs:
- Windows
Unter Windows waren die falschen
qftest.exe
und qftestc.exe
Dateien in die
Installationspakete gerutscht, so dass das bin
Verzeichnis des JRE immer noch vorne zur
Environment-Variable PATH hinzufügt wurde, was den Start des SUT behindern konnte. Außerdem war das
Kommandozeilenargument -plugindir <Verzeichnis>
dadurch außer Kraft gesetzt.
- Web
In QF-Test 4.2.1 konnte das Hervorheben einer Komponente beim Verbindungsmodus WebDriver dazu führen, dass
der Browser keine weiteren Eingaben akzeptierte.
- Web
Das webResolvers Modul (siehe Abschnitt 52.2) unterstützt nun auch die
Registrierung eines
BusyApplicationDetectors
.
Neue Features:
-
Es wird nun auch das Testen von SUTs mit Java 10 unterstützt.
- Web
Das eingebettete Selenium WebDriver Framework wurde auf Version 3.9.1 aktualisiert, ChromeDriver
auf Version 2.35 (unterstützt Chrome bis Version 64) und GeckoDriver auf Version 0.19.1, welche auch
Firefox Version 58 unterstützt.
- Web
Chrome kann mit Hilfe der neuen 'Prozedur'
qfs.web.browser.general.openMobileEmulation
in der Standardbibliothek qfs.qft
nun
auch im Mobile Emulation Mode gestartet werden.
- Web
Proxy Einstellungen werden für Firefox und Chrome nun auch beim Verbindungsmodus WebDriver unterstützt.
-
Bei Verschachtelung von Testfällen über 'Testaufruf' Knoten entscheidet nun das neue Attribut
'Verhalten wie Prozeduraufruf' darüber, wie Exceptions innerhalb des Aufrufs behandelt werden. Die somit
überflüssige Kompatibilitäts-Option "Testaufrufe innerhalb von Testfällen nicht wie Prozeduraufrufe
behandeln" wurde entfernt.
-
Die neue 'Prozedur'
qfs.utils.waitForOneOfNComponents
in der Standardbibliothek
qfs.qft
ermöglicht das Warten auf eine von mehreren möglichen Komponenten.
-
Die 'Prozedur'
qfs.utils.readTextFromFile
in der Standardbibliothek
qfs.qft
kann über den optionalen Parameter fileencoding
nun Dateien mit
unterschiedlichen Kodierungen verarbeiten.
-
Marken und Breakpoints können nun über Doctags @breakpoint, @red, @green etc. persistent gemacht werden.
Nähere Informationen zu Doctags finden Sie in Abschnitt 60.1.
-
Die Parameter
errorlevel
und newerrorlevel
des @rerun Doctags sind nun
optional (vgl. Abschnitt 23.3.2).
-
Das Attribut 'Datenbankpasswort' des 'Datenbank' Knotens kann nun
verschlüsselt werden.
-
Unter macOS unterstützt QF-Test nun die Anzeige im nativen Vollbildmodus, erreichbar über den Menüeintrag
»Ansicht«-»Vollbildmodus« oder das Tastenkürzel [⌃⌘-F]
-
Unter macOS wurde das Tastenkürzel zum erneuten Laden einer Testsuite zu [⌘-R] geändert.
- Linux
Unter Linux unterstützt der eingebettete Skript-Editor nun das Einfügen von Text über die mittlere
Maustaste.
Beseitigte Bugs:
-
Das PDF Anzeigeprogramm kann nun rotierte Dokumente darstellen.
-
In Groovy Skripten funktionierte der Aufruf
rc.callProcedure
bei Verwendung von
Keyword-Argumenten nicht mehr.
-
In Groovy Skripten lieferte
rc.getNum
versehentlich einen long statt einem int Wert.
-
In einzelnen Fällen konnte durch eine von QF-Test falsch gesetzte System Property der Start des SUT gestört
werden.
-
Das
bin
Verzeichnis des JRE, mit dem QF-Test ausgeführt wird, wird für das SUT nun am Ende der
Umgebungsvariable PATH
hinzugefügt und nicht vorne, wie dies in QF-Test Versionen vor 4.2 der
Fall war.
Die folgenden wichtigen neuen Features wurden für Version 4.2 von QF-Test implementiert:
| Beschreibung | Weitere Info |
---|
Unterstützung für Java 9 und Java 10
|
Aktuell nur SUT. Auch das neue Java Modulsystem "Project Jigsaw" wird unterstützt
|
Testen von PDF Dokumenten
|
Siehe Kapitel 17 |
JavaScript als neue Skriptsprache
|
Äquivalent zu Jython und Groovy, siehe Abschnitt 11.5 |
Unterstützung für Angular
|
Inklusive der UI Toolkits Bootstrap und AngularJS Material, siehe Abschnitt 49.2 |
Unterstützung für Smart GWT
|
Siehe Abschnitt 49.2 |
Spezielle Knoten für statische und live Unittests
|
Siehe 'Unit Test' Knoten
|
Webtests mit headless Browsern
|
Nur WebDriver Modus, benötigt Chrome 60 oder höher bzw. Firefox 56 oder höher
|
Testen von REST Services
|
Unterstützt GET, POST, HEAD, OPTIONS, PUT, DELETE und TRACE siehe 'Server HTTP Request' Knoten
|
Das QF-Test Tutorial wurde komplett neu geschrieben
| Tutorial |
|
| | Tabelle B.3: Highlights in QF-Test Version 4.2 | |
-
Die kombinierte Funktion des 'Browser starten/Browserfenster öffnen' Knotens wurde durch eigenständige
'Web-Engine starten' und 'Browser-Fenster öffnen' Knoten ersetzt. Die Konvertierung
erfolgt automatisch, sofern die Attribute des alten Knotens nicht widersprüchlich sind. In diesem Fall
bleibt der alte Knoten erhalten und funktioniert wie gehabt. Solche Knoten sollten bei Gelegenheit manuell
durch die neuen Varianten ersetzt werden.
-
Ein weiteres etwas überraschendes Feature beim Start des Browsers ist nun veraltet: Alle Prozeduren im
Package
qfs.web.browser.startup
erfordern nun eine bereits gestartete Web Engine.
Zur Rückwärtskompatibilität kann das implizite Starten eines Browsers über den neuen Parameter
'startBrowserIfNotRunning' wieder aktiviert werden.
-
Die Implementierung des
rc
Skript API wurde für alle Skriptsprachen vereinheitlicht. Dies
kann bei Jython zu kleinen Unterschieden führen, wenn Boolean Werte als Strings interpretiert werden, die
zwischen "True", "true" und "1" bzw. "False", "false" und "0" variieren. Problematisch ist dies nur bei
ungeschickt als Stringvergleich formulierten Boolean Tests wie "$(x)" == "false"
an Stelle
von not $(x)
.
-
Boolean Attribute, die mittels des '$' Buttons editierbar gemacht werden können, werden nun analog zum
'Bedingung' Attribute von 'If' Knoten als Jython Ausdruck evaluiert. In einzelnen
Fällen kann dies zu abweichenden Ergebnissen führen. Falls bestehende Tests nur an wenigen Stellen
betroffen sind, sollten diese angepasst werden, da das neue Verhalten flexibler und konsistenter ist.
Alternativ kann das alte Verhalten durch Aktivieren der Option
Ausdrücke in variablen boolean Attributen nicht evaluieren (vor 4.2) wieder hergestellt werden.
-
Der alte 'Test' Knoten wurde nun ausgemustert. Seine verbleibenden Spezialfunktionen stehen anderweitig
zur Verfügung: Für Datentreiber unterhalb der Testfall-Ebene können nun 'Datentreiber' Knoten in
einen 'Testschritt' Knoten platziert werden und das @noreport Doctag kann verwendet werden, um einen
'Testfall' Knoten vom Report auszuschließen (siehe Kapitel 60 für weitere
Informationen zu Doctags).
-
Die allgegenwärtigen Warnungen zu nicht-ganz-perfekter Wiedererkennung von Komponenten wurden nun zu
Meldungen herabgestuft. Bei Bedarf können die Warnungen über die Option
Warnung anstelle von Meldung ausgeben wieder hergestellt werden.
-
Werden Testfälle durch 'Testaufruf' Knoten verschachtelt, verhält sich der innere 'Testfall'
Knoten nun wie eine Prozedur. Dadurch ergeben sich minimale Abweichungen bei der Behandlung von
Exceptions. Im Problemfall kann das alte Verhalten über die Option "Testaufrufe innerhalb von Testfällen
nicht wie Prozeduraufrufe behandeln" wieder hergestellt werden.
- Web
Kommt für Webanwendungen ein
CustomWebResolver
zum Einsatz, liefern 'Text auslesen'
und 'Check Text' für TextField und TextArea Komponenten nun denselben Text. Zudem wird für
Zellen von Tabellen, Bäumen oder Listen, die als TextField oder TextArea implementiert sind, nun der
sichtbare Text ermittelt, so dass eventuell einige Checks nachgezogen werden müssen. Dieser Bugfix kann
über die Option Textermittlung von generischen Klassen nicht mit generischem Ansatz durchführen (vor 4.2) deaktiviert werden.
- Swing
Für Swing Anwendungen werden Tooltips nun generell als leer angesehen, wenn der Swing TooltipManager
deaktiviert wird.
Hinweis
Eine detaillierte Aufstellung der Systemvoraussetzungen und der unterstützten
Technologieversionen finden Sie in Abschnitt 1.1.
QFS bemüht sich um Rückwärtskompatibilität auch mit sehr alter Software. QF-Test läuft nach wie vor z.B. unter
Windows XP und mit einem auf Java 6 basierenden SUT, aber
wir können für Systeme, die von deren Herstellern nicht mehr unterstützt werden, keinen umfassenden Support
bieten.
Java 5 wird nicht mehr unterstützt. SUTs auf Basis von Java 6 können noch ausgeführt werden, indem
automatisch auf ältere Versionen von Jython und Groovy zurückgegriffen wird.
Bibliotheken für die Firefox Versionen 44-51 und die Eclipse/SWT Versionen 3.6 und älter sind nicht
Teil der Standard-Installation von QF-Test. Sie werden noch gepflegt, aber nur
eingeschränkt getestet. Für Eclipse/SWT 3.5 - 3.6 können Sie https://archive.qfs.de/pub/qftest/swt_legacy.zip herunterladen und in das swt
Verzeichnis
Ihrer QF-Test Installation entpacken. Für die Unterstützung älterer Browser wenden Sie sich bitte via
support@qfs.de
an QFS.
Änderungen im Vergleich zu QF-Test Version 4.1.6:
Neue Features:
-
QF-Test kann nun auf Java 9 basierende Anwendungen testen. Dies beinhaltet Unterstützung für das neue Java 9
Modulsystem ("Project Jigsaw"), ohne dass dafür auf den "Big Kill Switch", also das Kommandozeilenargument
--illegal-access
, zurückgegriffen werden muss.
-
PDF Dokumente können nun wie eine normale Anwendung getestet werden, mit textuellen und grafischen
Checks für einzelne Elemente.
-
JavaScript wurde als neue, zu Jython und Groovy gleichwertige Skriptsprache für 'Server Skript'
und 'SUT Skript' Knoten eingeführt. Der ECMAScript 8 Standard wird unterstützt und es sind
JavaScript Varianten aller QF-Test Module und Skript APIs wie Resolver,
rc
oder
autowin
vorhanden.
- Web
Es wird nun das beliebte AJAX Framework Angular inklusive der UI Toolkits Bootstrap und AngularJS Material
unterstützt.
- Web
Es wird nun das AJAX Framework Smart GWT unterstützt.
-
Über den neuen 'Unit Test' Knoten können JUnit Tests ausgeführt und deren Ergebnisse so in das QF-Test
Protokoll und den Report integriert werden. Tests können in Java oder als Skript implementiert und
statisch oder dynamisch ausgeführt werden, also 'live' im SUT als Alternative zum Schreiben von Mocks.
- Web
Es werden nun headless Webtests auf Basis der headless Varianten von Chrome und
Firefox unterstützt.
- Web
Der 'Server HTTP Request' Knoten unterstützt nun das Testen von REST Services über die zusätzlichen
Methoden HEAD, PUT, DELETE, TRACE und CONNECT. Zudem können nun eigene Header für den HTTP Request
angegeben werden.
-
Das QF-Test Tutorial wurde komplett neu geschrieben.
-
Der neu implementierte Schnellstart-Assistent verbindet einen stringenten Ablauf mit verbessertem Design.
-
Der »Hilfe«-»Info« Dialog
hat einen neuen Reiter namens "Systeminfo", unter dem viele QF-Test Einstellungen und Systeminformationen
angezeigt werden.
-
Attribute wie die 'Bedingung' eines 'If' Knotens, welche im Jython Interpreter
evaluiert werden, unterstützen nun Syntaxhervorhebung und Code-Vervollständigung.
- Web
Der eingebettete Chrome Browser für die Ansteuerung mit dem QF-Driver wurde zu CEF Version 57 aktualisiert.
-
Das Kommandozeilenargument
-run
funktioniert nun auch im interaktiven Modus und startet dort die
Testausführung automatisch beim Start von QF-Test. Zudem kann über das neue Argument -suitesfile <Datei>
für
Batch- und interaktiven Modus nun eine Textdatei angegeben werden, welche die auszuführenden Testsuiten
und Tests beinhaltet.
-
Mit folgenden neuen Argumenten kann eine laufende QF-Test Instanz von der Kommandozeile aus kontrolliert
werden. Mittels
-interrupt-running-instances
kann ein laufender Test auf der lokalen Maschine
angehalten werden und -kill-running-instances
beendet sauber alle laufenden QF-Test Instanzen - auch
interaktive - sofern diese mit dem Argument -allowkilling
gestartet wurden. Sauber bedeutet hier,
dass Batch Tests beendet, Abhängigkeiten abgebaut und Protokolle geschrieben werden.
- Windows
Das neue Windows Setup-Programm für QF-Test folgt den aktuellen Windows-Konventionen zur Aufteilung von
unterschiedlichen Dateien auf verschiedene Ordner. Es gibt weiterhin eine Option, um das alte Layout mit
allen Dateien an einem Ort beizubehalten.
- Mac
Unter macOS können Programm-Parameter für QF-Test nun in den Allgemeinen Optionen in QF-Test selbst definiert
werden.
- Mac
Eine macOS App kann nun direkt im 'Ausführbares Programm' Attribut eines
'SUT Client starten' Knotens angegeben werden.
-
Ein 'Sequenz' Knoten kann nun auch in eine 'Schleife' oder einen
'While' Knoten transformiert werden.
-
Aufrufe von veralteten Prozeduren oder Testfällen werden in der Baumansicht nun ebenfalls durchgestrichen
dargestellt.
-
Der 'Properties laden' Knoten unterstützt mit seinem neuen Attribut
'Zeichenkodierung der Datei ist UTF-8' nun auch das Laden von Properties Dateien in UTF-8 Kodierung.
-
Komponenten im SUT werden nun immer automatisch hervorgehoben, wenn eine Komponente oder ein Event Knoten
im Baum angeklickt wird, unabhängig davon, ob der Knoten schon selektiert war oder nicht.
Falls das automatische Hervorheben über die Option Selektierte Komponente im SUT hervorheben ausgeschaltet ist,
kann es nun auch explizit über das Kontextmenü eines Knotens oder der QF-Test ID einer Komponente in
Parameter-Tabellen oder Skripten ausgelöst werden.
-
Die Boolean Werte im 'Weiteres Merkmal' Attribut einer 'Komponente' oder dem
'Elemente' Attribute eines 'Check Elemente' Knotens können nun auch per Variable
definiert werden. Die Zellen können hierzu per Doppelklick editierbar gemacht werden.
- Web
Das neue
webResolvers
Modul ermöglicht die Implementierung von Resolvern in JavaScript Code,
der direkt im Browser ausgeführt wird. Detaillierte Informationen und Beispiele hierzu finden Sie in
Abschnitt 52.2.
-
Das weitere Merkmal qfs:label bezieht sich nun auch auf Window und Dialog Komponenten.
-
Es gibt einige neue (oder neu dokumentierte) Kommandozeilenargumente zum Überschreiben der für QF-Test
relevanten Verzeichnisse QF-Test, darunter
-userdir <Verzeichnis>
, -systemdir <Verzeichnis>
, -jythondir <Verzeichnis>
,
-groovydir <Verzeichnis>
, -javascriptdir <Verzeichnis>
, -plugindir <Verzeichnis>
und -logdir <Verzeichnis>
.
-
Die
qftest
Property-Gruppe wurde um Definitionen für einige Verzeichnisse der QF-Test
Installation erweitert, z.B. ${qftest:dir.log}
für das Verzeichnis, in dem Protokolle
abgelegt werden. Eine vollständige Auflistung finden Sie in Abschnitt 6.5.
-
Die Sortierreihenfolge von Parameter-Tabellen wie dem 'Variablen Definitionen' Attribut eines
'Prozeduraufruf' Knotens kann über das Popupmenü der Tabelle nun auf die Anordnung der Parameter im
aufgerufenen Knoten zurückgesetzt werden.
Beseitigte Bugs:
-
Beim Konvertieren in einen regulären Ausdruck wird im Attribut 'QF-Test ID der Komponente' nun korrekt zwischen der ID
selbst und der Syntax für Unterelemente unterschieden.
-
Unter Ubuntu Linux konnten keine Thread Dumps vom SUT genommen und keine Unterprozesse des SUT terminiert
werden.
-
Unicode-Zeichen außerhalb der Basic Mulitilingual Pane (BMP) werden nun korrekt behandelt.
- Swing
TooltipResolver werden nun auch für nicht-Swing AWT Komponenten aufgerufen.
- Web
Die Prozedur
qfs.web.general.integrateFirebug
lädt Firebug nun über https statt
http, wodurch Probleme mit Inhalt aus verschiedenen Quellen vermieden werden.
- Web
In einzelnen Fällen konnte der Text eines MenuItems in einer Webanwendung fälschlicherweise auch den Text
seiner untergeordneten MenuItems enthalten.
- Web
Das Erzeugen vieler eingebetteter WebView oder SWT Browser Instanzen konnte zu einem Memory Leak führen.
- JavaFX
Die Ausführung eines JavaFX SUT über WebStart konnte zu IllegalAccessExceptions führen.
- JavaFX
Namen für die Reiter eines JavaFX TabPanel beziehen sogenannte Graphic Elemente nun korrekt ein.