26-02-2016, 12:32 PM
(Modification du message : 26-02-2016, 12:34 PM par Sephi-Chan.)
26-02-2016, 06:31 PM
Je pense en effet qu'il n'a pas comprit l’intérêt. TDD c'est vraiment super intéressant.^^
Citation :Le principe même de l’orienté objet, à savoir l’encapsulation ou « la boite noire », fait qu’on ne peut s’assurer du bon fonctionnement d’une méthode qu’en en lisant le code source, et non en la testant de l’extérieur.Ah bon? Hier encore, j'ai encore écrit des méthodes, je les passe au test, paf j'ai eu 3 ou 4 problèmes à régler avant qu'elle ne marche. Ton argumentation c'est de dire: puisque vous n'êtes pas exhaustif dans les tests, la preuve mathématique n'est pas faite que votre fonction marche bien tout le temps. C'est vrai... Sauf que sous entendre que le cerveau humain en lisant cette même méthode testera de manière exhaustive (et même mieux qu'un PC) la dite méthode, c'est vraiment ridicule... Si tu veux de l’exhaustivité, pour des méthodes simple comme abs(), tu peux tjs faire une boucle dans ton test, comme ça tu testeras de -9999999 à +9999999, c'est tjs pas exhaustif, mais ça devrait couvrir tout tes cas d'utilisation XD Sinon là je suis en train de continuer mon moteur de combat pour TMI, et bien quand j'ai créer ma méthode hit?() j'ai utilisé l'appel à des méthodes qui n'existait pas encore ! C'est exactement ça l'esprit TDD, c'est pas de définir un cas particulier, c'est d'écrire du code tel que tu voudrais qu'il soit, sans avoir écrit toutes les boites noires qu'il utilise au préalable. On pourrait dire que c'est coder en asynchrone... Traditionnellement, on écrit du code et dès qu'on a besoin d'une méthode, on va l'écrire, puis on revient à l'endroit qui l'utilise et on continue. Là, le principe c'est plus de dire : j'écris toute ma méthode, sans partir ailleurs, même si j'appel des trucs qui n'existe pas encore, on s'en fou, on écrit la méthode jusqu'au bout, point. Puis après, on va aller faire les boites noires manquantes (où on réutilisera le même technique par ailleurs). PS: je trouve rspec tellement illisible en comparaison de mes tests^^ sans doute une question d'habitude :p
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
26-02-2016, 10:07 PM
C'est agréable de se savoir lu J'essaierai d'ajouter un bouton "Réagir sur JeuWeb" en bas des articles, qui renverrait idéalement soit sur l'ouverture d'un nouveau sujet (si l'article n'a pas été débattu), soit sur le sujet de débat existant (s'il y en a un).
C'est effectivement un argument intéressant que d'utiliser les tests comme cas d'exemple d'utilisation d'une méthode, à des fins de documentation. Après, une méthode est censée être élémentaire et simple: est-ce que l'ajout de tests pour décrire son intention reflète une méthode trop complexe (faisant trop de choses)? Formulé autrement, c'est le nom de la méthode, ses paramètres et la première ligne de documentation qui devraient indiquer l'intention de la méthode, et le test est une illustration d'exemple? @Argorate: Tu peux tester ta boucle: tu vas juste tester les cas que t'avais prévu. Or, à mon sens, ce sont ceux qui n'ont pas été prévus qui foireront. Ce que tu décris est simplement la séparation entre la signature publique d'une méthode et son implémentation. Je ne vois pas le lien avec le TDD. Ecrire des tests pour faire office d'exemple de documentation/d'utilisation, je comprends le concept et je il est effectivement intéressant. Mais je reste quand même sceptique quant au principe de se servir de ses tests comme spec...
27-02-2016, 01:31 AM
Excellent.
Assez d'accord avec Argorate sur le fond du TDD. Pour ceux qui ne connaissent pas le TDD et qui découvrent. En PHP c'est pas mal avec phpspec. Exemple de petits algos en PHP ici pour ceux qui veulent en savoir plus : https://github.com/laracasts/Code-Katas-in-PHP Pour ma part, j'essai de plus en plus de faire du TDD, et je commence à avoir du mal à m'en passer....
27-02-2016, 03:27 AM
(Modification du message : 27-02-2016, 11:07 AM par Sephi-Chan.
Raison de la modification: Réparer la citation.
)
Oui, quand on y a gouter, on commence à ne vouloir travailler plus que comme ça ^^
J'avoue que Rails permettant l’accès et l’exécution dans sublim text lui même, même pas besoin de ligne de cmd, un simple raccourci suffit, ça incite bien à tester la méthode. Citation :Je ne vois pas le lien avec le TDD.oui, c'est bien pour ça que j'ai introduit mon propos en disant que tu n'as pas comprit, c'est pas une "boite", c'est juste que je pense que tu n'as pas encore vu l’intérêt... ça viendra
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
27-02-2016, 11:41 AM
(Modification du message : 27-02-2016, 11:42 AM par Sephi-Chan.)
(26-02-2016, 10:07 PM)Xenos a écrit : C'est effectivement un argument intéressant que d'utiliser les tests comme cas d'exemple d'utilisation d'une méthode, à des fins de documentation. Après, une méthode est censée être élémentaire et simple: est-ce que l'ajout de tests pour décrire son intention reflète une méthode trop complexe (faisant trop de choses)? Formulé autrement, c'est le nom de la méthode, ses paramètres et la première ligne de documentation qui devraient indiquer l'intention de la méthode, et le test est une illustration d'exemple? Comme tu le vois, dans la vraie vie les méthodes sont moins élémentaires. Elles ne sont pas souvent pures et ne font pas que retourner une valeur : elles modifient la base de données. En émettant des attentes sur l'état de la base de données après le passage du code dans certaines conditions de départ, tu définis un contrat dans ton code, et tu n'implémentes que le minimum pour t'y conformer. Bien sûr, ce n'est qu'un contrat qui communique une intention : il requiert donc un peu de bon sens pour ne pas coder le cas de réussite du test en dur, mais je suppose que tu l'avais compris. (26-02-2016, 10:07 PM)Xenos a écrit : @Argorate: La boucle dans le test est une très mauvaise idée : ça ne sert strictement à rien d'autre qu'en ralentir l'exécution. Ce qu'il décrit, c'est simplement le fait de réfléchir à la tronche du code que tu appelles, et ce avant de l'écrire. C'est ce que tout le monde fait mentalement, TDD ne fait que formaliser ça. (26-02-2016, 10:07 PM)Xenos a écrit : Ecrire des tests pour faire office d'exemple de documentation/d'utilisation, je comprends le concept et je il est effectivement intéressant. Mais je reste quand même sceptique quant au principe de se servir de ses tests comme spec... Pourquoi sceptique ? Quels défauts y vois-tu ? Ne serait-ce que pour la rapidité de développement, ça vaut le coup ! C'est paradoxal venant d'un type qui ne sort jamais rien. Rester concentré à concevoir et développer le système, sans s'embêter à lancer du code à la main, se remettre dans les conditions de départ, etc. Je mets mon éditeur en split view (le test d'un côté, le code de l'autre) et je lance juste le test sur lequel je bosse (Command + Shift + R), quand il passe je lance le fichier de test entier (pour éviter les régressions, Command + Shift + T). |
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Test Driven Javascript, qu'utilisez-vous ? | niahoo | 7 | 4 647 |
09-03-2013, 01:46 AM Dernier message: niahoo |
|
[Test de développement] FizzBuzz, le test de la mort | Sephi-Chan | 53 | 48 823 |
01-07-2010, 04:41 PM Dernier message: srm |
|
Démon et jeu en php | Cartman34 | 25 | 10 028 |
17-05-2008, 06:25 AM Dernier message: Cartman34 |