Précédent   Forum du club des développeurs et IT Pro > Java > EDI et OUTILS pour Java > Tests et Performance
Tests et Performance Vos questions sur les APIs et Outils de tests unitaires, d'intégration, de performance, profiling, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 04/08/2008, 15h44   #1
GLDavid
Membre Expert
 
Avatar de GLDavid
 
Inscription : janvier 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2003
Messages : 2 667
Points : 2 487
Points : 2 487
Par défaut Unit tests sur une IHM

Bonjour

La question est simple si je puis dire. J'ai développé une application et je valide le code par des unit tests (JUnit 3.8). La seule chose qui me pose problème est l'interface graphique. Pouvez-vous me conseiller sur comment s'y prendre pour appliquer des unit tests sur une interface graphique ?
Est-ce finalement nécessaire ?
Merci d'avance de vos réponses.

@++
__________________
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag

Je ne répond à aucune question technique par MP.
GLDavid est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/08/2008, 18h18   #2
gifffftane
Membre Expert
 
Avatar de gifffftane
 
Inscription : février 2007
Messages : 2 354
Détails du profil
Informations personnelles :
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 2 354
Points : 2 446
Points : 2 446
Je trouve que c'est nécessaire, mais il est difficile de régler ce qui doit être testé.

Pour le faire, j'ai commencé par jemmy, puis je me suis aperçu que j'avais meilleur compte à tout faire moi même. Donc je n'utilise plus que le swing standard, je n'ai même pas de bibli perso.

Dans tous les cas, cela nécessite une bonne connaissance de swing.
__________________
Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 20h39   #3
djsnipe
Membre éprouvé
 
Avatar de djsnipe
 
Inscription : mai 2008
Messages : 440
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 440
Points : 440
Points : 440
Après quelques tentatives de prototypage d'une solution de test unitaire d'IHM Web, j'ai considéré que c'était finalement inutile dans ce contexte. Ou plutôt inadapté (pour éviter d'en faire hurler certains).
Ces tests sont très lourds à coder pour du WEB (vérif de code html, problèmes si du javascript génère du html ... une horreur), est très dur à tester unitairement si tout un enchainement est nécessaire pour arriver à une page donnée, et ne peux pas vérifier le rendu visuel final qui est primordial. Et pour le Swing ou le HTML, l'apparence sur un redimensionnement, c'est dur à automatiser (ok, pas impossible pour le Swing).

Je préfère donc maintenant quand c'est nécessaire (grosses phases de non regression sur de grosses appli) mettre en place des outils qui font de la capture d'interactions clavier/souris avec l'appli pour l'aspect fonctionnel de l'interface. Le rendu est toujours contrôlé par une personne physique, et dans les projets web, souvent en multi navigateurs (j'aime le web ).
djsnipe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 00h20   #4
guigui5931
Membre Expert
 
Avatar de guigui5931
 
guillaume defrain
Inscription : avril 2006
Messages : 1 667
Détails du profil
Informations personnelles :
Nom : guillaume defrain
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : avril 2006
Messages : 1 667
Points : 2 100
Points : 2 100
Pour les applications web il y a Selenium qui marche très bien.
__________________
autant l'hiver éclate que l'hétéroclite
le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre
guigui5931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 06h57   #5
simon.brandhof
Membre du Club

 
Inscription : mai 2008
Messages : 61
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 61
Points : 65
Points : 65
Par défaut Tests de non regression Swing

et pour les tests de non-régression Swing, il y a JDiffChaser
simon.brandhof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 08h19   #6
GLDavid
Membre Expert
 
Avatar de GLDavid
 
Inscription : janvier 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2003
Messages : 2 667
Points : 2 487
Points : 2 487
Bonjour

Merci de vos réponses. Si je résume vos dires, il apparaît que tester unitairement une IHM est difficile, chose qui était décrite dans d'autres forums tels que celui de Sun.
Toutefois, je jetterais un regard sur les solutions que vous proposez et je pense que rédiger un scénario de test fonctionnel sera la meilleure solution.
J'attends d'autres avis avant de clore ce thread.
Merci encore à vous.

@++
__________________
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag

Je ne répond à aucune question technique par MP.
GLDavid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 09h00   #7
gifffftane
Membre Expert
 
Avatar de gifffftane
 
Inscription : février 2007
Messages : 2 354
Détails du profil
Informations personnelles :
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 2 354
Points : 2 446
Points : 2 446
Heu... il faut s'entendre sur le sens du mot difficile.

Difficile techniquement (comment faut-il tester ? ), oui, mais formateur. Tu pourrais aussi bien dire Tester une IHM est formateur. Peut être n'auras-tu pas le même regard.

Difficile conceptuellement (que faut-il tester ? ), oui aussi, mais là on souffre de la culture ambiante (cette épouvantable notion de couverture de test, par ex.) complètement à coté de la plaque pour les IHM. Il vaut mieux, à mon humble avis, partir de la notion Qu'est-ce qui est sensible pour l'utilisateur ou pour le développeur ?

Et puis aussi les tests IHM ne sont nullement limités aux tests unitaires. Il peut très bien y avoir des tests d'intégration impliquant l'IHM, heureusement.
__________________
Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 09h09   #8
djsnipe
Membre éprouvé
 
Avatar de djsnipe
 
Inscription : mai 2008
Messages : 440
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 440
Points : 440
Points : 440
Citation:
Envoyé par gifffftane Voir le message
Et puis aussi les tests IHM ne sont nullement limités aux tests unitaires. Il peut très bien y avoir des tests d'intégration impliquant l'IHM, heureusement.
En effet, même si pour ma part je limiterai les tests IHM aux tests d'intégration (automatisés ou non selon la taille du projet) et les aspects dits sensibles aux développeurs et utilisateurs se retrouvent dans des tests unitaires des services appelés par la couche graphique. L'intégration des services avec les IHM est fait par test unitaire manuel lors des développements en plus des tests visuels sur l'aspect.
djsnipe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 09h29   #9
gifffftane
Membre Expert
 
Avatar de gifffftane
 
Inscription : février 2007
Messages : 2 354
Détails du profil
Informations personnelles :
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 2 354
Points : 2 446
Points : 2 446
Oui, je ne sais pas si c'est ce sur quoi djsnipe voulait insister, mais en tous les cas j'y insiste : dans le domaine des tests GUI (comme dans tous les autres d'ailleurs) il doit toujours y avoir complémentarité entre les tests automatiques et les tests manuels, jamais opposition ; les tests automatiques ne doivent jamais être un prétexte pour dire C'est passé, donc c'est bon.. (et encore moins les tests manuels, d'ailleurs).

Ce que demande le client est que l'application marche, non pas que les tests marchent.

Aussi il faut s'entendre sur le sens des termes : par test unitaire, j'entends plus volontiers test d'une classe java, et non tests unitaires de service : ça c'est plutôt de l'intégration, pour le codeur, puisque un service implique en général plusieurs classes, et même plusieurs couches (base de données, etc).

Mais ce qui se conçoit clairement s'exprime sans difficulté du moment auquel on se comprend bien dans ce que l'on veut dire et qui est bien d'accord.

Et c'est vrai que, la plupart du temps, les tests IHM sont en fait du niveau intégration, puisqu'ils impliquent la monopolisation de la ressource écran-clavier-souris, forcément. Ils sont unitaires (à mon sens) lorsqu'ils se limitent au niveau M du MVC.
__________________
Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.
gifffftane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2008, 08h27   #10
super_navide
Membre actif
 
Inscription : juin 2003
Messages : 138
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juin 2003
Messages : 138
Points : 163
Points : 163
Pour tester une éfficacement une IHM il faut qu'elle réponde le mieux possible au model MVC (Model Vue Controlleur)
Tu test via des JUnits ton model puis quelque tests manuel sur l'IHM.
Le plus gros des tests sont à faire sur le Model car si le Model ne fonctionne pas correctement alors forcement ton IHM ne fonctionne pas aussi

Le model contient toutes le comportement metier de ton ihm.
super_navide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2008, 08h42   #11
tosirap
Invité de passage
 
Inscription : août 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 2
Points : 2
Points : 2
Salut,

