Tests automatisés pour les interfaces graphiques Java Swing

Quelles sont les options disponibles pour créer des tests automatisés pour les interfaces graphiques écrites en Java Swing?

Je voudrais tester certaines interfaces graphiques qui ont été écrites en utilisant le GUI Builder de NetBeans , donc quelque chose qui fonctionne sans exiger une altération spéciale du code sous test serait idéal.

Récemment, je suis tombé sur FEST, qui semblait prometteur, sauf que le développeur avait annoncé en 2012 que le développement ne se poursuivrait pas .

AssertJ est un fork de FEST qui fonctionne très bien pour moi. Il est activement maintenu (au moment de l’écriture), prend en charge Java 8, a des assertions pour quelques bibliothèques populaires telles que Guava et Joda Time, et est très bien documenté. Il est également gratuit et ouvert.

J’utilise actuellement FEST . Il fonctionne avec JUnit et prendra également des captures d’écran des tests ayant échoué.

Il a des méthodes de recherche de composants par défaut qui recherchent le nom du composant à tester (qui doit être défini manuellement), mais vous pouvez également générer les testeurs pour un composant donné en lui transmettant le composant.

Vous pouvez essayer d’utiliser Cucumber et Swinger pour écrire des tests d’acceptation fonctionnels en anglais pour les applications d’interface graphique Swing. Swinger utilise la bibliothèque Jemmy de Netbeans sous le capot pour piloter l’application.

Concombre vous permet d’écrire des tests comme celui-ci:

Scenario: Dialog manipulation Given the frame "SwingSet" is visible And the frame "SwingSet" is the container When I click the menu "File/About" Then I should see the dialog "About Swing!" Given the dialog "About Swing!" is the container When I click the button "OK" Then I should not see the dialog "About Swing!" 

Jetez un oeil à cette démo vidéo Swinger pour le voir en action.

J’utilise java.awt.Robot . N’est pas gentil, n’est pas facile mais fonctionne à chaque fois.

Avantages:

  • Vous êtes en contrôle
  • Très vite
  • Construisez votre propre FWK
  • Portable
  • Pas de dépendances externes

Les inconvénients:

  • Pas de bonne interface graphique pour construire un test
  • Vous devez laisser l’interface graphique seule pendant que vous testez
  • Construisez votre propre FWK
  • Difficile de changer le code de test et de créer votre premier harnais

Maintenant, si vous avez le budget, j’irais pour LoadRunner. Meilleur en classe

(Divulgation: relation avec la société propriétaire de LR, mais j’ai travaillé avec LR avant la relation)

Nous considérons jemmy pour automatiser une partie des tests de l’interface graphique. Cela semble prometteur.

Je ne l’ai pas utilisé personnellement, mais SwingUnit semble très bien. Vous pouvez l’utiliser avec jUnit, qui n’est pas basé sur “l’emplacement des composants” (c.-à-d. Les coordonnées x et y).

La seule chose que vous pouvez avoir à faire avec NetBeans GUI Builder est de définir des noms uniques pour vos composants.

Nous utilisons QF-Test et sums plutôt satisfaits.

UISpec4J est assez simple, sans blocus et extensible. Cela correspond mieux à mes objectives que FEST.

Sikuli: un testeur graphique utilisant des captures d’écran http://sikuli.org/

Vous pouvez utiliser Marathon : “MarathonITE, l’environnement de test intégré Marathon, est une infrastructure d’automatisation de test d’interface utilisateur graphique Java / Swing ™ abordable, facile à utiliser et multiplateforme. en Python ou en Ruby. Des fonctionnalités avancées telles que le refactoring de méthodes par extraction, les tests de création de données et l’édition d’objectmap vous permettent de créer des suites de tests résiliables et maintenables.

Vous pouvez essayer ReTest , un nouvel outil qui met en œuvre une approche innovante des tests de régression fonctionnelle et le combine avec les tests de singe basés sur l’IA. Il est sur le sharepoint devenir aussi open source …

Disclaimer: Je suis l’un des fondateurs de l’entreprise derrière ReTest.

Pour ceux qui ont l’esprit aventureux, il y a https://github.com/robertoaflores/Gooey un outil de test programmatique (très basique et sous-développement) pour les applications de swing.

Je viens de faire quelques balayages rapides. squisch était le plus prometteur. Pas gratuitement si

Vous pouvez utiliser sikuli ou Automa pour tester votre interface graphique, ces outils sont bien documentés et testés.