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 :

TDD Conception -> Test unit ->Code


Sujet :

Test

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 117
    Par défaut TDD Conception -> Test unit ->Code
    Salut;
    Pour la méthode TDD, qui consiste à réaliser des tests avant le code.Ma question est comment écrire la squolette de code de test avnt meme code r l'application. y'a t'il un scénario de test réutilisable pour tout projet?
    MErci bien

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Par défaut
    Citation Envoyé par taroudant Voir le message
    Salut;
    y'a t'il un scénario de test réutilisable pour tout projet?
    MErci bien
    Un tel scénario n'existe pas. Par contre il y a des patrons (patterns) repertoriés pour des problématiques de test courantes. Voir en particulier le livre http://xunitpatterns.com/

    Bruno
    mon blog - mon site web

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 117
    Par défaut
    Comment donc mettre en place un Design Pattern général utilisable pour n'importe quel framework de test unitaire?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 182
    Par défaut
    Citation Envoyé par taroudant Voir le message
    Comment donc mettre en place un Design Pattern général utilisable pour n'importe quel framework de test unitaire?
    j'avoue ne pas comprendre la question. Quel est le but recherché ?

    Bruno
    mon blog - mon site web

  5. #5
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut
    Je comprends ta surprise à l'idée d'écrire les tests avant d'avoir écrit le code. Mais en fait, l'idée est la suivante.

    Dans une expression de besoin, tu énumères ce dont tes utilisateurs/demandeurs ont besoin.

    Dans l'analyse fonctionnelle qui suivra, tu diras comment tu comptes d'y prendre, de manière théorique, pour répondre à leur problème. Règles de gestion, objets impliqués, services contactés. Mais dans ce document, tu n'auras pourtant pas parlé du code qui se trouvera dedans: du Java, du C++, du VB ? Ce n'est pas important. Ton souhait, c'était de présenter le problème clairement et de dire comment il fallait le résoudre, de manière théorique.

    Donc, ton analyse fonctionnelle te dira des choses comme: si tu transmets deux objets à un service, tu en recevras un, pour peu que tu aies respecté des règles de gestion..


    Par exemple, l'analyse fonctionnelle dit:
    Si je donne un euro à la boulangerie, et que je lui demande une baguette de pain, elle me la donnera. Que je dois veiller à ce qu'elle soit ouverte pour cela, bien entendu.
    Les objets Monnaie, Baguette seront mis en jeu. Le service s'appellera Boulangerie et la fonction que j'appellerai chez lui s'appellera achat.

    Qu'importe le langage que j'utiliserai!
    Ce que je sais c'est que:
    - si la boulangerie est fermée, ça ne devrait pas marcher.
    - si elle est ouverte mais que je ne demande pas une baguette, non plus.
    - si elle est ouverte, que je demande une baguette mais ne donne pas assez d'argent, ça ne passera pas plus.
    - si elle est ouverte, que je donne assez d'argent et demande une baguette, là, je dois l'avoir.

    Donc, je crée des objets Baguette et Monnaie, ainsi qu'un service Boulangerie qui auront tous des variables membres nulles et des méthodes ne faisant rien... et qui échoueront toujours au début. Mais ils me permettront d'écrire mes méthodes de test. Et plus mon projet, ensuite, se réalisera, et plus les méthodes des objets seront complétées et les tests passeront.


    Un test: "si je demande une baguette mais ne donne pas assez d'argent, ça ne marche pas".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
    {
       Monnaie m = new Monnaie(0.90, "EURO");
       Baguette b = boulangerie.achat("baguette", m);
    
       fail(); // Passage normal => échec.
    }
    catch(PaiementInsuffisantException e) 
    {
       // Sous-entendu: réussite du test.
    }

    Dans mon projet, j'ai créé les objets Monnaie, Baguette et Boulangerie frustres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Monnaie
    {
        Monnaie(double quantité, String devise) {}
        double quantité() {return 0;}
        String devise() {return null;}
    }
    
    class Baguette
    {
        Baguette() {}
    }
    et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Boulangerie
    {
        Baguette achat(String szDemande, Monnaie m) throws PaiementInsuffisantException
        {
            return(null);
        }
    }
    Ces objets ne vont rien amener de bon au début.
    En ce qui concerne notre test, il ne réussira pas. Car la monnaie créée ne tient aucun compte du montant annoncé dans le constructeur ni de sa devise. Les pointeurs nuls vont pleuvoir! Et même plus tard, la boulangerie renvoyant null, on aura ni baguette ni exception, alors...

    Alors quoi? C'est des tests, et ils compilent. Et ils ont été écrits avant le code source final de l'application. C'est tout ce que l'on demandait.

    Maintenant, il n'y a plus qu'à coder les classes Monnaie, Baguette, Boulangerie jusqu'à ce que ces tests deviennent "verts". C'est à dire: qu'ils passent.

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

Discussions similaires

  1. [AC-2003] Conception d'une BDD ave code barre pour une petite entreprise
    Par Piccou dans le forum Modélisation
    Réponses: 20
    Dernier message: 19/05/2010, 11h07
  2. Test d'un code retour
    Par genio dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 14/08/2008, 16h33
  3. Rake test:units lance les tests sur la BDD de développement
    Par gravis dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 30/10/2007, 21h16

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