IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Test Discussion :

Tests Unitaires - Production de documents


Sujet :

Test

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Tests Unitaires - Production de documents
    Bonjour,

    j'ai beau chercher sur google je ne trouve pas d'information de ce coté là.

    Je cherche une méthode à utiliser pour controler efficacement la production de documents (principalement XML et dérivés (RDF, XHTML, ...)) avec des tests unitaires.

    Je développe en PHP mais je suis près à analyser une solution pour un autre langage pour l'adapter à PHP.

    Je recherche donc une "méthode", et bien sur si vous connaissez un outil

    Merci !

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Je ne vois pas exactement ce que tu veux mais dans le monde Java, il y a JUnit + Ant + CruiseControl par exemple. Avec ce trio, tu automatises l'exécution des tests unitaires (ant +Junit) et tu lances tout cela tous les jours, par exemple, via CruiseControl qui génère un rapport au format HTML (publication sur un site + envoi d'email si tu le veux)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    J'ai une fonction qui produit un document, par exemple une page web:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html>
    <head/>
    <body>CONTENT</body>
    </html>
    Je souhaiterais savoir si il existe une méthode qui fonctionne bien pour réaliser un test unitaire sur un tel retour de fonction.

    Ca me parrait un peu trop sofistiquer comme résultat (enfin pas ici bien sur!) pour effectuer un controle automatique, mais c'est peut etre faisable ?

  4. #4
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    JUnit te permet de faire du test unitaire mais que veux-tu tester exactement ?
    Dans la gamme "XXXUnit", il y a plein d'autres outils style JUnit comme HttpUnit, Cactus,...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Je voudrais tester si le retour de la fonction correspond bien à ce qu'il devrait etre (comme tout test unitaire).

    Ce qui me pose problème c'est que le contenu de cette fonction est énorme.
    Par exemple dans le framework PHP que j'utilise j'ai des fonctions "actiongroup" qui réalise plusieurs chose pour une action puis retourne un page HTML (par exemple) générée.

    Tester si cette page correspond bien à ce qui est normalement attendu pour une action données avec des paramètres donné me parrait interessant, seulement je ne sais pas comment faire ca.

    Une page html comme retour de fonction par exemple ca fait une enorme quantité de données, comment analyser si ca correspond bien à ce que l'on attend de facon automatique ?

    Pour donner un exemple:

    J'ai une action "test" qui prend comme argument deux nombres.
    Je l'appelle comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function doTest&#40;$number, $repeat&#41;
    Cette fonction va me retourner le nombre donné et une liste de $repeat fois ce nombre dans une liste html (c'est vraiment un exemple hein).
    Elle va avant de faire son retour inclure tout cas dans une page HTML via un template.

    Donc elle me retourne la page complète.

    On peut tester ce genre de fonction de facon automatique ?

  6. #6
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Tu n'es probablement pas au niveau de ce que l'on teste unitairement.

    Tester si une page HTML générée est la bonne est plus de l'ordre du test fonctionnel. Que veut dire tester le contenu d'un flux HTML de manière unitaire, je ne sais pas !? Il faut l'utiliser dans un browser HTML, non ?

    Cela ne change donc pas le fait qu'il faut tester, bien sûr.

    Mais peut-être que des outils permettant du test fonctionnel sont plus adaptés ?!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Tu n'es probablement pas au niveau de ce que l'on teste unitairement.
    Pourtant cette génération de données fait clairement partie de l'application.
    Générer une page HTML est un exemple, je peux très bien générer un document XML à la place.

    Le but que je recherche n'est pas de voir si la page finale à la bonne apparance, si elle s'affiche bien, etc, mais simplement de controler que d'après les arguments passés à ma fonction, celle-ci à correctement traiter la demande, à correctement manipuler les arguments et à correctement instancier le template.

    Seulement pour controler ca là seule chose dont je dispose à la sortie de la fonction c'est des données qu'elle retourne, dans ce cas un document HTML (ou autre).

    Maintenant il est vrai que c'est peu un etre un test trop lourd pour le niveau unitaire, et que le niveau fonctionnel est plus adapter.
    Peut etre que j'aurais davantage interet à réaliser les traitements de ce genre de fonctions dans des fonctions privées (testables unitairement) et à leur laisser seulement la tache d'instancier un template pour produire les données.

    Ainsi je peux tester unitairement, un maximum de choses.

  8. #8
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    En fait, tout dépend de se que tu veux et peux tester.
    Es-tu capable d'énumérer les types de sorites en fonction des arguments passés ? Ensuite, es-tu capable d'identifier qu'une sortie est compatible avec les arguments passés = tu sais comment identifier le type de la sortie ?
    Si tu as les réponses à ces 2 questions, c'est bon, tu peux tester unitairement (tester tout court d'ailleurs).
    Attention aussi à un point, si la combinatoire des sorties en fonction des entrées est très grande, cela peut vouloir dire qu'il y a un problème de conception à la base. Et une mauvaise conception est souvent difficile à tester.
    NB: je ne dis pas que ton truc est mal conçu mais attention car si tu as du mal à énumérer les tests c'est peut être une piste.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Es-tu capable d'énumérer les types de sorites en fonction des arguments passés ?
    Oui bien sûr. Les ActionGroup contiennent les fonctions comme: getUser, getUsersList, ... donc je sais quelles données je veux receuillir en fonction du nom de l'action utilisée et des arguments que je lui passe (par exemple un filtre sur les données de la liste des users).

    Ensuite, es-tu capable d'identifier qu'une sortie est compatible avec les arguments passés = tu sais comment identifier le type de la sortie ?
    Ici je dirais "oui et non".
    Dans le cas ou j'utilise la fonction "getUsersList" avec un filtre comme "du 20eme au 40eme", oui je sais à quoi je veux m'attendre si je connais les données de tests. Seulement ce résultat est encapsulé dans un fichier HTML ou XML ce qui le rend difficilement controlable.

    C'est comme si google voulait controler que la fonction qui renvoie la page de résultat à bien intégré les bons résultats en fonction de la requete de l'user, c'est même exactement ca. On cherche à savoir si les données sont bien les bonnes.

    Si tu as les réponses à ces 2 questions, c'est bon, tu peux tester unitairement (tester tout court d'ailleurs).
    Je suis sûr que je peux tester un tel résultat. Par exemple si la sortie est un fichier XML valide contenant les données correspondant à ma requete je peux toujours le parser pour controler si les bonnes données y sont présente et y sont formater correctement.

    En fait ce que je recherche c'est si il y a une méthode courament utilisée pour controler unitairement ce genre de retours.

    Dit autrement: Imaginons que tu ais une fonction XXX($c1, $c2, c$) qui sert à afficher la page de résultats de Google en fonction de 3 mots clés. La page est construite à partir d'un template après recherche des données en SQL.
    Comment tu t'y prend pour controler que les données insérées dans la page correspondent bien à ce que tu avais prévu ?

    Merci

  10. #10
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    je pense que tu te place au mauvais endroit pour faire tes tests.
    Je veux dire qu'il ne faut pas se placer après la génération du HTML ou XML mais avant. C'est à dire qu'il faut tester des objets. Ensuite, tu testes unitairement la classe qui "sérialise" les résultats en HTML et XML. La somme des 2 tests te permettant de valider l'ensemble (ainisi que des tests d'intégration qui valide que tes 2 processus communiquent).
    Si par hazard les 2 trucs dont je parle précédemment sont en fait une seul et même "fonction", c'est ce que j'entend par de la mauvaise conception et c'est donc ce qui explique les difficultés à tester le truc.

    Donc, ne te mets par trop en amont pour faire des tests unitaires mais mets toi bien au plus près des fonctionnalités élémentaires.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Effectivement j'ai opter pour ca, je test tout jusqu'à la génération du document qui elle n'est pas testée, car faite pas une autre fonction.
    Mais je test l'ensemble des données passée au template qui va générer ce document, donc si il est non valide c'est que le template à un pbolème, la fonction elle est controlée.

    Merci beaucoup pour ton aide!

  12. #12
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    ok, très bien !
    bonne chance pour la suite

  13. #13
    Nouveau membre du Club
    Inscrit en
    Octobre 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 39
    Points : 33
    Points
    33
    Par défaut
    J'ai un problème qui rejoint un peu ce sujet.
    J'ai une page HTML qui contient des données que je désire récupérer.

    Existe-t-il une fonction dans VB.net qui pourrait me permettre de lire le code HTML assez facilement (-> éviter de voir le fichier HTML comme un simple document texte)?

  14. #14
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 167
    Points : 220
    Points
    220
    Par défaut
    Qu'est vous appelez "test fonctionnel" ?

    Citation Envoyé par goldeagle
    J'ai un problème qui rejoint un peu ce sujet.
    J'ai une page HTML qui contient des données que je désire récupérer.

    Existe-t-il une fonction dans VB.net qui pourrait me permettre de lire le code HTML assez facilement (-> éviter de voir le fichier HTML comme un simple document texte)?
    Euh non c'est pas vraiment le sujet ;-). Si tu veux du VB .Net ce n'est pas le bon forum, fait un nouveau sujet, après recherche si ça n'existe pas déjà, dans le forum .Net.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tests unitaires & base de données
    Par lalystar dans le forum Test
    Réponses: 15
    Dernier message: 18/06/2010, 16h50
  2. Strategies pour les tests unitaires
    Par xxiemeciel dans le forum Test
    Réponses: 6
    Dernier message: 17/04/2008, 11h59
  3. Tests unitaires en C#
    Par Bouboubou dans le forum Test
    Réponses: 2
    Dernier message: 01/10/2004, 13h03
  4. [TESTS] Tests unitaires
    Par mathieu dans le forum Test
    Réponses: 4
    Dernier message: 08/01/2004, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo