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

ALM Discussion :

Le TDD est mort ? non, pas vraiment, peut-être que oui


Sujet :

ALM

  1. #21
    Membre émérite
    Inscrit en
    janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : janvier 2011
    Messages : 805
    Points : 2 912
    Points
    2 912
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Or plus le projet est gros moins les tests unitaires sont justifiables, ils sont généralement plus une perte de temps qu'un gage de qualité.
    Quand tu dois mettre dans la balance :
    - 2ans de retard car on veut rédiger tous les tests unitaires
    - on respecte les délais mais on sait qu'on aura 98% de qualité du produit car on remplace les tests unitaires par des tests de plus haut niveau (système par exemple)
    Mouais... Si les 2% de non-qualité restants engendrent des bugs style Heartbleed, Ariane 5 ou Toyota Camry, je ne suis pas sûr que la balance penche du même côté.

    Pour moi, la pertinence des TU a moins de rapport avec la taille du projet qu'avec sa criticité et le niveau de fiabilité dont on veut s'assurer.

  2. #22
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 344
    Points
    9 344
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Je te repose la question, quel est le rapport avec les tests ?
    Plus tu as de fonctions plus tu as de tests unitaires à rédiger. C'est un peu le principe des tests unitaires.

    Citation Envoyé par Marco46 Voir le message
    A te lire on dirait qu'écrire les TU c'est plus long que d'écrire l'application en elle-même. Si tu prends en compte dans ton archi la testabilité de ton code le cout des tests c'est quoi, allez entre 10 et 20% du temps de dev ?
    Evidemment avec des devs formés sur le sujet.
    Et ce surcout tu le récupères largement sur la maintenance (qui est ce qui coute le plus cher dans un projet pour rappel)
    Je ne contredirai pas le fait que des tests bien fait évitent de la maintenance. Je suis tout à fait d'accord avec toi su ce point.
    Après en effet les tests prennent 10 à 20% du temps de DEV (je ne compte pas dedans la rédaction des spécifications mais du développement pur). Or il y a des projets qui prennent 5 à 7 ans, voir plus, de développement, je suis actuellement sur un projet de ce type (le DEV ayant commencé en ~1996 avec des projets démo, la vrai souche du projet ayant démarré vers les années 2000-2005 et on livrera au client d'ici un ou deux ans). Nous n'avons aucun test unitaire. Pourquoi ? Parce que calcules combien cela fait 20% du temps de DEV dans notre cas...
    Mais pour autant nous ne livrons pas de la m*rde... Nous avons des tests de plus haut niveau qui suffisent à rendre robuste notre application pour qu'elle soit vendue à travers le monde (nous livrons des gouvernements juste pour donner le taux de criticité de notre système).


    Citation Envoyé par Marco46 Voir le message
    Un build qui dépasse 5 mins c'est un build trop long.
    Quand tu parles de build tu parles de compilation ? La compilation d'un de nos logiciel met dans les 1h40, on vit pas vraiment dans le même monde.
    Si tu parles de temps de test on peut difficilement comparer différents niveau de test.

    Citation Envoyé par Marco46 Voir le message
    Avec un build de quelques minutes et de bons TU tu livres une version quand tu en as envie. Tu peux livrer plusieurs fois par jour, petit morceau par petit morceau, c'est 100 fois mieux qu'une grosse version tous les 3 mois à l'ancienne.
    Ce n'est pas applicable à toute taille de projet.
    Le mieux que l'on puisse faire c'est livrer toutes les trois semaines. (et on travaille plutôt sur 4semaines pour assurer nos tests en passant plus que de la simple non-régression)

    Citation Envoyé par Luckyluke34
    Mouais... Si les 2% de non-qualité restants engendrent des bugs style Heartbleed, Ariane 5 ou Toyota Camry, je ne suis pas sûr que la balance penche du même côté.

    Pour moi, la pertinence des TU a moins de rapport avec la taille du projet qu'avec sa criticité et le niveau de fiabilité dont on veut s'assurer.
    Tu as plusieurs niveau de criticité, tu as la sécurité et la fiabilité.
    La fiabilité c'est de la performance au niveau service, les TUs t'en as strictement rien à faire.
    La sécurité c'est par contre en partie du niveau du TU, mais là t'as pas besoin de le faire sur l'ensemble du projet mais seulement sur le module impacté. (aucun projet dans le monde n'est certifié de bout en bout de qualité secret défense par exemple, tu auras juste le module central vers lequel tout transite, architecturer son projet d'une autre façon est se tirer une balle dans le pied et procure une fiabilité douteuse ou bien un travail de titan)

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #23
    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 : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 413
    Points : 19 368
    Points
    19 368
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Plus tu as de fonctions plus tu as de tests unitaires à rédiger. C'est un peu le principe des tests unitaires.

    Je ne contredirai pas le fait que des tests bien fait évitent de la maintenance. Je suis tout à fait d'accord avec toi su ce point.
    Après en effet les tests prennent 10 à 20% du temps de DEV (je ne compte pas dedans la rédaction des spécifications mais du développement pur). Or il y a des projets qui prennent 5 à 7 ans, voir plus, de développement, je suis actuellement sur un projet de ce type (le DEV ayant commencé en ~1996 avec des projets démo, la vrai souche du projet ayant démarré vers les années 2000-2005 et on livrera au client d'ici un ou deux ans). Nous n'avons aucun test unitaire. Pourquoi ? Parce que calcules combien cela fait 20% du temps de DEV dans notre cas...
    Mais pour autant nous ne livrons pas de la m*rde... Nous avons des tests de plus haut niveau qui suffisent à rendre robuste notre application pour qu'elle soit vendue à travers le monde (nous livrons des gouvernements juste pour donner le taux de criticité de notre système).
    -_-

    Payes ton effet tunnel ...

    Ben écoutes je te souhaites bon courage, perso j'aimerai pas du tout travailler dans ces conditions.

    Citation Envoyé par transgohan Voir le message
    Quand tu parles de build tu parles de compilation ? La compilation d'un de nos logiciel met dans les 1h40, on vit pas vraiment dans le même monde.
    Si tu parles de temps de test on peut difficilement comparer différents niveau de test.
    Un OS mets moins de temps à compiler. C'est quoi votre truc c'est un clone de PRISM ?

    Par temps de build j'entends la totale qui part des sources pour arriver à un produit fini prêt à installer. Ca peut être le binaire comme ça peut être une archive auto-extractible, etc ... Tout dépends de ce que tu dois livrer.

    Citation Envoyé par transgohan Voir le message
    Ce n'est pas applicable à toute taille de projet.
    Le mieux que l'on puisse faire c'est livrer toutes les trois semaines. (et on travaille plutôt sur 4semaines pour assurer nos tests en passant plus que de la simple non-régression)
    Je pense quand même qu'il y a un problème de taille sur un projet aussi gros. Il y a forcément moyen de découper.
    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

  4. #24
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 344
    Points
    9 344
    Par défaut
    Quel effet tunnel ? On fait de l'Agile pour l'éviter justement cet effet tunnel...

    Un OS mets moins de temps à compiler.
    Tu parles d'un OS qui tourne sur une plateforme native. Et de plus tu parles de quelle configuration pour le compiler ? J'ai déjà eu à compiler plusieurs fois un noyau linux, sur un dual-core 3Ghtz je mettais plus d'une demi-heure.
    Nous nous avons un OS pour une plateforme embarquée ainsi que divers exécutables (s’exécutant sur l'OS ou non, voir même sur d'autres choses que des processeurs) sur du hard qui ne date pas d'hier. Donc les chaînes de compilation sont celles de l'époque. C'est le problème des projets de cette dimension, tu peux pas t'approprier la technologie qui vient de sortir sans planter ta qualification.

    Je pense quand même qu'il y a un problème de taille sur un projet aussi gros. Il y a forcément moyen de découper.
    Je pense moi que tu n'as même pas idée du type de projet sur lequel je travaille. Tant que tu n'auras pas vu de tel projet tu ne pourras pas appréhender ce type de vérité.
    L'informatique ce n'est pas que les ordinateurs, en embarqué on retrouve des microcontrôleurs, des processeurs, des DSP, des FPGA, des ASIC, ect. Et des fois tout ça sur un même appareil. (et je parle pas d'un truc plus gros qu'une mallette hein...)
    Cela peut ressembler à une usine à gaz vu comme ça, mais c'est parfaitement maitrisé. Et j'ai envie de dire heureusement... Il y a des vies en jeu derrière...

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  5. #25
    Membre émérite
    Inscrit en
    janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : janvier 2011
    Messages : 805
    Points : 2 912
    Points
    2 912
    Par défaut
    Citation Envoyé par transgohan Voir le message
    La fiabilité c'est de la performance au niveau service, les TUs t'en as strictement rien à faire.
    ... Je pense qu'on n'a pas la même définition de fiabilité. Et accessoirement, tu n'as pas la même que celle de Wikipédia et de l'ISO :

    la fiabilité, c'est-à-dire la capacité d'un logiciel de rendre des résultats corrects quelles que soient les conditions d'exploitation. En font partie la tolérance aux pannes - la capacité d'un logiciel de fonctionner même en étant handicapé par la panne d'un composant (logiciel ou matériel) ;
    http://fr.wikipedia.org/wiki/Qualit%C3%A9_logicielle

    Les tests unitaires sont un des moyens de s'assurer que le logiciel produit des résultats corrects, donc selon cette définition, ils participent à sa fiabilité.

    Citation Envoyé par transgohan Voir le message
    La sécurité c'est par contre en partie du niveau du TU, mais là t'as pas besoin de le faire sur l'ensemble du projet mais seulement sur le module impacté. (aucun projet dans le monde n'est certifié de bout en bout de qualité secret défense par exemple, tu auras juste le module central vers lequel tout transite, architecturer son projet d'une autre façon est se tirer une balle dans le pied et procure une fiabilité douteuse ou bien un travail de titan)
    Pour moi, les deux sont indissociables. Un bug d'apparence mineur peut engendrer une faille de sécurité. Beaucoup de failles de sécurité sont dûes à l'exploitation d'un cas limite non prévu par les développeurs du système. Au passage, il y a un très bon article qui explique (avec un proof of concept) comment Heartbleed aurait pu être évité grâce à des tests unitaires.

    Parfois, le dysfonctionnement exploité par un attaquant grâce à des inputs non-standard (non testés) aurait aussi bien pu être provoqué par un développeur qui aurait modifié le code et accidentellement généré ces inputs. Les bugs et les exploit peuvent avoir la même origine : la non-qualité donc le manque de tests (ou de preuves de validité du code quelles qu'elles soient).

  6. #26
    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 : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 413
    Points : 19 368
    Points
    19 368
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Je pense moi que tu n'as même pas idée du type de projet sur lequel je travaille. Tant que tu n'auras pas vu de tel projet tu ne pourras pas appréhender ce type de vérité.
    Ah oui visiblement il y a beaucoup de spécificités sur ton projet du coup je comprends mal tes interventions sur un topic qui parle de logiciels beaucoup plus standards.
    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. #27
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 344
    Points
    9 344
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Ah oui visiblement il y a beaucoup de spécificités sur ton projet du coup je comprends mal tes interventions sur un topic qui parle de logiciels beaucoup plus standards.
    J'ai mal compris où il était question de logiciels standards. Il est question de logiciel tout court, c'est libre à l'interprétation et apparemment tu t'y adonnes.
    D'autant plus que certains me répondent en mettant en avant OpenSSL qui n'a absolument rien d'un logiciel standard...
    Pour finir... Qu'est ce qu'un logiciel standard au final ? C'est soumis à interprétation... Si je vous dis qu'un driver HDLC c'est standard vous allez me rire au nez si vous ne faites pas de l'embarqué non ? Bah pourtant c'est tout à fait standard dans mon domaine...
    Faut bien assimiler que l'informatique c'est très vaste comme domaine.

    @Luckyluke34 : tu ne fais pas du test fonctionnel pour dire que ton logiciel est fiable. Tu fais des tests au dessus, à savoir des tests de performance.
    Ce n'est pas parce qu'une fois ton test passe OK qu'il passera OK la seconde fois (bon sauf dans des cas vraiment spéciaux où l'environnement extérieur n'a aucune incidence sur la fonctionnalité, du genre tu rentres 1 et 1 dans un calculette et elle te sort tout le temps 2). Et ça c'est pas les TU qui vont t'apporter quoi que ce soit.
    J'ai au contraire des exemples au boulot sur d'autres projets où ils avaient dans leurs tests 80% de TU. Bah bizarrement tous leurs TUs sont au vert mais leur système ne tient pas 100 itérations d'une fonctionnalité.
    Le TU ne va pas te mettre en évidence une fuite mémoire par exemple. Bref n'osez pas me parler de fiabilité de votre logiciel après avoir passé des TUs cela ferrai virer au fou rire n'importe quel expert...

    Les tests unitaires sont un des moyens de s'assurer que le logiciel produit des résultats corrects, donc selon cette définition, ils participent à sa fiabilité.
    Ils ne font que participer oui, ils ne donnent pas une note finale représentative.
    Si on compare résultat de tests de performances et résultat de tests unitaires les premiers sont bien plus sûr pour construire la note finale. (mais je vous l'accorde bien plus long à passer)

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  8. #28
    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 : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 413
    Points : 19 368
    Points
    19 368
    Par défaut
    Citation Envoyé par transgohan Voir le message
    J'ai mal compris où il était question de logiciels standards. Il est question de logiciel tout court, c'est libre à l'interprétation et apparemment tu t'y adonnes.
    D'autant plus que certains me répondent en mettant en avant OpenSSL qui n'a absolument rien d'un logiciel standard...
    Pour finir... Qu'est ce qu'un logiciel standard au final ? C'est soumis à interprétation... Si je vous dis qu'un driver HDLC c'est standard vous allez me rire au nez si vous ne faites pas de l'embarqué non ? Bah pourtant c'est tout à fait standard dans mon domaine...
    Faut bien assimiler que l'informatique c'est très vaste comme domaine.
    Standard pas standard .... Ce que je dis c'est qu'on a une discussion générique sur les tests et toi tu prends un cas très particulier (le tiens ) pour remettre en cause le cas général que l'on présente.
    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

  9. #29
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 344
    Points
    9 344
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Standard pas standard .... Ce que je dis c'est qu'on a une discussion générique sur les tests et toi tu prends un cas très particulier (le tiens ) pour remettre en cause le cas général que l'on présente.
    Je ne vois pas ce qu'il y a de mal à cela.
    Vous faites une vérité générale, je vous réponds c'est bien mais faut aussi penser à tel cas.

    Je vais faire un parallèle...
    Vous parlez de l'organisation d'un repas en extérieur.
    Je vais vous dire qu'il faut penser au cas où il pleuvra.
    Cela vous semble être un problème ? Cela remet en cause fortement le cas général, ça élargit le débat, et ça ne fait pas de mal.
    Après si vous trouvez mes propos déplacés ou débiles... Bah ne me lisez pas...

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  10. #30
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2007
    Messages : 206
    Points : 814
    Points
    814
    Par défaut
    Ce n'est pas parce que des développeurs qui prétendent pratiquer le TDD ont de mauvaises pratiques que c'est un problème inhérent au TDD.

    Bien sûr qu'il ne faut pas concevoir le modèle d'une application à partir des tests unitaire. Bien sûr qu'il ne faut pas négliger les tests d'intégrations et les tests fonctionnels. Et bien sûr que même si elle peut être plus ou moins formelle la programmation n'est pas une science (et ce n'est pas un déshonneur). Mais en quoi est-ce que le fait de renoncer aux tests unitaires pourrait empêcher quelqu'un de penser que le développement est une science ou que les tests sont la base du design d'un logiciel ? Et est-ce que l'abandon des tests unitaire à pour effet la prise de conscience immédiate chez tous les développeur que les tests d'intégrations et les tests fonctionnels sont eux aussi importants ?

    Le TDD, l'ATDD ou le BDD ne sont des panacées mais ces techniques ne sont pas responsables des mauvais design ou du manque de compétences de certains développeurs. Non le TDD n'est pas mort.

  11. #31
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Arsene Newman Voir le message
    [*]Concevoir le modèle de son application à partir des tests unitaires n’est pas bénéfique.
    Quelqu'un pourrait m'expliquer comment on fait cela, ça me parait être un non sens voire impossible à faire...

    Citation Envoyé par transgohan Voir le message
    J'ai au contraire des exemples au boulot sur d'autres projets où ils avaient dans leurs tests 80% de TU. Bah bizarrement tous leurs TUs sont au vert mais leur système ne tient pas 100 itérations d'une fonctionnalité.
    Le TU ne va pas te mettre en évidence une fuite mémoire par exemple. Bref n'osez pas me parler de fiabilité de votre logiciel après avoir passé des TUs cela ferrai virer au fou rire n'importe quel expert...
    Ce n'est pas le but des TU de tester les fuites mémoires (ni de remplacer les tests fonctionnels) mais plutôt la logique du code.

  12. #32
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2011
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : mars 2011
    Messages : 222
    Points : 763
    Points
    763
    Par défaut
    Citation Envoyé par thierry.pericard Voir le message
    Maintenant, s'il faut passer des heures à débugger des tests à chaque version, c'est que les tests sont mal utilisés.
    Oui, surtout que par principe un test unitaire est 100% automatique, il y a juste les cas de tests à lister, on complète éventuellement lors de la découverte d'un bug. On le fait une fois pour toute et d'une version à l'autre il y a juste à "appuyer sur le bouton"

  13. #33
    Membre actif
    Profil pro
    Inscrit en
    avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2009
    Messages : 182
    Points : 266
    Points
    266
    Par défaut
    Personellement je ne crois pas que le TDD devrais être appliqué systématiquement.

    Mise en situation:

    Tu entre dans une nouvelle équipe un nouveau projet, le projet a une business logic extrêmement complexe et des fichiers de 2000 lignes avec des appels de fonction à ne plus finir.
    Tu recois ta première story, tu as absolument aucune idée de comment faire, ni de par oû commencer. Alors tu commence à lire le code pour essayer de comprendre. Puis à un certain point tu PENSE avoir trouvé une piste pour atteindre ton objectif.

    Alors quest-ce que tu fais ? Tu te lance dans l'ecriture de tests ? Sa semble risqué non ? Tu n'as aucune idée si la piste que tu as trouvé te permet vraiment d'accomplir ton objectif.
    Alors pourquoi commencer à "mocker" une tonne d'objets pour ecrire tes tests et passé possiblement quelque heures sur quelque choses qui ne fonctionneras peut être pas.

    Pour ma part, je commence par trouver le chemin le plus court pour atteindre mon objectif en testant different appel de fonction et en ecrivant par exemple une petite fonction anodine pour passer du point A à B.
    Quand jai terminé, je suis en mesure de mieux comprendre la story dans son ensemble et de penser à comment je vais réaliser le travail proprement. Par la suite je commence l'ecriture des tests.

    Par contre si je connais bien le code, je vais appliqué le TDD religieusement.

    Selon moi il y a beaucoup de loi non écrite en programmation qui mérite parfois d'être transgresser. Je pense qu'appliquer ses loi systématiquement sans se poser de questions est une grave erreur.

  14. #34
    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 : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 413
    Points : 19 368
    Points
    19 368
    Par défaut
    Citation Envoyé par javan00b Voir le message
    Personellement je ne crois pas que le TDD devrais être appliqué systématiquement.

    Mise en situation:

    Tu entre dans une nouvelle équipe un nouveau projet, le projet a une business logic extrêmement complexe et des fichiers de 2000 lignes avec des appels de fonction à ne plus finir.
    Tu recois ta première story, tu as absolument aucune idée de comment faire, ni de par oû commencer. Alors tu commence à lire le code pour essayer de comprendre. Puis à un certain point tu PENSE avoir trouvé une piste pour atteindre ton objectif.
    La première chose à faire c'est d'écrire plein plein plein de tests pour refactorer le mauvais travail de tes prédécesseurs.

    Citation Envoyé par javan00b Voir le message
    Alors quest-ce que tu fais ? Tu te lance dans l'ecriture de tests ? Sa semble risqué non ? Tu n'as aucune idée si la piste que tu as trouvé te permet vraiment d'accomplir ton objectif.
    Alors pourquoi commencer à "mocker" une tonne d'objets pour ecrire tes tests et passé possiblement quelque heures sur quelque choses qui ne fonctionneras peut être pas.
    Si tu n'es pas capable d'écrire les tests, tu n'es pas plus capable de tester l'application manuellement et tu n'as aucune chance d'arriver à faire évoluer l'application. Je veux dire ... Les tests, qu'ils soient unitaires, d'intégration ou e2e, ne sont rien d'autre que des tests programmés de ce que tu pourrais faire manuellement.
    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

  15. #35
    Membre averti
    Avatar de Cyrilange
    Profil pro
    Inscrit en
    février 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2004
    Messages : 268
    Points : 342
    Points
    342
    Par défaut
    Pour moi la TDD n'est même jamais née. Toutes les précédentes fameuses "bonnes méthodes" avant le développement sont toutes mortes. La bonne méthode sera toujours celle que vous aurez choisi pour préparer un projet. Celle que vous aurez mis au point pour laisser libre court à votre créativité.

    Et comme disait Mao :"Peu importe la couleur du chat, du moment qu'on attrape la souris."

  16. #36
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 344
    Points
    9 344
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    La première chose à faire c'est d'écrire plein plein plein de tests pour refactorer le mauvais travail de tes prédécesseurs
    Le dernier qui nous a fait ça s'est fait virer...
    Tu te rends compte un peu de l'implication ?
    Soit on te laisse 6mois pour tout remettre en ordre et ok...
    Sauf qu'on te donnera jamais 6mois (à moins que le projet soit vraiment en chute libre et que le refactoring est absolument nécessaire).
    Commencer à retoucher à un code qu'on ne comprend pas et dont on ne connait pas la philosophie c'est le meilleur moyen de tout faire planter.

    J'ai moi même expérimenté la chose...
    Des fonctions que je devais retoucher, j'y ai trouvé des variables statiques qui n'étaient utilisées que unitairement dans la fonction.
    Je me suis dit c'est débile, c'est une variable globale qui n'est utilisée par personne.
    Bref j'ai dégagé les static.
    Mal m'en prenne... Si elles avaient été mise en static c'était pour une très bonne raison (qui aurait du être commenté faut l'avouer). => dépassement de pile

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  17. #37
    Membre actif
    Profil pro
    Inscrit en
    avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : avril 2009
    Messages : 182
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    La première chose à faire c'est d'écrire plein plein plein de tests pour refactorer le mauvais travail de tes prédécesseurs.
    La réalité cest que la story est evalué à 8h et que sa me prendrais une semaine faire le refactoring.
    Le client à la fin du sprint veux voir les choses qui à ses yeux ont beaucoup de "valeur". Il va pas payer pour un refactoring.

    Citation Envoyé par transgohan Voir le message
    Le dernier qui nous a fait ça s'est fait virer...
    J'ai vu un cas comme sa aussi.

  18. #38
    Membre émérite
    Inscrit en
    janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : janvier 2011
    Messages : 805
    Points : 2 912
    Points
    2 912
    Par défaut
    Citation Envoyé par transgohan Voir le message
    tu ne fais pas du test fonctionnel pour dire que ton logiciel est fiable. Tu fais des tests au dessus, à savoir des tests de performance.
    Bah non, la performance est une qualité orthogonale à la fiabilité. Un logiciel peut être fiable sans être performant et vice-versa. Tu as lu le lien que je t'ai donné ?

    Citation Envoyé par transgohan Voir le message
    Ce n'est pas parce qu'une fois ton test passe OK qu'il passera OK la seconde fois (bon sauf dans des cas vraiment spéciaux où l'environnement extérieur n'a aucune incidence sur la fonctionnalité, du genre tu rentres 1 et 1 dans un calculette et elle te sort tout le temps 2). Et ça c'est pas les TU qui vont t'apporter quoi que ce soit.
    Mais si, c'est justement ça l'intérêt des tests unitaires !!! Ca nous pousse à concevoir le maximum de fonctionnalités de sorte que l'environnement extérieur n'ait aucune incidence sur leur bon fonctionnement...

    Cette recherche du side-effect free est même un des fondements de la programmation fonctionnelle. Il est beaucoup plus facile de raisonner en isolation plutôt que d'avoir à réfléchir à chaque ligne de code à ce qui se passe en cas de défaillance du système.

    Ca ne veut pas dire qu'on ne gère pas les pannes liés à l'environnement extérieur, mais on les gère dans des portions de code séparées dédiées à la communication avec l'extérieur. Chacun sa responsabilité.

  19. #39
    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 : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 413
    Points : 19 368
    Points
    19 368
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Le dernier qui nous a fait ça s'est fait virer...
    Tu te rends compte un peu de l'implication ?
    Soit on te laisse 6mois pour tout remettre en ordre et ok...
    Sauf qu'on te donnera jamais 6mois (à moins que le projet soit vraiment en chute libre et que le refactoring est absolument nécessaire).
    Commencer à retoucher à un code qu'on ne comprend pas et dont on ne connait pas la philosophie c'est le meilleur moyen de tout faire planter.
    Tu commences par faire des tests e2e, le plus haut niveau possible pour qu'il y ait le moins d'implications possibles sur le code. Puis tu descends au fur et à mesure.

    Evidemment si ton ex-collègue décide unilatéralement de passer 6 mois de dev sur ce qu'il veut je comprends qu'il soit mis à la porte !

    Après si moi je rentre dans une boite que je dis qu'il faut faire des tests et que tout le monde se met à rire et à refuser en bloc, je sais que je peux partir je n'apprendrai rien ici. Mais c'est facile de détecter ce genre de boite en entretien.

    Citation Envoyé par transgohan Voir le message
    J'ai moi même expérimenté la chose...
    Des fonctions que je devais retoucher, j'y ai trouvé des variables statiques qui n'étaient utilisées que unitairement dans la fonction.
    Je me suis dit c'est débile, c'est une variable globale qui n'est utilisée par personne.
    Bref j'ai dégagé les static.
    Mal m'en prenne... Si elles avaient été mise en static c'était pour une très bonne raison (qui aurait du être commenté faut l'avouer). => dépassement de pile
    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

  20. #40
    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 : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 413
    Points : 19 368
    Points
    19 368
    Par défaut
    Citation Envoyé par javan00b Voir le message
    La réalité cest que la story est evalué à 8h et que sa me prendrais une semaine faire le refactoring.
    Le client à la fin du sprint veux voir les choses qui à ses yeux ont beaucoup de "valeur". Il va pas payer pour un refactoring.



    J'ai vu un cas comme sa aussi.
    Évidemment il ne faut pas expliquer au client que tu fais du refactoring ! Si ton client est intelligent tu lui expliques qu'il faut régulièrement améliorer la qualité d'un projet parce qu'elle se dégrade au fur et à mesure que les versions sortent mais sinon tu lui dis rien du tout et tu inclus le cout dans chaque US. Et tu refactores pas tout d'un coup.
    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

Discussions similaires

  1. problème non identifié (boucle peut être ?)
    Par cldlk dans le forum Débuter
    Réponses: 7
    Dernier message: 22/10/2014, 07h55
  2. Le TDD est mort ? non, pas vraiment, peut-être que oui
    Par Arsene Newman dans le forum Méthodes Agiles
    Réponses: 30
    Dernier message: 12/06/2014, 11h31
  3. 2 ans XP, c'est le moment de changer (peut être)
    Par harry85 dans le forum Salaires
    Réponses: 6
    Dernier message: 02/06/2010, 15h01
  4. Comment pas donnée peut être égale 0
    Par edonis dans le forum IHM
    Réponses: 1
    Dernier message: 01/02/2008, 22h26
  5. Réponses: 15
    Dernier message: 19/09/2007, 19h46

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