• › Connexion
  • Blog RIA.do.be
  • Blog Web2Entreprise
Section separator

Catégories

  • Annonces
  • Évènements
  • Concepts et Usages
  • Notes Techniques
  • Références
Adobe EMEA Silver Solution Partner Section separator

Abonnement

  • RSS Articles Articles (RSS)
  • RSS Articles Commentaires (RSS)
  • RSS mail Articles (Email)
  • Populaires
  • Récents
  • Commentaires
  • Premiers Retours sur l’Adobe MAX 2009 (vu 13 817 fois)
  • Utiliser le framework Cairngorm pour Flex 2 (1/4) (vu 7 087 fois)
  • Comment forcer les styles des composants Flex/AS3 d’une librairie SWC réutilisable (vu 6 752 fois)
  • Architecture MVC: Cairngorm ou PureMVC ? (vu 4 658 fois)
  • Le problème du ModelLocator Cairngorm (vu 4 305 fois)
Articles récents
  • La confusion Cairngorm3 et des frameworks post MVC
  • Ready2Flex, la Solution pour Votre Déploiement Flex
  • Ouverture des Inscriptions pour le Webinar ConfluenceFx
  • Développeur, Communicant, Designer ou Ergonome ? Changez pour Kap IT
  • Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?
Commentaires récents
  • Yannick Lacaute dans La confusion Cairngorm3 et des frameworks post MVC
  • Yannick Lacaute dans La confusion Cairngorm3 et des frameworks post MVC
  • Fadi Mansour dans Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • nico dans Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • Florian dans Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?

Auteurs

  • Alexis Kartmann (12)
  • Benoit Kogut-Kubiak (2)
  • Christoher Bograt (1)
  • Cyril Daloz (8)
  • Daniel Pesic (6)
  • Fadi Mansour (3)
  • Florian Fesseler (1)
  • Guillaume Mignard (2)
  • Jean de Laulanié (2)
  • Julien Revel (19)
  • Mahmoud Ramadan (1)
  • Matthieu Jobert (1)
  • Stéphane Guyot (1)
  • Stéphane Koëth (2)
  • Yann Graufogel (2)
Section separator

Tags

PureMVC Adobe MAX BlazeDS livecycle Framework actionscript LCDS AIR RIA Kap IT compilation JVM Corporate AS3 builder AMF fds Flex Cairngorm Kap Lab skin Web 2.0 RTMP kapinspect MVC
Section separator

Archives

  • juin 2010 (1)
  • mars 2010 (1)
  • février 2010 (1)
  • décembre 2009 (2)
  • novembre 2009 (1)
  • octobre 2009 (3)
  • septembre 2009 (1)
  • août 2009 (1)
  • avril 2009 (2)
  • février 2009 (2)
  • janvier 2009 (4)
  • décembre 2008 (4)
  • novembre 2008 (2)
  • octobre 2008 (2)
  • septembre 2008 (2)
  • août 2008 (1)
  • juin 2008 (1)
  • avril 2008 (4)
  • mars 2008 (3)
  • février 2008 (2)
  • janvier 2008 (1)
  • décembre 2007 (3)
  • novembre 2007 (1)
  • septembre 2007 (1)
  • juillet 2007 (1)
  • juin 2007 (1)
  • mai 2007 (4)
  • avril 2007 (8)
  • mars 2007 (2)
  • février 2007 (1)

Marque-pages

  • Adobe Labs
  • AStrois Blog
  • Code moi un mouton
  • Coma Informatique
Section separator

Kap IT

  • Site Web
  • Blog RIA.do.be
  • Blog Web2Entreprise
  • Kap Lab - Composants Flex
  • Kap Lab - Plugins Confluence

Blog RIA.do.be

Veille, Recherche et Développement RIA Flex-AS3-LiveCycle

On a testé : FlexMonkey

Par Florian FesselergravatarFermerAuteur : Florian Fesseler Email : ffesseler@kapit.fr
Site : http://astrois.info/
A propos : Voir les autres billets de l'auteur (1)
, publié le 28 août 2009

« On a testé : FlexMonkey » par Florian Fesseler - Lire la Suite ›

Disponible dans sa version 1.0 depuis mi-juillet, FlexMonkey est un framework de test d’interfaces destiné aux applications Flex et AIR.

FlexMonkey permet d’enregistrer et de rejouer les interactions de l’utilisateur avec les composants visuels d’une application ainsi que de vérifier leur comportement.

Nous nous sommes penchés sur cet outil afin de déterminer :

  • Quelle place il peut avoir dans le processus de réalisation de nos applications client
  • Comment il peut améliorer la qualité finale de nos produits

Découvrez immédiatement le bilan de notre test !

Installation

Il s’agit une étape relativement simple puisqu’elle ne nécessite que le téléchargement et l’installation du lecteur/enregistreur (une application AIR).

Aussi, il est important de noter qu’il n’existe aucune dépendance entre le code de l’application et FlexMonkey, la communication entre le lecteur et l’application se faisant par LocalConnection.

Enregistrement d’un Scénario

Si l’application est destinée à être chargée uniquement dans le navigateur, il est nécessaire d’ajouter un swf spécifique, appelé MonkeyAgent dans le même répertoire que l’application.

Cet agent s’assure de la communication bidirectionnelle entre l’enregistreur et l’application à tester et évite ainsi de devoir écrire du code spécifique à FlexMonkey.

L’enregistrement débute à partir du moment où l’on appuie sur le bouton « Record » de l’enregistreur. À noter qu’il est possible d’organiser ses tests en Test Case et Test Suite.

Capture d’écran de l’application FlexMonkey (AIR App) :

Capture d'écran de l'application AIR FlexMonkey (Clic ! pour voir la capture dans son intégralité)

Créer une Application Testable

Les interactions entre la souris/le clavier et les éléments de l’interface sont récupérés par FlexMonkey grâce au FlexAutomationAPI inclus dans le SDK Flex.
Pour plus de détail concernant cette API ainsi que son utilisation, on peut se référer au document suivant : Adobe Flex 2 - Using the Automated Testing API.

La principale contrainte pour créer une application « test friendly » est d’identifier chaque composant de manière unique. En effet, pour pouvoir rejouer les interactions, FlexMonkey requiert un identifiant unique (une chaine de caractères) pour chacun des composants. Cet identifiant est choisi parmi les propriétés suivantes :

  1. automationName
  2. id
  3. automationID

FlexMonkey vérifie d’abord que l’automationName est spécifié. Si cette propriété est renseignée, alors sa valeur devient l’identifiant unique pour les tests.
Dans le cas contraire, il s’agira de la valeur de la propriété id, ou sinon celle de l’automationID, si aucun id n’a été renseigné.

A noter que la valeur de l’automationID est construite automatiquement au runtime et se base sur la place du composant dans la hiérarchie de la DisplayList. Elle ressemble à une chaîne de ce type :

automationClassName{FlexApplication string}
id{MonkeyAgent string}
automationIndex{index:-1 string}
label{ string}
automationName{MonkeyAgent string}
className{MonkeyAgent string}
|
id{null object}
automationIndex{index:0 string}
automationName{index:0 string}
automationClassName{FlexDividedBox string}
label{ string}
className{mx.containers.VDividedBox string}
|
automationClassName{FlexApplication string}
id{null object}
automationIndex{index:1 string}
label{ string}
automationName{file:///C:/Users/Florian/KapIT/Client/Flex.swf string}
className{RPM_Flex string}
|
automationClassName{FlexBox string}
id{mainView string}
automationIndex{index:12 string}
label{ string}
automationName{mainView string}
className{com.client.projet.view.MainView string}
|
automationClassName{FlexBox string}
id{communicationView string}
automationIndex{index:44 string}
label{Communication string}
automationName{Communication string}
className{com.client.projet.view.communication.Communication string}
|
automationClassName{FlexBox string}
id{technicalInterfaceParams string}
automationIndex{index:3 string}
label{ string}
automationName{technicalInterfaceParams string}
className{com.client.projet.view.communication.TechnicalInterfaceParams string}
|
automationClassName{FlexForm string}
id{tInterfaceForm string}
automationIndex{index:3 string}
label{ string}
automationName{tInterfaceForm string}
className{mx.containers.Form string}
|
displayAsPassword{false boolean}
automationName{null:1 string}
automationIndex{index:45 string}
automationClassName{FlexTextArea string}
id{null object}
editable{true boolean}
className{mx.controls.TextInput string}

En plus d’être complètement illisible, ces chaines d’appels ralentiront énormément la lecture des scripts.

Une notion importante à retenir est qu’il est obligatoire que tous les composants testés aient un identifiant unique. 2 mêmes identifiants dans le programme rendront les tests instables à un moment où à un autre. Nous conseillons de se baser sur la propriété automationName car il est fréquent de changer l’id d’un composant durant le développement, ce qui entrainerait alors une modification des scripts de tests.

Vérification des Tests

Lorsqu’une séquence a été enregistrée, il est possible de spécifier quels sont les résultats attendus au niveau de l’interface.

Pour cela, une cible permet de choisir un composant de l’application et de choisir parmi sa liste des propriétés/styles, quelle est la valeur attendue pour une propriété choisie.

Il est dommage que la phase d’introspection semble ralentir l’agent au fur et à mesure de l’enregistrement et de la lecture des scripts. Un redémarrage de l’application devient alors obligatoire. Il s’agit d’un point à améliorer lors des futurs sorties de FlexMonkey.

FlexMonkey dans le Processus d’Intégration Continu

FlexMonkey permet d’exporter les scripts sous forme de classes de tests ActionScript exploitable par FlexUnit 4.

Une tâche ANT spécifique peut-être téléchargé depuis le site de Gorilla Logic et permet d’exécuter les tests lors du build. L’explication détaillée peut être trouvée sur ce même site.

On aurait aimé trouver une solution similaire pour flex-mojos, de la même manière que celle qui existait pour la version 0.8.
À suivre, le retour de cette fonctionnalité dans FlexMonkey.

Conclusion

FlexMonkey semble relativement stable et fonctionnel dans cette version 1.0. S’assurer de la stabilité de l’interface utilisateur en complément des tests unitaires apporte un avantage non négligeable dans le développement d’une application.

À bookmarker :

  • FlexMonkey Google Code Site : http://code.google.com/p/flexmonkey/
  • FlexMonkey Project Homepage : http://flexmonkey.gorillalogic.com/gl/stuff.flexmonkey.html

Articles relatifs

  • Tout Savoir sur les Fuites Mémoires (ou Memory Leak) en Flex (0)
  • Réunion des Tontons Flexeurs du 25 février 2008 (0)
  • Premiers Retours sur l’Adobe MAX 2009 (0)
  • Mais où est Kap IT ? (0)
  • Kap Lab kick off ! (2)
Catégories: Notes Techniques
Tags: AIR, Automation, Flex, Test UI

Laisser une réponse

Cliquer ici pour annuler la réponse.

Article précédent
Article suivant
 
Haut de page

Copyright © 2009 Kap IT - Blog RIA - Blog Web2Entreprise - Kap Lab

Motorisé par Wordpress - Thème avec YAML par Kap IT