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 :

pourquoi faire des tests unitaires ?


Sujet :

Test

  1. #1
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut pourquoi faire des tests unitaires ?
    Bonsoir,

    Dans le cadre de projets qui aboutissent bientôt (enfin je l'espère), j'en viens à me documenter sur les optimisations et les tests à faire sur son code.

    Je me suis documenté sur les tests unitaires (dans mon cas avec Jasmine/Karma pour une application Angular) mais je ne saisis pas l’intérêt de ces tests, ou plutôt l'envergure de l'utilité.

    J'ai retenu 2 choses utiles :
    • vérifier le types des paramètres passées au fonctions par rapport à ceux qu'elles attendent
    • vérifier que les fonctions remplissent bien le travail qu'on leur a demandé



    Ce que je ne saisis pas c'est que tester le type des paramètres d'une fonction pour verifier qu'ils soient du type attendu c'est bien, mais si ce n'est que lors des tests quels intérêts y a t il ?
    Enfin, si je tente d'appliquer ces vérifications de types de paramètres à toutes mes fonctions, cela va surement surcharger la vitesse d'exécution elle même, non ?

    De plus, tester si une fonction fait bien son travail, je ne comprend pas l'utilité étant donné qu'on a crée cette fonction spécifiquement pour faire qqch, alors à quoi bon la tester si après création de la fonction et debug, elle fait son travail ?

    désolé de ma faible expérience, mais je tourne en rond vous voyez ...

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    De manière générale, les tests servent à s'assurer que les fonctions restent correctes pendant toute la durée de vie du projet. Petit exemple : tu codes une fonction, qui fait exactement ce que tu lui demandes pour tous les cas utiles. Six mois plus tard, tu fais quelque chose de très proche et décides d'ajouter un paramètre à cette fonction : les tests serviront à s'assurer que la fonction continue de donner les bons résultats pour les premiers cas d'utilisation. Pire encore : trois ans après, tu décides de refactoriser une partie, les tests s'assureront que tu as toujours bien les résultats voulus.

    Aussi, en écrivant des tests, tu réfléchis encore une fois à ton code, tu trouveras peut-être des chemins d'exécution que tu n'avais pas prévus à l'origine et qui ne fonctionnent pas, alors qu'il n'est pas impossible qu'ils soient utilisés dans l'application (mais moins fréquemment).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    merci pour cette explication.

    sinon, est ce que ces tests peuvent être employés pour mesurer la qualité du code ou de son efficience ?
    je pense bien que non mais dans ce cas quels types de tests le permettent ?

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par vertebre Voir le message
    sinon, est ce que ces tests peuvent être employés pour mesurer la qualité du code ou de son efficience ?
    Non ça sert à mesurer que le code fait ce qu'il est censé faire.

    Donc à chaque itération d'évolutions / fix ça permet en appuyant simplement sur un bouton d'avoir en bout de ligne un indicateur OK / KO.

    C'est absolument in-dis-pen-sable dans le cadre d'un développement en mode agile où l'on est sans arrêts entrain de refactorer l'existant.

    Si en soi les tests ne permettent pas de déterminer la qualité d'un code ou son efficience (qu'entends-tu par efficience d'ailleurs ?), le taux de couverture (même s'il peut être simulé) est généralement un bon indicateur de la qualité d'un livrable. En ce qui me concerne et en tant que tech lead je considère un code non testé comme non livré. Et je rejette les merge request sans tests unitaires associés.

    Citation Envoyé par vertebre Voir le message
    je pense bien que non mais dans ce cas quels types de tests le permettent ?
    C'est plus le rôle des linters de check la qualité du code. Cf Sonar ou ESLint.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    merci également pour ton explication,

    qu'entends-tu par efficience d'ailleurs ?
    Pour un pécheur qui doit pécher des poissons, il peut faire çà à la main ou avec une canne à pêche, la cane à pêche est la solution la plus efficiente.
    Dans le cadre d'une fonction, j’entends par là les moyens utilisées pour coder le traitement que la fonction doit faire, par exemple le fait d'utiliser des Map<> plutôt que des tableaux.

    Mais effectivement je cherchai une analyse plus approfondie en ce qui concerne l'efficience du code, et je vais essayer sonar qui me semble être un bon outil

    Qu'est ce que le taux de couverture ?

  6. #6
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Si tu fais du javascript le must reste ESLint.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  7. #7
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    ok merci bien

  8. #8
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    Citation Envoyé par vertebre Voir le message
    Pour un pécheur qui doit pécher des poissons, il peut faire çà à la main ou avec une canne à pêche, la cane à pêche est la solution la plus efficiente.
    Pour des poissons piégés dans un trou d'eau à marée basse, la méthode à la main sera plus efficiente, ce qu'il faut en retenir, c'est que le contexte prime sur la méthode, il n'y a pas de généralité imparable.

    Il en va de même pour le code.
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  9. #9
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par yildiz-online Voir le message
    Pour des poissons piégés dans un trou d'eau à marée basse, la méthode à la main sera plus efficiente, ce qu'il faut en retenir, c'est que le contexte prime sur la méthode, il n'y a pas de généralité imparable.

    Il en va de même pour le code.
    Celle-là, je me la garde. Elle est magnifique. Dommage qu'il ne reste plus de place dans ma signature.....
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  10. #10
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par dourouc05 Voir le message


    De manière générale, les tests servent à s'assurer que les fonctions restent correctes pendant toute la durée de vie du projet. Petit exemple : tu codes une fonction, qui fait exactement ce que tu lui demandes pour tous les cas utiles. Six mois plus tard, tu fais quelque chose de très proche et décides d'ajouter un paramètre à cette fonction : les tests serviront à s'assurer que la fonction continue de donner les bons résultats pour les premiers cas d'utilisation. Pire encore : trois ans après, tu décides de refactoriser une partie, les tests s'assureront que tu as toujours bien les résultats voulus.
    C'est surtout que si tu quittes le projet et que tu es remplacé par quelqu'un d'autre qui ne connait pas le code de l'application, les tests lui permettrons de refactorer plus facilement
    et il ne faut pas oublier qu'il faut toujours se dire que le développeur qui te remplace est un fou furieux et qui sait ou tu habites :-)
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

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

Discussions similaires

  1. Faire des tests unitaires avec Visual Studio 2010
    Par Francis Walter dans le forum Visual Studio
    Réponses: 4
    Dernier message: 30/10/2014, 13h53
  2. Comment faire des test unitaires en plsql ?
    Par patmaba dans le forum PL/SQL
    Réponses: 4
    Dernier message: 20/09/2012, 15h29
  3. Réponses: 0
    Dernier message: 28/03/2011, 16h24
  4. Faire des tests unitaires
    Par rambc dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 12/12/2010, 22h15

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