Je te conseille Squish For Java (http://www.froglogic.com/pg?id=Produ...ns&subsub=java).

J'ai utilisé cet outil pour effectuer des tests fonctionnels pour une lourde appli SWT, c'était très efficace.

A+
tosirap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2008, 15h37   #12
longbeach
Rédacteur/Modérateur
 
Avatar de longbeach
 
Inscription : avril 2003
Messages : 930
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : avril 2003
Messages : 930
Points : 1 971
Points : 1 971
+1 pour Selenium.
longbeach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2008, 16h27   #13
supermanu
Membre éprouvé
 
Avatar de supermanu
 
Emmanuel Pierre
Inscription : janvier 2004
Messages : 330
Détails du profil
Informations personnelles :
Nom : Emmanuel Pierre
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 330
Points : 426
Points : 426
+2 pour Selenium

Selenium va te permettre d' "enregistrer" les manipulations que tu fais avec ton navigateur : clique sur un lien, remplissage d'un formulaire, submit d'un formulaire.... Puis de rejouer ce que tu as enregistré.

Avantages :
- le plus gros avantage que je vois c'est la possibilité d'être feignant
Imagine que ton application comporte par exemple une fonctionnalité "créer un compte" qui se fait sur 3-4 formulaires successifs et où il faut remplir plein de champs... Avec Selenium, tu le fais une fois en enregistrant. Puis tu relance ce scénario à chaque fois que tu veux tester la fonctionnalité...

Inconvénients :
- Il faut que le code HTML soit "bien fait". C'est à dire que les champs comportent des id par exemple. Selenium offre d'autres moyens de trouver des champs (position, style css...) mais il risque d'en oublier quelque uns à l'enregistrement...

- Les tests que tu vas pouvoir faire pour vérifier que ta vue fonctionne correctement vont être du style : "est-ce que la page comporte le texte xxxxxx ?" "est-ce que l'image yyyyyy est bien affichée ?"
Donc comme on le voit, tout ce joue sur la vue. Et dans certains projets, les vues sont très souvent modifiées....

donc à toi de voir suivant le type de projet, la complexité des vues....
__________________
Pensez au tag
Mon blog Tutoriels et Astuces en Java : http://emmanuelpierre.free.fr/blog/index.php?
supermanu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2008, 09h54   #14
eracius
Membre du Club
 
Avatar de eracius
 
Inscription : décembre 2004
Messages : 132
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2004
Messages : 132
Points : 45
Points : 45
Selenium parait très intéressant et peut permettre de mettre en place une première batterie de tests simples.

Mais je pense que le mieux reste le test par l'utilisateur ou au moins par une personne étrangère au développement.

Pour ma part, je fais tester mon interface web par un collègue, non informaticien, qui parvient toujours à mettre le doigt sur les petits problèmes et autres incohérences qui m'aurait échappées. Après, cette démarche est très couteuse en temps mais m'a permis jusqu'à présent de limiter très fortement les retours de bug une fois l'application déployé chez le client.

Néanmoins mon interface n'est utilisé que par un nombre réduit de personnes ce qui me permet donc d'être très réactif en cas de problème. Pour une application grand publique, je suppose que des tests beaucoup plus exhaustifs seront nécessaires pour être sur de ne pas crouler sous les rapports de bugs et ça peut rapidement devenir un vrai casse tête sans une bonne organisation (scénarios prédéfinis pour que le testeur gagne du temps et compagnie).
eracius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2008, 10h56   #15
schneidb
Membre confirmé
 
Avatar de schneidb
 
Inscription : janvier 2005
Messages : 236
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : janvier 2005
Messages : 236
Points : 203
Points : 203
Envoyer un message via MSN à schneidb
+1 pour selenium qui marche je crois sous firefox.
Sur internet explorer il y a iMacros.
schneidb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2008, 17h26   #16
rroommuu
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 38
Points : 38
Selenium fonctionne aussi bien avec IE qu'avec FF. Par contre, le plug-in permettant d'enregistrer les tests n'est disponible que pour firefox.
rroommuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2008, 16h19   #17
nicolav
Futur Membre du Club
 
Inscription : juin 2008
Messages : 52
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 52
Points : 15
Points : 15
Pour des tests sur interface graphiques, tu peux utiliser des frameworks de tests tels que marathon ou encore Fest.
J'ai utilisé ce dernier pour des tests sur un logiciel. Je vérifiais si des JOptionPane s'affichaient bien, si le texte dedans était le bon...
ça marchait plutôt bien.
nicolav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2008, 17h02   #18
Laurent Tardif
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 10
Points : 11
Points : 11
Par défaut Tests automatique

Alors pour apporter une reponse qui t'aidera j'espere
1) oui et plusieurs fois oui, les tests sur une IHM sont utils, par contre, ils sont difficile a mettre en place et a maintenir si on ne fait pas attention.
2) des regles de codage peuvent simplifier leur ecriture : id uniq sur les elements HTML resultant, .... convention de nomage sur les form, ...
3) les tests doivent essentiellement tester la navigation, le comportement, pas le look & feel (tu peux verifier la presence d'elements, que ton html est bien formé, test java script ont une bonne syntaxe) mais pas plus.
Selenium (IDE/RC/GRID) te premettra d'automatiser tout ca relativement simplement.
4) bien evidement, faire des scenarios de tests reproductibles et automatisable
Laurent Tardif est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h28.


 
 
 
 
Partenaires

Hébergement Web