SIKULI semble avoir un potentiel énorme. Quelqu'un a-t-il essayé de l'utiliser comme outil de test? Ou conviendrait-il mieux d'automatiser les actions pour les utilisateurs?
Citation Test unitaire pour l'interface graphique (dans le projet Documentation ):
Sikuli est conçu pour prendre en charge les tests unitaires de l'interface graphique en s'intégrant à Junit. Le panneau de test des unités peut être ouvert en cliquant sur View/Unit Test ou par le raccourci Cmd-U sur Mac (ou Ctrl-U sur Windows/Linux).
Ainsi, bien que ma compréhension soit que SIKULI est initialement destinée à l’automatisation d’interface graphique, elle peut certainement être utilisée pour les tests d’interface graphique (qui est étroitement liée si vous considérez que le test d’interface graphique = automatisation d’interface graphique + cadre de vérification). Jetez un oeil sur Test des unités pour l'interface graphique (JEdit) pour un exemple complet (et voir la assertXXX
sur les images).
Et en effet, je vois un grand potentiel dans SIKULI pour les tests, car cela semble rendre l’écriture des tests très facile, même sans une seule ligne de l’application réelle écrite (en utilisant juste quelques maquettes initiales, par exemple). SIKULI pourrait devenir un excellent compagnon pour différents types de tests (BDD, tests d'acceptation, etc.).
C'est vraiment un logiciel incroyable, très impressionnant.
J'utilise beaucoup Sikuli pour l'automatisation des tests d'interface utilisateur. Je suis "en retard" pour le parti Sikuli, après l'avoir découvert en janvier 2011. En fait, je suis heureux de l'avoir découvert en retard, car, même si c'était prometteur plus tôt, je ne pense pas avant Sikuli x1.0-rc1 (qui s'est passé en décembre ) a été publié qu'il était prêt pour primetime.
Auparavant, j'avais déjà utilisé TestQuest et EggPlant pour l'automatisation des tests d'interface utilisateur. À mon avis, Sikuli les bat tous les deux haut la main. Je crois sincèrement que cela peut potentiellement changer radicalement la façon dont les gens effectuent l'automatisation des tests d'interface utilisateur pour le meilleur et que cela sera évangélisé pour les gens qui m'entourent.
Sikuli est utilisé correctement, cela signifie que vous êtesnonconformément à un modèle "d'enregistrement et de lecture". Au lieu de cela, vous devez aborder le développement de l'automatisation des tests avec Sikuli - comme vous en avez besoin avec tous les outils - en tant que tâche de développement logiciel.
Nous sommes actuellement en train de porter sur Sikuli un DSL (langage spécifique au domaine) que nous avons créé pour EggPlant. L'une des fonctionnalités clés que nous utiliserons dans notre DSL est la capacité de reconnaissance de texte de Sikuli. Cela nous permettra d'exécuter le même script sur différentes versions localisées de notre produit.
Parce que Sikuli repose sur OpenCV (pour la reconnaissance d'image) et tesseract-ocr (pour la reconnaissance de texte) , il dispose d'une puissance et d'une flexibilité incroyables.
Voir également le document: http://groups.csail.mit.edu/uid/projects/sikuli/sikuli-chi2010.pdf
Enregistrement d'un flux de travail avec une application Web Flex. Il m'a fallu du temps pour trouver une stratégie fiable pour créer les captures d'écran, mais une fois que je l'ai fait, le script a continué à fonctionner même après que j'ai changé le jeu de couleurs de mon bureau! La syntaxe devient un peu gênante lorsque vous devez cliquer sur un contrôle spécifique dans une collection de contrôles similaires, c.-à-d. Des cases à cocher, des champs de saisie. Il semblerait que la seule façon de le faire consiste à utiliser find()
en combinaison avec right(); left(); inside()
. On dirait que plus les captures d'écran sont petites, plus elles sont détectées de manière fiable. Une bonne pratique serait d’inclure uniquement les objets importants sur les captures d’écran et de les rendre aussi atomiques que possible, mais sans compromettre leur unicité.
Pour une automatisation de test moins centrée sur le développeur pour Sikuli, consultez également RobotFramework.org. Un tutoriel explique comment créer une bibliothèque de tests (personnalisée) Sikuli pour Robot Framework
http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html
et j'ai créé une version générique simple, ainsi
http://code.google.com/p/simplesikuli
Et s'il y a déjà eu des limitations pour Sikuli en termes de gestion des fenêtres, de commandes de l'interface graphique, d'interaction souris/clavier, vous pouvez toujours la compléter avec un autre excellent outil de test gratuit: AutoIt. AutoIt a lui aussi des limites: lorsque vous le combinez avec Sikuli, ils compensent les inconvénients de chaque outil pour remplacer les outils de test d'interface graphique de qualité commerciale.
@jordan, Absolutley spot on 'Si vous utilisez correctement Sikuli, vous ne suivez pas un modèle "d'enregistrement et de lecture". Au lieu de cela, vous devez aborder le développement de l'automatisation des tests avec Sikuli - comme vous en avez besoin avec tous les outils - en tant que tâche de développement logiciel.
J'ai créé une solution d'automatisation de test de bout en bout pour tester une application de vidéoconférence conçue par le plus grand fabricant de PC au monde. Ils ne comprenaient pas que c'était un projet de développement complet, pas une opération de type pointer-cliquer que n'importe quel singe pouvait exécuter. Essayer d'expliquer les défis du codage avec un langage typé dynamiquement était impossible.
D'après mon expérience, le plus grand défi est la gestion de l'image. J'ai utilisé le système de fichiers et configparser pour la première itération de l'automatisation de test. L'utilisation de configparser a fonctionné, mais sa mise en œuvre a été difficile. À l'avenir, je prévois d'utiliser des blobs. Sikuli ne supporte pas (encore) l'extraction directe d'images à partir d'une base de données, même si j'ai un moyen de contourner le problème.
L'utilisation d'un IDE est essentielle car le Sikuli IDE ne dispose pas d'outils de développement. Les 2 IDE que j'ai configurés, NetBeans et Eclipse/PyDev ont leur propre ensemble de problèmes. Ils sont parfaits pour coder les fausses erreurs, l’injection d’espaces blancs et la perte de code ne sont pas des solutions idéales. Je code et teste dans NetBeans, exécute dans SikuliIDE et sauvegarde le tout dans le bloc-notes en tant que sauvegarde.
Malgré toutes les difficultés rencontrées, je suis un grand partisan de Sikuli. Sikuli a le potentiel de changer l’automatisation des tests en le rendant accessible à l’ensemble de la communauté QA sans avoir à être un codeur OO.
Je viens de publier mon propre cadre pour les tests d'application d'interface graphique à l'aide de Skikuli + RobotFramework.
SikuliFramework fournit une abstraction orientée objet au-dessus de Sikuli pour faciliter l'interaction d'éléments d'interface graphique, tels que des ensembles de boutons, des cases à cocher, des boutons radio, des fenêtres et des hiérarchies de dialogue pour l'automatisation et le test de l'interface graphique. Il a également une intégration étroite avec RobotFramework.
Sikuli est basé sur la correspondance d'images statiques. Donc, il ne convient que pour les situations où l'interface graphique est suffisamment stable. Pour une interface graphique dynamique telle que l’animation ou une interface graphique qui inclut une sorte d’aléatoire, cela n’est pas applicable.
Et Sikuli ne couvre que la partie visuelle de l’essai. Il n'a aucune idée si l'état interne est en effet comme prévu.
Voici mon point de vue sur la beauté de Sikuli pour l'automatisation des tests: http://pculture.org/devblogs/mirotesting/2011/06/24/using-sikuli-to-automate-miro-testing/
J'ai une suite de tests multiplateformes fiable pour Miro.
Je suis un fan de Sikuli et je pense que ce test est complémentaire à d’autres tests et peut économiser une grande partie des efforts de test manuel.
Cependant, il faut du temps pour bien faire les choses. Je lui ai donné une deuxième chance en l'espace de deux ans et la deuxième fois, j'ai pu obtenir de bons résultats, car je connaissais mieux l'environnement.
Il est livré avec un IDE intuitif _ et un python facilite l'extension de certaines choses. Il est très facile de modifier la position des clics, de définir la tolérance et d’enregistrer des éléments. Une fois que vous avez appris comment enregistrer et vérifier la documentation, il devient facile d'utiliser un minimum d'images et d'améliorer la précision. Il intercepte les modifications de l'interface graphique et les résultats assez facilement. Il est également facile d'attendre un certain événement. La vérification des erreurs est facile.
Le plus gros problème est que les tests enregistrés échouent souvent si vous ne l'exécutez que sur une autre machine que celle sur laquelle elle a été enregistrée. Cela peut avoir à voir avec la correspondance de motifs basée sur la comparaison d'images. On peut améliorer la probabilité du motif de correspondance en donnant des valeurs de tolérance. Mais il est parfois agaçant de continuer à modifier la tolérance. Ma recommandation est d'utiliser un ensemble différent d'images sur différentes plates-formes et de préférence l'exécuter sur une seule machine ou une seule machine virtuelle.
Une fois que vous avez un ensemble commun de flux de travail, vous pouvez créer une bibliothèque de ces fonctions communes telles que (projet ouvert/fermé, enregistrer des paramètres) et les utiliser dans différents scripts. Cela devient très facile à mesure que la bibliothèque devient complète. Cela signifie également que vous ne devrez modifier le script qu’à un seul endroit, ce qui reflétera tous les scripts.
J'ai également créé un cadre simple ( image jointe ) pour exécuter les tests et enregistrer les résultats à l'aide de C # .Net. On peut utiliser n'importe quoi pour créer une application de test simple. Il suffit de lancer le test en ligne de commande et de vérifier les résultats.
Je travaillais dans une petite équipe au sein de laquelle nos ressources de test étaient limitées. Avec Sikuli, j’ai en fait sauvé les efforts de l’équipe d’assurance qualité existante et j’ai également aidé à attraper les bugs avant de le pousser au premier plan.
J'ai recommandé Sikuli aux membres des autres équipes de mon entreprise, qui l'utilisent pour générer l'ensemble de données des modèles ML. Ils l'ont fait en automatisant leur application Engg avec des paramètres.
Sikuli prend le temps de pénétrer au début. Mais si cela est fait correctement, cela pourrait économiser beaucoup d'efforts.
J'ai utilisé sikuli pour les tests d'interface graphique, j'ai également pu l'intégrer à HUDSON.
En fait, je suis en train d’écrire un framework de test/traitement d’interface graphique avec sikuli. C'est bien.