# QF-Test

QF-Test ist eine kommerzielle Software des Unternehmens Quality First Software zum automatischen Testen von Programmen über deren grafische Benutzeroberfläche. Das Programm unterstützt Java-Oberflächen (Java/Swing, SWT, Eclipse-Plugins und RCP-Anwendungen, ULC und JavaFX) sowie die browserübergreifende Testautomatisierung statischer und dynamischer Webseiten (HTML und Webframeworks wie Angular, Ext JS, Fluent UI React, GWT, ICEfaces, JQuery UI, Qooxdoo, RAP, RichFaces, React, Smart GWT, Vaadin, Vue.js und ZK). Ab Version 4.1 kamen noch Support für macOS sowie die Browser Apple Safari und Microsoft Edge via Selenium WebDriver hinzu. Ab Version 5.0 können auch Windows-Anwendungen getestet werden (Klassische Win32 Anwendungen, .Net-Framework-Anwendungen (oft mit C# entwickelt), basierend auf Windows Presentation Foundation (WPF) oder Windows Forms, Windows Apps / Universal Windows Platform (UWP) Anwendungen, die XAML Steuerelemente verwenden) und moderne C++ Anwendungen (etwa Qt Anwendungen). Mit Version 5.3 kam die Unterstützung für das Chrome DevTools Protocol hinzu, womit Browser mittels CDP-Driver angesteuert werden können.

## Beschreibung

QF-Test (2001 zunächst als qftestJUI veröffentlicht) ermöglicht sowohl automatisierte Regressions- als auch Lasttests und läuft auf Windows, Unix und macOS. Der kommerzielle Einsatz erfolgt primär von Testern, Entwicklern oder Businessanalysten (Modellierungen, low code Ansätze) mit oder ohne Programmierkenntnissen im Rahmen der Software-Qualitätssicherung. Seit Dezember 2008 steht eine Webtesterweiterung für die Testautomatisierung browserbasierter GUIs (wie Internet Explorer, Mozilla Firefox Browser Chrome, Safari und Microsoft Edge) zur Verfügung, zusätzlich zur existierenden Java-GUI-Testfunktionalität, welche Juli 2014 noch um JavaFX erweitert wurde. Ab 2018 mit der QF-Test Version 4.2 können PDF-Dokumente getestet werden, seit 2020 auch native Desktop-Anwendungen (QF-Test Version 5) und 2022 kam das Testen von mobilen Anwendungen hinzu. Basis für einen effizienten Einsatz bei der Testautomatisierung ist eine stabile Komponentenerkennung (IDs, logische Bildschirmelemente, Labels, CustomWebResolver, SmartID…) mit geringem Pflegeaufwand.

## Features

Allgemein: Die Capture/Replay-Funktion von QF-Test ermöglicht Anfängern die Aufzeichnung von Tests, während die Modularisierung die Erstellung großer Testsuiten in einer übersichtlichen Anordnung ermöglicht. Für den fortgeschrittenen Benutzer, der noch mehr Kontrolle über seine Anwendung benötigt, bietet das Tool Zugriff auf interne Programmstrukturen über die Standard-Skriptsprachen Jython, die Java-Implementierung der beliebten Sprache Python, JavaScript und Groovy.
Das Tool bietet auch einen Batch-Modus, der es ermöglicht, Tests unbeaufsichtigt auszuführen und anschließend XML-, HTML- und JUnit-Berichte zu generieren. So kann das Tool in bestehende Build/Test-Frameworks wie Jenkins, Ant oder Maven integriert werden. Ein weiterer Modus ist der sogenannte Daemon-Modus für die verteilte Testausführung.
Eine spezifische Integration mit vielen Testmanagement-Tools ist vorhanden. Es gibt einen Test-Debugger (der beliebige Steps und die Bearbeitung von Variablen zur Laufzeit ermöglicht) und ein vollautomatisches Abhängigkeitsmanagement, das sich um Vor- und Nachbedingungen kümmert und bei der Isolierung von Testfällen hilft. Datengesteuertes Testen DDT ohne Skripting ist möglich.
1. Webtesten: browserübergreifend auf Internet Explorer, Chrome, Firefox, Edge (auch Chromium basiert), Opera und Safari für statische und dynamische Webseiten (HTML5, AJAX, DOM). In den Tests kann auch ein headless Browser verwendet werden. QF-Test unterstützt umfassend Frameworks wie Angular, React und Vue.js, aber auch viele konkrete UI-Toolkits wie Smart (GWT), GXT/ExtGWT, ExtJS, ICEfaces, jQuery UI, Kendo UI, PrimeFaces, Qooxdoo, RAP, RichFaces, Vaadin und ZK. Eine einfache Integration mit Selenium hilft den Spagat zwischen Entwicklungstests und fachlichen Tests einfach umzusetzen. Electron Anwendungen können auch getestet werden.
Weitere (z. B. SAP UI5, Siebel Open UI, Salesforce) und zukünftig erscheinende Web Toolkits können mit wenig Aufwand integriert werden. Kurzfristige und individuelle Anpassungen (CustomWebResolver) sind über eine optimierte Schnittstelle möglich.
2. JavaFX, Java Swing, SWT, Eclipse Plugins und RCP-Anwendungen und ULC. Unterstützung von Tests bei der Migration von JavaSwing oder JavaFX in Webanwendungen (z. B. über Webswing).
Es werden auch hybdride Anwendungen unterstützt, die auf mehrere Technologien gleichzeitig basieren, so auch z. B. Anwendungen, die mittels JxBrowser HTML-Inhalte in Java-Anwendungen integrieren.
3. Windows-basierte Anwendungen (Win32, .NET, Windows Forms, WPF, Windows Apps, Qt).
4. Android Anwendungen können auf echten Geräten und mit dem Emulator von Android Studio getestet werden.
5. iOS Anwendungen können ebenfalls auf echten Geräten und mit dem Xcode Simulator getestet werden.
6. Eine der vielen Spezialitäten von QF-Test ist auch das Testen von PDF-Dokumenten (Dokumentenvergleiche, Prüfen von Inhalten, Texten, Bildern/grafischen Objekten, Layouts, „unsichtbare“ oder teilverdeckte Objekte).
7. QF-Test 9 führt Barrierefreiheitstests für Webanwendungen ein, um automatisch die Einhaltung der WCAG und anderer Standards zu überprüfen.