|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Bonjour,
Je vous propose un nouvel article dans les séries "en 5 minutes" et "3T ou les Tests en Trois Temps", intitulé "3T en pratique, application au calcul de la suite de Fibonnaci, en 5 minutes". Vous trouverez cet article à l'adresse suivante : http://thierry-leriche-dessirier.dev...acci-3t-5-min/ Ce petit tutoriel montre comment mettre en œuvre 3T (Tests en Trois Temps), pour développer une fonctionnalité simple (la suite de Fibonnaci dans l'exemple) en s'aidant des tests, le tout en quelques minutes. A noter que vous retrouverez mes autres articles de ces séries à l'adresse suivante http://thierry-leriche-dessirier.dev...#page_articles Bonne lecture.
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|
70
|
|
|
#2 |
|
Membre éclairé
![]() Architecte de système d'information Inscription : mai 2011 Messages : 168 ![]() |
Bonjour,
Très intéressant comme approche : simple et efficace. Merci beaucoup. @+
__________________
Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité. |
|
|
00
|
|
|
#3 |
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Merci. Je vais rougir.
Vous pouvez également consulter les autres articles sur 3T ainsi que. Eux de la série "en 5 minutes".
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|
10
|
|
|
#4 |
|
Membre Expert
![]() ![]() Gilles VinoSoftware Developer Inscription : mars 2008 Messages : 1 309 ![]() |
Tres bon article, bonne idée ce cahier des charges et l'organisation des tests autour de celui-ci.
Connaitriez-vous de bons tutoriels sur les différents scénarios de test? Par exemple pour la suite de Fibonacci, l'oubli d'une regle dans le cahier des charges pourrait générer une erreur pour 1 ou plusieurs valeurs. Je ne sais pas si vous voyez ce que je echerche, mais en gros ce sont les diagrammes qui permettent d'organiser l'ordre des tests et les différentes valeurs a tester pour optimiser au mieux le processus. Ou cela? |
|
|
00
|
|
|
#5 |
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Bonjour,
En fait, je ne comprend pas très bien la question. Mes autres articles sont disponibles ici : http://thierry-leriche-dessirier.dev...#page_articles
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|
10
|
|
|
#6 |
![]() ![]() Romain LinsolasJava craftsman Inscription : juillet 2005 Messages : 3 579 ![]() |
Bonjour,
Je n'ai pas encore lu ton article sur les 3T, je ne parle donc qu'en connaissance de ce qu'est le TDD. Et je dois dire que ce qui est écrit ici n'en est hélas pas (ou alors de loin). Pour rappel, l'idée du TDD est la suivante (dans ses grandes lignes) :
A la fin de chaque "itération" TDD, le code doit fonctionner, et tous les tests - y compris ceux qui ne sont pas directement liés à ma fonctionnalité courante - doivent être au vert. Dans ton article, il y a plusieurs "infractions" au TDD :
Un point également sur la façon d'écrire les tests unitaires. Pour moi, un test ne devrait pas (ou alors peu) être commenté, car il doit être "auto-explicatif", en particulier parce que lorsqu'un test échoue, on va souvent le savoir par mail ou via l'outil d'intégration continue (je parle en dehors du moment où je suis en train d'écrire ce test, dans mon cycle TDD). Or, si Jenkins m'avertit que le test "testFibonacci_RG024_3_a" échoue, ça ne va pas m'être d'une grande utilité, car je ne sais pas exactement à quoi correspond ce test. Surtout si ce n'est pas moi qui ait écrit ce test. S'il avait été nommé par exemple "fibonacci_of_3_should_be_2", alors c'est beaucoup plus clair. De même, au lieu d'avoir "testFibonacci_RG024_4_a", je préfèrerais avoir un "fibonacci_cant_calculate_negative_value"... Je passerais finalement sur l'aspect "Documentation Driven Development" où l'ajout massif de commentaires (aussi bien dans le code que dans les tests) est, de mon point de vue, plus un handicap qu'un avantage, rendant le code moins lisible, et nécessitant une maintenance assez lourde... Voyons les choses positivement : tu cherches à sensibiliser les gens sur l'importance des tests (unitaires), et l'intérêt que l'on a de les écrire avant le code. Et ça s'est bien. Mais tant qu'à faire, autant respecter les principes du TDD... ps: le graphique en III-C n'apporte pas grand chose, surtout que l'on ne voit que 2 courbes, alors que l'on s'attend à 4 d'après la légende.
__________________
Nous sommes tous semblables, alors acceptons nos différences ! -------------------------------------------------------------- Liens : Blog | Page DVP | Twitter Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009 Critiques : Apache Maven |
|
20
|
|
|
#7 | |||||||||
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Citation:
Je trouve (et je ne suis pas le seul) que les TDD sont trop complexes. L'idée de 3T est d'avoir une démarche quasi systématique, dont chaque étape peut être réalisée par une personne différente. Citation:
Comme, dans 3T, ce sont des personnes différentes qui écrivent les tests et le code de production, c'est logique que la personne écrive directement tous les tests. En fait je trouve que la démarche d'écrire et de coder un test à la fois, c'est lent et contre productif. C'est la porte ouverte à plein de dérives que 3T cherche à combattre. Citation:
Citation:
Citation:
Si le CP fait l'approximation que tous les tests ont la même valeur, et que l'application est composée de N tests pour couvrir les N règles du cahier des charge, alors il peut suivre l'évolution du projet en fonction de l'évolution du vert/rouge de surefire par exemple. Faut bien comprendre que 3T est une "méthode pour les faignants" où on a un document de référence, qui te donne l'interface de référence, qui te donne les tests de références, puis enfin le code de production. Citation:
cf. http://thierry-leriche-dessirier.dev...ratique/#LIV-A Citation:
Je te renvoie vers les autres articles : http://thierry-leriche-dessirier.dev...#page_articles Je pensais aussi à l'opportunité de remplacer/compléter la doc par des annotations... Citation:
J'aurais pu rappeler ce passage : http://thierry-leriche-dessirier.dev...n-pratique/#LI Citation:
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|||||||||
|
10
|
|
|
#8 | |||||||||
![]() ![]() Romain LinsolasJava craftsman Inscription : juillet 2005 Messages : 3 579 ![]() |
Thierry,
Citation:
Citation:
Là où ça se complique, c'est de savoir définir correctement des tests, et également de savoir les écrire. S'il est vrai que pour du code "simple" comme Fibonacci, le problème ne se pose pas, ce n'est plus le cas lorsque l'on attaque des vraies applications du monde réel. Définir des mocks n'est pas toujours simple, écrire un vrai test unitaire (i.e. en isolation) dans un environnement complexe l'est encore moins. Sur cet aspect de la complexité à écrire des tests corrects, je ne vois absolument pas en quoi 3T est plus simple que le TDD. Citation:
Je ne vois pas comment cela pourrait être envisageable. Cela signifierait par exemple avoir une application ne pouvant compiler qu'à la toute fin. Et d'avoir un cahier des charges qui n'évolue (presque) pas. Citation:
Mais du coup, je me demande si ton 3T ne devrait pas plutôt lorgner du côté du BDD que du TDD ? Citation:
Citation:
Toutefois, peut-être qu'il serait mieux de le dire explicitement, pour que l'on garde à l'esprit le "first, make it work. Then, make it fast" (i.e. fais en sorte que ça marche, optimise seulement après). Citation:
Déjà, je félicite le chef de projet qui connait l'ensemble des règles métiers par leurs identifiants (qui plus est sont assez obscurs - que signifie le suffixe 3.a pour la règle RG024 déjà ?). Franchement, je pense que même un chef de projet préfère savoir que le test qui échoue est celui qui est censé vérifier que Fibonacci de 3 vaut 2, plutôt que le test qui vérifie la règle RG024.3.a. Mais bon, là c'est plus une convention de nommage des tests, et ce n'est pas directement lié au fait d'appliquer 3T, TDD ou autre... Ensuite, les rapports de l'intégration continue (ou mieux, de Sonar) sont loin d'être la seule préoccupation du CP. Un développeur qui ne s'en préoccupe pas est pour moi un mauvais développeur, car il ne s'inquiète même pas de la qualité de son code ! Citation:
Ce genre de reflexion me fait penser au concept ô combien trompeur du "jour/homme".Dans ton exemple de Fibonacci, tu as des tests super simples (dire que Fibonacci(3) = 2 par ex.) et d'autres qui peuvent s'avérer plus complexes (toute exécution de Fibonacci doit prendre moins d'1 seconde). Avec ce genre de considération, on peut très facilement tomber dans le principe du "80/20". Implémenter les 80 premiers % des tests peut te prendre 20% de ton temps, alors que les 20 derniers % te prendront 80% du temps. Si l'un des "avantages" du 3T est de donner ce genre d'indicateurs à ton CP, alors c'est se tirer une balle dans le pied (et avec un Magnum 47 au minimum) ! Citation:
Que se passe t'il si ton test est faux ? Tu le jettes entièrement et en recrées un nouveau ? L'écriture d'un test n'est pas chose aisée (dans la vraie vie, j'entends), alors si un test évolue et que je dois tout refaire, que de temps perdu ! Quel est l'intérêt de ne pas considérer les tests comme du code... Mais quoi plus précisément ? Comme expliqué au tout début, TDD c'est une pratique très basique à la base. Rien de miraculeux. La vraie complexité, à nouveau, c'est de bien écrire les tests. A la limite, la seule grosse distinction que je vois entre les 3T et le TDD, c'est la façon dont on écrit la "specification des tests". Romain
__________________
Nous sommes tous semblables, alors acceptons nos différences ! -------------------------------------------------------------- Liens : Blog | Page DVP | Twitter Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009 Critiques : Apache Maven |
|||||||||
|
10
|
|
|
#9 | ||||
![]() ![]() Romain LinsolasJava craftsman Inscription : juillet 2005 Messages : 3 579 ![]() |
Pour réagir à ton edit :
Citation:
Suivant cet état d'esprit (déplorable), faire du TDD ou du 3T revient à peu près au même (et je suis gentil, je ne parle pas de ces faignasses qui font du pair programming où on paie 2 gars à faire le boulot d'un seul ).Citation:
Citation:
Citation:
__________________
Nous sommes tous semblables, alors acceptons nos différences ! -------------------------------------------------------------- Liens : Blog | Page DVP | Twitter Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009 Critiques : Apache Maven |
||||
|
10
|
|
|
#10 | ||||||||||||||||
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Je vais essayer de répondre à tout ça. D'abord il faut comprendre que 3T est une "méthode" que j'essaie de formaliser. Elle s'inspire des TDD et aussi, comme tu l'as deviné, des BDD. Pendant longtemps, je n'étais pas satisfait des TDD pour les raisons que je vais expliquer plus tard. Toujours est-il que cet échange m'aide à mettre au point 3T et/ou à l'améliorer. D'ailleurs, je suis toujours à la recherche de partenaires pour m'aider à formaliser 3T.
Le truc qui me gène le plus avec les TDD, c'est que les développeurs (et leurs chefs) ne savent pas vraiment par quel bout le prendre. Chacun voit midi à sa porte, ses propres contraintes et besoins, ses attentes personnelles, etc. L'idée de 3T, c'est de dire clairement comment faire les choses, dans quel ordre, qui fait quoi, etc. Alors... Citation:
Seulement, voilà, les "gars d'au dessus" ne comprennent pas ce genre de raisonnement. Le "gars d'au dessus", il voit les dépenses mais pas les gains. Il se dit seulement que les tests représente du temps de développement en plus sans voir le temps qu'on gagne sur le codage de production. Il se dit qu'il paye déjà très cher des prestataires experts et qu'il ne devrait pas avoir à financer leurs lubie pour les tests. Il se dit, souvent à juste titre, que ça va encore plus embrouiller les équipes. Bref, il n'a pas envie de payer pour ça. Du coup, je me suis demandé comment faire en sorte que les "tests ne coûtent pas plus cher" directement, quitte à faire des concessions sur d'autres choses. L'idée est de trouver un compromis acceptable dans la plupart des cas. Pour cela, je me suis demandé sur quoi je pouvais m'appuyer pour valider l'écriture des tests. La réponse a été de s'appuyer sur le cahier des charges. En effet, celui-ci a été écrit par des supers experts fonctionnels (payés le double de moi) et doit donc être parfait LOL. En tous cas, puisque le chef me balance les spécifications dans la tronche, autant rebondir dessus. Dans un premier temps, un développeur (et non un fonctionnel) va recopier le cahier des charges sous forme d'interface. Ce sont des copié-collés relativement simples, qui ne coûtent donc pas cher. C'est presque un travail de grouillot... J'exagère mais vous comprenez l'idée. C'est gratos... Ca le chef, il aime toujours. Ensuite, un autre développeur va écrire tous les tests de la fonctionnalité, d'un coup. Il s'appuie pour cela sur l'interface précédemment écrite. Il recopie les numéros des règles pour bien référencer les demandes. Et puis, enfin, on développe comme on le ferait avec les TDD. Alors évidement, je prend des raccourcis, mais ça me semble largement raisonnable. L'idée, c'est surtout de mécaniser la partie que le chef n'a pas envie de payer. Remarque : En pratique, le cahier des charge est souvent un assemblage hasardeux de post-it mais ça marche pareil, et c'est même encore mieux. Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
Si le cahier des charges change, déjà ça veut dire qu'on change de sprint ou que quelqu'un a mal fait son travail, et bien, on change les tests en conséquence. Citation:
Citation:
Citation:
Citation:
Citation:
Je pense que la plupart des développeurs se concentrent malgré tout sur leur périmètre. Disons un sonar associé à un hudson et plein de plugins divers ;-) Citation:
Par exemple, si c'est dans du scrum, avec des unités de temps bien choisies, ça peut rendre bien. Mais là autant utiliser directement le burndown... Là je suis preneur de toutes les bonnes idées pour mécaniser cette partie. Citation:
Citation:
Bon ça fait une réponse super longue mais ça fait avancer le sujet.
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
||||||||||||||||
|
10
|
|
|
#11 |
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Je précise que plusieurs équipes utilisent actuellement 3T. Les retours sont globalement positifs pour l'instant. Les développeurs ont surtout apprécié d'avoir une sorte de guide.
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|
10
|
|
|
#12 |
|
Membre Expert
![]() ![]() Gilles VinoSoftware Developer Inscription : mars 2008 Messages : 1 309 ![]() |
Vous faites un super bon boulot avec votre débat les gars.
Merci c'est tres formateur. Je vous laisse continuer ![]() PS: Je comprend tres bien le principe des TDD et 3T, j'y arrive pour une classe (style Fibonacci) mais je ne sais pas du tout comment faire a partir du moment ou il y a plusieurs classes et reliées a une base de données. Auriez-vous un tuto, un lien ou un exemple du principe? |
|
|
00
|
|
|
#13 | ||
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Citation:
Citation:
Pour répondre plus précisément à ta question. Je te conseille d'abord la lecture de deux autres articles sur 3T : * 3T : les Tests en Trois Temps : http://thierry-leriche-dessirier.dev...va/methode-3t/ * Les Tests en Trois Temps (3T) en pratique : http://thierry-leriche-dessirier.dev...t-en-pratique/ Le premier est une introduction à 3T. Le second est une mise en condition sous forme d'un miniroman. En outre, je conseille le très bon tutoriel de Bruno Irsier, à propos des TDD, sur developpez.com à l'adresse http://bruno-orsier.developpez.com/t...TDD/pentaminos Pour les tests des bases de données. En plus de JUnit, j'utilise DbUnit qui permet notamment d'avoir des jeux de test, comme des bases de données, sous forme de fichiers XML. Ca fait beaucoup d'autres choses que je ne détaillerai pas ici. Tu peux compléter avec des systèmes de simulacre comme EasyMock et/ou de mock comme Mockito. Pour cela, je te renvoie vers plusieurs articles : * Easymock ou le bouchon royal : http://thierry.leriche-dessirier.com...o-easymock.htm * Série de blog Spock (1/3) – Spock, JUnit et le Data Driven Testing : http://www.java-freelance.fr/java/sp...driven-testing * Les erreurs courantes avec EasyMock : http://www.java-freelance.fr/java/le...-avec-easymock * EasyMock – Techniques avancées : http://www.java-freelance.fr/java/ea...iques-avancees J'espère que ça te donne des bonnes pistes. Il y a déjà un max de lecture là.
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
||
|
10
|
|
|
#14 | |||||||||||||||||
![]() ![]() Romain LinsolasJava craftsman Inscription : juillet 2005 Messages : 3 579 ![]() |
Bonjour Thierry,
Continuons notre petit débat Citation:
Faire du TDD, ou même "simplement" écrire des tests est contraignant : ce n'est pas simple (écrire des mocks, tester des choses difficilement testables, écrire du code testable même) et on est vite tenté de se décourager. Ou alors de se dire "bon, je fais du TDD, mais là, je suis un peu pressé alors je vais le faire 'à l'ancienne', et je reviendrais faire des tests plus tard" (sous-entendu je n'y reviendrais plus). Là, je peux comprendre ton travail sur les 3T : tu essaies de créer un cadre plus strict, de façon à éviter justement cela, en donnant des tâches à chacun. L'idée derrière cela étant d'éviter que le développeur n'écrive pas les tests pour son code, puisque c'est une autre personne qui les écrira. Reste que malgré tout, que ce soit avec 3T ou TDD, il faut que les développeurs adoptent une certaine discipline quand même, jusqu'à ce que cela devienne naturel... Citation:
Toutefois, je n'aime pas entendre le "surcoût généré par l'écriture des tests". Ce que je veux dire par là, même si je sais que l'on en est encore loin aujourd'hui, c'est que normalement, l'écriture des tests fait partie de l'écriture du code, et ne devrait normalement pas être dissocié. Les tests sont là non seulement pour vérifier que le code écrit fait ce que l'on attend de lui, mais c'est aussi une aide précieuse au développeur pour savoir comment écrire son code. C'est un peu comme si l'on veut écrire un texte et qu'en plus, il faut aussi écrire un brouillon. Le brouillon fait partie du processus de l'écriture du texte, et donc ne devrait pas être compté à part. Citation:
Citation:
Citation:
Et je doute qu'un travail, aussi court soit-il, soit un travail gratuit. Citation:
Mais ce n'est pas suffisant. Les tests unitaires ont au moins 2 buts :
Citation:
Donc où se trouve le gain concrètement ? Citation:
Citation:
Je me répète mais pour que ce soit bien clair : j'ai compris que 3T peut aider à formaliser un peu mieux les choses en affectant des responsables à chacune des tâches. Mais cela ne simplifie pas pour autant le processus de développement et ne réduit pas non plus le coût de l'écriture des tests... Citation:
Citation:
Citation:
Etant donné qu'avec 3T tu écrits tous les tests d'un coup, tu vas avoir plein de tests en échec, et il faudra attendre la fin du développement de ta fonctionnalité - ce qui peut prendre plusieurs jours - pour que tu retrouves du code sain sur ton SCM. Et pour moi, ce n'est pas acceptable d'avoir un tel état. Car il faut bien penser que ton équipe de développement peut être étendue, et que tu as donc plusieurs fonctionnalités développées en parallèle. Du coup, ça va vite être le capharnaüm quand tu as une dizaine de développeurs et une demi-douzaine de fonctionnalités en cours de développement. L'idée principale de l'intégration continue est d'intégrer - de façon continue - une modification dans l'ensemble de ton application. Si le code que tu viens de commiter casse un test à l'autre bout de ton application, alors tu vas pouvoir réagir immédiatement pour corriger cela (vive les tests de non régression !). Or, s'il y a 3 autres fonctionnalités en cours de développements, je ne pourrais pas savoir si le commit que je viens d'effectuer est correct, car j'aurais 25 tests qui échoueront, dûs aux choses non encore développées par mes collègues. Mais peut-être que dans le tas il y a un test qui vient d'échouer justement à cause de mon code commité à l'instant ? Je ne peux pas le savoir. Dommage ! Bref, avec ce principe, tu reviens quelques années en arrière, où tu vas devoir régler tes problèmes d'intégration à la fin de ton cycle... Citation:
Mais de toutes façons, je pense que le CP lui, il s'en fiche de savoir quel test échoue. Ce qui doit l'importer, c'est qu'aucun test n'échoue (cf. mon chapitre précédent). Si un test échoue, c'est plutôt la préoccupation du leader technique et tous les développeurs. Et eux seront bien contents d'avoir un test avec un nom parlant, surtout quand il porte sur une partie qu'ils ne connaissent pas forcément... Citation:
J'aime d'ailleurs beaucoup cette phrase : Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live. (code toujours en pensant que la personne qui aura à maintenir ton code est un violent psychopathe qui connait ton adresse) C'est un minimum vital pour tout projet, n'est-ce pas ? Citation:
Malheureusement, on tombe trop souvent sur des fameuses méthodes agiles "ajustées" par les entreprises, pour que ces méthodes s'adaptent à leur façon de penser et de fonctionner. Au final, ces pratiques n'ont d'agile que le nom, et sans surprise amènent à l'échec. Et naturellement, la conclusion est que les méthodes agiles ne fonctionnent pas Citation:
Citation:
Donc ils devraient être versionnés Tout pareil !
__________________
Nous sommes tous semblables, alors acceptons nos différences ! -------------------------------------------------------------- Liens : Blog | Page DVP | Twitter Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009 Critiques : Apache Maven |
|||||||||||||||||
|
20
|
|
|
#15 | |||||||||||||||||
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Merci pour toutes ces précisions. Je pense qu'on avance dans le bon sens. Un de mes prochains article sera justement un truc du style "Formalisation de la méthode 3T, les Tests en Trois Temps" et c'est clair que ça m'aide à discerner ce qui n'est pas clair, mais aussi ce qui n'est pas adapté.
Citation:
Citation:
Citation:
Citation:
Avec 3T, une de mes cibles est justement les DP qu'il faut convaincre. Et pour cela, ça passe forcément par le porte monnaie. Citation:
Citation:
Citation:
Citation:
Sur un ancien projet, le CP nous avait demandé de faire des tests d'un Web Service mais on n'a jamais vraiment réussi à comprendre ce qu'il attendait et ça a traîné en longueur. On n'a jamais pu se mettre d'accord sur un format. etc. Et le CP, de toutes manières, il ne savait pas non plus LOL Citation:
Petite digression : Les Echecs ou le Go, tu peux apprendre les règles en 10 minutes. Il te faudra des années avant d'être bon mais tu peux t'amuser tout de suite. Par contre, Donjon et Dragon, ou même Risk, je n'ai jamais été bien loin. Trop long. Trop de choses à voir dès le début, etc. Citation:
Citation:
Que penses-tu du compromis suivant : Code :
Citation:
Citation:
Citation:
Citation:
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|||||||||||||||||
|
20
|
|
|
#16 | |
|
Membre éprouvé
![]() Inscription : janvier 2011 Messages : 155 ![]() |
Citation:
J'avais fait un peu les mêmes réserves lorsque Thierry avait publié l'article précédent, bien que je trouve la méthode intéressante : http://www.developpez.net/forums/d11...n/#post6316304 |
|
|
|
00
|
|
|
#17 |
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Le cahier des charges n'est jamais parfait. Sur les articles précédents, j'utilisait carrément des post-it. Toutefois si l'équipe joue le jeu et complète le jeu de post-it, on peut dire que le cahier des charges monte d'un cran vers la perfection ;-) Bon soyons honnêtes, on n'aura jamais un cahier des charges parfait. On peut juste essayer de faire de notre mieux, sous réserve que l'équipe joue le jeu.
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
|
00
|
|
|
#18 | ||||
![]() ![]() Romain LinsolasJava craftsman Inscription : juillet 2005 Messages : 3 579 ![]() |
Je voudrais rajouter deux choses concernant l'intégration continue et les tests :
1. Je dis que c'est le minimum vital pour un projet car cela ne coûte (presque 2. Concernant l'histoire des tests qui ne compilent pas, pour moi c'est un vrai problème. Mais heureusement, j'ai une suggestion à te faire qui ne te coûtera rien (enfin presque rien ). Afin de ne pas chambouler tes principes, en particulier l'écriture de l'ensemble des tests unitaires d'un coup, pourquoi ne pas faire ignorer ou catégoriser ces nouveaux tests ? La 2e option étant d'ailleurs bien meilleure. Cela ne coûte qu'une annotation Java, et ça va changer ta vie.Explications. Considérons ces 2 tests unitaires : Code :
Ensuite, tu configures le plugin Surefire de Maven pour qu'il exécute ou non les tests non implémentés (i.e. annotés avec la catégorie). L'idéal serait d'avoir 2 profils Maven :
C'est'y pas magique ? Pour info, voici à quoi ressemblerait le pom : Code xml :
Bon, ce n'est pas forcément exactement cela, car je ne suis pas sûr qu'il va intégrer aussi les tests non catégorisés (à tester donc). Il va falloir peut-être un peu bidouiller le pom, ou alors être obligé d'annoter aussi les tests une fois finalisés, mais avec une autre annotation bien sûr
__________________
Nous sommes tous semblables, alors acceptons nos différences ! -------------------------------------------------------------- Liens : Blog | Page DVP | Twitter Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009 Critiques : Apache Maven |
||||
|
20
|
|
|
#19 | ||
![]() ![]() Thierry Leriche-DessirierInscription : octobre 2007 Messages : 2 140 ![]() |
Oh la la
Citation:
Citation:
J'avais cherché une solution de ce genre sans réussir à trouver un truc bien. Faut que je vois comment intégrer ça. Comme quoi ça vaut le coup de partager avec des spécialistes de l'IC.
__________________
Thierry Leriche-Dessirier Ingénieur Architecte JEE Freelance Rédacteur pour Developpez Professeur de Génie Logiciel à l'ESIEA Page sur Developpez : http://thierry-leriche-dessirier.developpez.com Site : http://www.icauda.com Linked'in : http://www.linkedin.com/in/thierryler Twitter : http://www.twitter.com/thierryleriche |
||
|
00
|
|
|
#20 |
![]() ![]() Romain LinsolasJava craftsman Inscription : juillet 2005 Messages : 3 579 ![]() |
Content que ça puisse t'être utile. Comme tu peux le voir, c'est très simple désormais de catégoriser ses tests avec JUnit et Surefire.
JUnit a introduit tardivement (surtout comparé à TestNG) les catégories (JUnit 4.8 de mémoire), et l'a introduit d'une façon assez déplaisante. Il suffit de voir tout ce qu'il faut faire normalement sur cet exemple : http://weblogs.java.net/blog/johnsma...t-categories-0 Mon principal grieff étant de définir en plus des catégories une Suite qui listera les classes de tests à intégrer dans la catégorie. Du coup, si tu ne maintiens pas ta suite à jour, il est possible d'oublier des nouvelles classes de tests. Pour éviter cela, dans mon application, j'avais créé une mini-librairie pour catégoriser les tests avec une annotation, et qu'ensuite, ce soit Maven et mon propre Runner JUnit qui partent à la recherche des classes annotées. Ma solution, pas parfaite mais qui fonctionne, est expliquée en détails ici : http://linsolas.free.fr/wordpress/in...it-avec-maven/ Mais tout cela est désormais obsolète, car Surefire 2.11 a permis d'utiliser les <groups> directement, sans plus avoir à définir son propre Runner et sa Suite. C'est ce que j'ai expliqué dans mon précédent post.
__________________
Nous sommes tous semblables, alors acceptons nos différences ! -------------------------------------------------------------- Liens : Blog | Page DVP | Twitter Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009 Critiques : Apache Maven |
|
00
|
Copyright © 2000-2013 - www.developpez.com