# QF-Test

QF-Test est un logiciel propriétaire multiplateforme d'automatisation de tests d'IHM (interface graphique) développé par la société allemande Quality First Software. Cet outil permet l'automatisation de tests d'interfaces basées sur les technologies Java Swing / SWT, plugins Eclipse et applications RCP ULC et JavaFX. QF-Test supporte de même la mise en tests des application web statiques ou dynamiques (HTML Frameworks web comme Angular, ExtJS, FluentUI React, ICEfaces, jQuery UI, jQuery EasyUI, Qooxdoo, RAP, React, RichFaces, SmartGWT, Vaadin, VUE.js et ZK). La version 4.1 du logiciel ajoute le support pour MacOS et les navigateurs Apple Safari et Mircosoft Edge. À partir de la version 5.0 on peut tester des applications Windows (Applications Win32 classiques, applications .NET (souvent développés en C#) basées sur Windows Presentation Foundation (WPF) ou Windows Forms, Windows Apps / Universal Windows Platform (UWP) utilisant des controls XAML, applications C++ modernes (par exemple des applications Qt))
La version 5.3 ajoute la prise en charge du protocole Chrome DevTools, ce qui permet de piloter les navigateurs à l'aide de CDP Driver.

## Description

QF-Test (publié en 2001 sous le nom de qftestJUI) permet l'automatisation de tests graphiques, de non-régression, de charge, de performance, dirigé ou non par un jeu de données (Data-driven testing en anglais).
Il s’exécute sur Windows et la plupart des systèmes Linux/Unix et macOS. L’application commerciale est principalement utilisée par des testeurs et des développeurs dans le domaine de l’Assurance Qualité. Depuis fin 2008, une extension web pour tester les interfaces sur les navigateurs web (Internet Explorer, Mozilla Firefox, Google Chrome, Safari et Microsoft Edge) est disponible. Depuis 2018 avec la version QF-Test 4.2 les fichiers PDF peuvent être testés et depuis 5.0 en 2020 QF-Test peut tester des applications Windows natives. En 2022, les tests d'applications mobiles ont été ajoutés. La base d'une utilisation efficace lors de l'automatisation des tests est une reconnaissance stable des composants (IDs, éléments d'écran logiques, labels, CustomWebResolver, SmartID...) avec peu d'entretien.

## Caractéristiques

La fonction de capture/relecture de QF-Test permet aux débutants d'enregistrer des tests, tandis que la modularisation permet de créer de grandes suites de tests de manière concise. Pour l'utilisateur avancé qui souhaite avoir encore plus de contrôle sur son application, l'outil offre un accès aux structures internes du programme grâce aux langages de script standard Jython , l'implémentation Java du langage populaire Python, JavaScript et Groovy.
L'outil propose également un mode batch, qui permet d'exécuter des tests sans surveillance et de générer ensuite des rapports XML, HTML et JUnit. L'outil peut ainsi être intégré dans des cadres de construction/test existants tels que Jenkins, Ant ou Maven. Un autre mode est le mode Daemon pour l'exécution de tests distribués.
Il existe une intégration spécifique avec de nombreux outils de gestion des tests. Il y a un debugger de test (permettant des étapes arbitraires et l'édition de variables au moment de l'exécution) et une gestion des dépendances entièrement automatisée qui prend en charge les pré et postconditions et aide à isoler les cas de test. Il est possible d'effectuer des tests basés sur des données sans avoir recours à des scripts.QF-Test supporte des structures dynamiques complexes comme des arborescences et des tableaux, offre une identification fiable des composants rencontrés ainsi qu'une IDE à l’interface utilisateur intuitive.
1. Tests web : tous navigateurs confondus sur Internet Explorer, Chrome, Mozilla Firefox, Edge (y compris basé sur Chromium), Opera et Safari pour les sites web statiques et dynamiques (HTML5, AJAX, DOM). Un navigateur sans tête peut également être utilisé pour les tests. QF-Test supporte entièrement des frameworks comme Angular, React et Vue.js, mais aussi de nombreux toolkits d'interface utilisateur spécifiques comme Smart (GWT), GXT/ExtGWT, ExtJS, ICEfaces, jQuery UI, Kendo UI, PrimeFaces, Qooxdoo, RAP, RichFaces, Vaadin et ZK. L'intégration aisée avec Selenium permet d'équilibrer facilement le développement et les tests fonctionnels. Les applications Electron peuvent également être testées. D'autres (par exemple SAP UI5, Siebel Open UI, Salesforce) et futurs kits d'outils web peuvent être intégrés avec peu d'efforts. Des personnalisations à court terme et individuelles (CustomWebResolver) sont possibles grâce à une interface optimisée.
2. JavaFX, Java Swing, SWT, plug-ins Eclipse, applications RCP et ULC. Prise en charge des tests lors de la migration de JavaSwing ou JavaFX vers des applications web (par exemple via Webswing).
3. Les applications hybrides basées sur plusieurs technologies sont également prises en charge, par exemple les applications qui intègrent du contenu HTML dans des applications Java à l'aide de JxBrowser.
4. Applications basées sur Windows (Win32, .NET, Windows Forms, WPF (Windows Presentation Foundation), Windows Apps, Qt).
5. Les applications Android peuvent être testées sur des appareils réels et avec l'émulateur Android Studio.
6. Les applications iOS peuvent également être testées sur des appareils réels et avec le simulateur Xcode.[1]
7. Test de documents PDF (comparaison de documents, vérification du contenu, des textes, des images/objets graphiques, des mises en page, des objets "invisibles" ou partiellement cachés).
8. QF-Test 9 introduit les tests d'accessibilité pour les applications web afin de vérifier automatiquement la conformité aux WCAG et autres standards.