Le but est de pouvoir très facilement réutiliser les tests unitaires pour tester la capacité de montée en charge de vos applications.
JUnitScenario est une applications Java sous licence LGPL. Cette version n'est pas très "propre", nous prévoyons de la refondre, de développer un plug-in eclipse pour créer les fichiers scenario.xml et de stocker les résultats dans une base.
Après avoir testé les applications grâce aux tests unitaires, nous espérons que l'on va désormais pouvoir tester la montée en charge des applications avant leur mise en production.
Nous espérons apporter une pièce de plus à l'industrialisation des logiciels.
Aller plus loin
- JUnitScenario (9 clics)
- Un exemple (5 clics)
- Projet sf.net : JUnitScenario (5 clics)
# JOnAS certifié J2EE par sun !
Posté par Stéphane Traumat (site web personnel) . Évalué à 4.
http://jroller.com/page/jonaslive/20050203#jonas_passes_j2ee_1_4(...)
La concurrence a du soucis a se faire :)
http://about.me/straumat
[^] # Re: JOnAS certifié J2EE par sun !
Posté par kruskal . Évalué à 0.
Maintenant vous allez peut etre pouvoir vous pencher sur la compatibilité gcj :)
[^] # Re: JOnAS certifié J2EE par sun !
Posté par Stéphane Traumat (site web personnel) . Évalué à 1.
http://about.me/straumat
[^] # Re: JOnAS certifié J2EE par sun !
Posté par kruskal . Évalué à 3.
Pour ce qui est du respect de gcj des differents standards de java, ok c pas votre boulot.
En revanche, des scripts de compilation, du bug tracking, c'est un peu votre role aussi.
[^] # Re: JOnAS certifié J2EE par sun !
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
http://about.me/straumat
[^] # Re: JOnAS certifié J2EE par sun !
Posté par kruskal . Évalué à 2.
Bon, sinon, heureusement qu'on a redhat, ils font bien avancer les choses autour de java.
Dans FC4, on aura un bel environnement java basé sur gcj, comprenant entre autre eclipse.
[^] # Re: JOnAS certifié J2EE par sun !
Posté par Stéphane Traumat (site web personnel) . Évalué à 3.
http://about.me/straumat
# Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
On a pas mal de projets, nottament au niveau de la création de scripts et de l'exploitation statistique des résultats
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 3.
Bref, super désagréable...
Je me demandais pourquoi il y avait toujours autant de mouvements dans le libre autour de java avec les problèmes de licences qu'il y a sur ce language et Sun qui fait tout pour le contrôler.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 8.
Je donnais une conf l'après midi, peut etre y as tu assisté ??
Pkoi autant de mouvements ? c difficile de répondre:
- Un langage complet qui couvre tous les besoins
- Des poids lourds du libre (Apache, codehaus...)
- Des poids lourds de l'industrie (IBM, Oracle, BEA...)
- Des projets fantastiques (Derby, hibernate, jonas, c-jdbc...)
- Des méthodes mises en place peut etre plus vite que dans d'autres langages (test unitaires, aop....)
- Des environnements de développements exceptionnels (eclipse, netbeans)
- Un grand nombre d'architectes et de créateurs de génie
- Multi plateforme
- Une architecture éprouvée
bref j'adore java pour tout ça :)
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 4.
Sinon non je n'ai fait aucune conférence, je suis passé rapidement parce qu'il y avait des gens que j'avais besoin de voir.
Pour tout ce que tu listes c'est bien, mais le problème fondamental quand on utilise quelque chose c'est aussi qu'il n'y ait pas de soucis ultérieurs légaux non ? J'aimerais que Sun ne soit pas seul à décider de tout et de rien. Quid de C# dans l'histoire, il permet aussi beaucoup de choses.
- Un langage complet qui couvre tous les besoins
Ah ? Ca y est, on a trouvé le language ultime qui sert à tout ? Je croyais que les développeurs Java s'étaient réveillés depuis quand même :)
- Des projets fantastiques (Derby, hibernate, jonas, c-jdbc...)
- Des méthodes mises en place peut etre plus vite que dans d'autres langages (test unitaires, aop....)
Ah, les autres n'ont pas la possibilité de faire des tests unitaires ?
- Des environnements de développements exceptionnels (eclipse, netbeans)
La dessus on est d'accord, Eclipse est vraiment puissant. En fait l'environnement de développement est super important tout court à partir du moment ou il permet de bosser plus vite et propre. Pour netbeans je suis plus sceptique. On peut tout à fait envisager des environnements similaires sur d'autres languages, quid des outils sous macOSX ou sous Windows ? (outre le fait que Eclipse est libre, au moins, sur un language qui ne l'est pas vraiment).
- Un grand nombre d'architectes et de créateurs de génie
(...)
- Multi plateforme
Ah il y a que chez moi que java (sun) rame grave (linux) ? Java multiplateforme, je suis très sceptique... Enfin chacun voit midi à sa porte.
- Une architecture éprouvée
Quelle architecture ? Le language ?
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 3.
"Ah ? Ca y est, on a trouvé le language ultime qui sert à tout ? Je croyais que les développeurs Java s'étaient réveillés depuis quand même :)"
Ce n'est pas ça... juste qu'avec Java, dans ma boite, on peut couvrir tous nos besoins, d'autres langages sont certainement dans ce cas... je voulais juste dire que Java nous permet de faire ce qu'on a besoin de faire pour tous nos clients.
"Ah, les autres n'ont pas la possibilité de faire des tests unitaires ?"
Si bien sur... mais de ce que j'ai vu, on faisait des tests unitaires en Java bien avant que les gens en fassent en php ( mais on était pas avant smalltalk )... et c t juste un exemple... j'ai pas vu l'aop en php par exemple ?
"Ah il y a que chez moi que java (sun) rame grave (linux) ? Java multiplateforme, je suis très sceptique... Enfin chacun voit midi à sa porte."
beh oui, je travaille pour des mutuelles par exemple ou l'on déploie sous linux et ca rame pas.. désolé...
"- Une architecture éprouvée"
Plutot philosophique... style hibernate + pojo + dao + session facade
c une solution éprouvée qui nous permet un maximum de réutilisation et un minimum d"écriture ( pas de sql, pas de code de sécurité, pas de code de transport... )
après, tu as aussi toute la stack J2EE
http://about.me/straumat
[^] # Re: Autre chose
Posté par tanguy_k (site web personnel) . Évalué à 1.
C# est surement meilleur que Java, l'inverse serait etonnant puisqu'il a ete cree apres Java et donc ils ont pu voir ce qui fonctionnaient bien de ce qui ne fonctionnaient pas parfaitement.
En revanche il faut quantifier ce "meilleur". C++ par rapport au C apporte enormement de choses (notamment la POO) qui permettent de developper beaucoup plus vite et mieux.
Java par rapport au C++ apportent egalement enormement, rien que le garbage collector est en grand pas en avant. Dans le livre Thinking In Java, Eckel explique notamment que l'on developpe 50% plus vite en Java qu'en C++ sans compter tous les autres avantages (pour info Eckel fait ou faisait parti du commitee de standardisation du C++).
Maintenant avec C# est-on 5% plus efficace qu'en Java ou 50% ? Es ce que des innovations aussi importantes que le gc ou la POO a leurs epoques on ete introduites dans C# ?
Tout ca pour dire que si C# est seulement un peu mieux que Java, peu de gens vont changer leurs habitudes, leurs codes, leurs outils, leurs connaissances pour quelque chose qui au final n'apporte que peu d'ameliorations. La preuve: le C qui a 30 ans est encore beaucoup utilise alors que des languages bien meilleures existent depuis longtemps.
Je dis ca mais je n'ai jamais teste C# (juste lu des docs et des examples de code), mais je pense (peut etre a tord) que ces ameliorations sont mineures par rapport a Java ou a d'autres languages existants.
PS: pas la peine de retorquer qu'en C on peut faire de la POO, que Java n'a pas invente le gc, que Python et que Objective C... je le sais mais il faut faire court :)
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
C'est quand même marrant de voir que sun qui a collé un procès à MS (sans doute avaient-ils raison, c'est pas la question) soit obligé de bosser à fond pour que leur truc marche nikel sur Windows parce que sinon ils savent qu'ils sont mort commercialement...
Ce n'est pas parce que le gain entre java et c# ne sera que de 5% en terme de temps de développement que l'un ne prendra pas le pied sur l'autre. Ca peut aussi être parce que t'as les outils de base, qu'il y a une volonté commerciale derrière, ou parce que tout simplement ça marche mieux...
[^] # Re: Autre chose
Posté par tanguy_k (site web personnel) . Évalué à 1.
> terme de temps de développement que l'un ne prendra pas le pied
> sur l'autre.
Cela depend de ce qu'on inclue dans ce gain. Je pense qu'il faut tout prendre en compte: les libs, le compilo ou VM, mais aussi les outils disponibles comme editeur, debuggueur, generateur d'interface ect...
> parce que tout simplement ça marche mieux...
Ca je n'y crois pas, je ne change pas ma pigo 205 pour une 206 parceque celle-ci "marche mieux". Comme pour les voitures, changer de language de programmation a un cout. Pour une entreprise le cout peut etre enorme, j'ai bien des amis qui programment en COBOL en entreprise !
Donc je te pose la question, moi (entreprise ou particulier) quel est l'avantage d'abandonner Java ou C++ au profit de C# ? j'y gagne quoi ?
Pour l'instant il faut installer un truc qui fait jesaispascombiendeMo pour executer du C#.
Pour l'integration avec le C je peux le faire tres facilement en C++, Python, Objective C et en Java c'est aussi possible. Et puis ca se trouve j'ai tout simplement pas besoin de m'interfacer avec du code C. En Java par exemple, je n'ai personnellement jamais eu besoin de reutiliser du C, il y a deja pas mal de composants et de libs en Java (c'est meme plutot l'inverse, je trouve pleins de trucs en Java alors que je le voudrais en C++).
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
Par rapport à C++ j'imagine qu'il n'y a pas besoin de faire un long discours, il me paraît évident (tous les avantages de langages OO à VM). Pour Java pour le moment l'avantage peut ne pas être clair, excepté tous les soucis discutés dans cette news de brevets et standardisation.
Pour l'integration avec le C je peux le faire tres facilement en C++, Python, Objective C et en Java c'est aussi possible.
C++ ? Bof on s'en fout un peu en fait, beaucoup le considèrent comme chiant car il est objet mais qu'il ne le force pas. Python ? Bof aussi, c'est pour d'autres utilisations. Pas compilé (je ne parle pas des trucs qui te permettent sur telle ou telle archi de le compiler, ça ne compte pas, c'est des bypass pour moi), pas de typages fort, pas vraiment objet non plus, pas d'interface, pleins de trucs pas propre en terme d'objet (len() et autres). Avec C# cf http://www.linuxgazette.com/node/8794(...) c'est relativement simple, tout de même.
De plus il me paraît évident que .net sera installé par défaut sur les versions ultérieures de Windows, c'est un atout non négligeable (ça fait mal mais c'est comme ça)
[^] # Re: Autre chose
Posté par Gabriel . Évalué à 3.
Le libre prend des initiatives et java - non pas les récupère , ils ont essayé mais maintenant les grands acteurs préfèrent accompagner le mouvement. Par exemple Tomcat: je crois me souvenir qu'au départ Sun faisait sa petite implémentation du conteneur web dans son coin et apache faisait la même chose de son côté. Et assez vite, Sun a laissé faire Apache et tomcat est maintenant l'implémentation de référence.
Sans le libre java ne serait pas ce qu'il est.
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 3.
Ce serait bien sur Sun s'en rende compte...
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 3.
J'aimerais que les soucis évoqués sur http://www.gnu.org/philosophy/java-trap.html(...) soit réglés.
Les commentaires ici http://linux.slashdot.org/comments.pl?sid=139394&threshold=5&am(...) sont plutôt pertinents d'ailleurs, et comparent bien c# et Java.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
Pour le reste, bah ça me pose un réel soucis si je code des applications sur la durée, toute de même.
J'apprécie de plus en dotNet le fait qu'il soit possible en théorie (puis en pratique en fait aussi) d'utiliser des composants dans d'autres langages. Finalement quand je code je me fous de savoir en quoi est codé un composant tant qu'il fait ce dont j'ai besoin, avec certaines contraintes (performances, etc).
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 3.
les choses ne sont pas décidés de manière arbitraire...
beh pour dotnet.. j'attends de voir un emseble de produits de dev (libre) et des applications en production...
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
beh pour dotnet.. j'attends de voir un emseble de produits de dev (libre) et des applications en production...
C# est plus récent, il est normal que les outils soient en retard, surtout comparé à Eclipse. Maintenant il faut pas pousser, il existe déjà des outils de dev libres (#develop / monodevelop), des plateformes de développements GPL (mono), des applications en productions ( http://www.novell.com/products/ifolder/(...) ) mais ça on ne le voit pas forcément si on utilise Windows, vu qu'on se fout de comment a été codée l'application qu'on utilise.
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Sun met aussi de super produts en production avec ces dernières technos :)
ce qui m'intéresse, ce sont des boites ou des produits importants qui ont vraiment un truc qui tourne sous linux avec mono et qui ont développé plus vite qu'avec d'autres langages avec #develop par exemple.
http://about.me/straumat
[^] # Re: Autre chose
Posté par TImaniac (site web personnel) . Évalué à 2.
C'est un peu comme si tu faisais un parlement mais avec uns députés filtrés et non élus.
Je préfère perso largement un consortium parfaitement indépendant qui m'assure que tout ce qu'il normalise est LIBREMENT implémentable et sans DISCRIMINATION.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Tu veux dire que sun décide qui a le droit de s'incrire et qui n'a pas le droit ?
http://about.me/straumat
[^] # Re: Autre chose
Posté par TImaniac (site web personnel) . Évalué à 1.
Tout est dit.
Et puis bon, quand je vois l'implémentation des generics dans java 1.5, je me dis qu'ils doivent vraiment pas avoir beaucoup de poids les autres membres, parcque franchement laisser passer cette solution est vraiment déplorable et dénué de bon sens.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 4.
Pkoi chez ecma et chez microsoft, tu fais toc toc à la porte, tu demandes à la secrétaire la salle de réunion, tu prends une chaise et un café et discute comme ça des specs ?
tu n'as rien à signer ?
participes tu à la plateforme .Net ? est ce que les gens de NHibernate vont participer à l'élaboration de l'outil de mappingO/R de microsoft ?
Tiens, sérieusement, est ce que NHibernate, NUnit et spring.net tournent avec mono ?
http://about.me/straumat
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Pour ceux qui ont pas saisie l'ironie, regardez ce qu'il faut pour pouvoir être à l'ecma...
Pour les individuels ou les oganisations comme apache, j'ai meme pas compris comment faire pour le rejoindre !
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
http://www.ecma-international.org/memento/NFP.htm(...)
Bah ils en font partis, ça tombe bien ...
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
N'empeche que mon idée qui est que la signature d'un contrat est oblgiatoire meme pour emca... car je voyais pas bien ce qui dérangait timaniac avec le contrat sun...
Par contre, timaniac, si tu pouvais répondre à mes questions mono un peu plus haut, j'ai un client qui se posait la question
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
Pour parler de ce que j'ai testé, Nunit marche parfaitement (faut dire implémenter un truc de tests unitaire c'est pas très dur), pour http://www.spring.net/(...) je pense pas ;) Pour NHibernate de ce que j'en lis sur les liste ça marche.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Pour demander si il est vraiment sérieux d'utiliser mono alors que des projets "importants" tournent pas dessus :)
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
Dans 2 ans je suis très curieux de ce que tout ça donnera. Pour des projets importants je ne sais pas si j'utiliserai Mono (je n'en sais rien, pas regardé d'assez près), pour les miens oui. Cependant ça ne pourra que se bonifier avec le temps, et j'ai été très surpris de voir les performances de Mono sur mes Linux en rapport avec la JVM Sun.
[^] # Re: Autre chose
Posté par TImaniac (site web personnel) . Évalué à 3.
Je pensais pas qu'il y avait besoin de préciser la suite :
" When Sun executes the agreement, a copy will be faxed back to you."
Et il se passe quoi s'ils te répondent pas ?
N'ont-ils pas là le pouvoir le décider qui a le droit de fiare partie du commité ?
Alors oui, j'en conviens, il faut signer un accord pour faire partie de ce genre de consortium, ca me paraît évident, mais dans le cas JCP ben je trouve pas celà très "indépendant".
De plus le jour où Sun décide que non après tout le JCP celà ne lui convient plus il se passe quoi ?
Et puis Java & Co restent des marques de Sun, bref Sun fait ce qu'il veut sur son produit si celà lui chante, et enmerde qui il veut (genre MS qui implémente une version non conforme de la JVM, je ne juge pas sur la pertinence mais je constate cette possibilité qu'a Sun que l'ECMA ne permet pas)
au fait C# et les bases de .NET sont à l'ECMA ET à l'ISO, bref, c'est des vrais standards reconnus.
Plus sérieusement en dehors de ce débat sur l' "indépendance" de la techno et de sa normalisation, la questiond e la maturité ne se pose pas, elle est évidente : Java a 15 ans (à la louche) et Mono est en produciton depuis 6 mois.
Seulement quand on voit la maturité qu'à atteind Mono en si peut de temps comparé aux autres projets Java LIBRES (Kaffe, gcj), je me dis qu'il n'y a pas du tout la même réactivité des 2 côtés.
Pour ce qui est de l'environnement de développement il faut bien reconnaître que Eclipse n'a pas d'égal dans le monde Mono (Visual Studio posant évidement trop de limitation en matière de libertés). Mais tout le mérite revient à IBM, et non à l'adoption de Java par le LL face à sa maturité.
est ce que les gens de NHibernate vont participer à l'élaboration de l'outil de mappingO/R de microsoft ?
Je captes pas là, c'est quoi le rapport ?
Des solutions de mapping O/R il en existe des dizaines, NHibernate est sans doute la plus répendue (grâce à la renommée de la version Java), mais je ne vois pas en quoi ils doivent s'impliquer dans une solution de MS, à la limite je trouve celà pas plus mal qu'ils gardent leur indépendance "technologique".
Enfin bref, évitons les trolls, et concluons :
- les 2 parties font des efforts côté ouverture.
- ECMA/ISO est un meilleur gage de normalisation que le JCP (qui comme son nom l'indique a été créé par et pour Sun)
- Java est beaucoup plus mature
- Mono n'a pas d'appli industrielles pour faire des démonstrations
Par contre question communauté du LL, Mono a l'air d'être beaucoup plus adopté, en tout cas si je me réfère au site GnomeFiles :
http://www.gnomefiles.org/(...)
Regardes dans les best rated le nombre d'appli Mono (7 sur 20) et le nombre d'appli Java...
Sinon un truc pour nous réconcillier :
IKVM.
un mariage audacieux entre Mono et Gnu ClassPath :)
[^] # Re: Autre chose
Posté par Philippe F (site web personnel) . Évalué à 3.
En jetant un coup d'oeil rapide, j'ai strictement rien vu de neuf donc je suis un peu sceptique.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
JUnitScenarion permet juste de simuler un certain nombre d'utilisateurs lancant certains tests pendant un certain temps...
Ca permet en fait du'tiliser les tests unitaires pour simuler plusieurs utilisateurs sur l'application et ainsi s'assurer que l'appli tient le coup avant sa mise en prod
http://about.me/straumat
[^] # Re: Autre chose
Posté par B r u n o (site web personnel) . Évalué à 1.
note (regaine habituelle) : je suis aussi un utilisateur de java, mais ce genre de news pour une version pas trés propre (sic) a-t'il vraiment sa place sur linuxfr ? Applications-server.com, TSS, un journal dlfp, etc... serait plus approprié, non? C'est en train de devenir FreshmeatFr.org ici
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 2.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Ce projet se voulait aussi un peu l'écho d'une news passé plus tot sur l'utilité des test unitaires...
La, l'idée est de se dire : ok les tests unitaires sont fondamentaux, par contre, pkoi ne pas s'en servir pour tester la "scability" des applications avant leur mise en place ?
Bref, l'indistrualisation du développement logiciel ;)
http://about.me/straumat
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Philippe F (site web personnel) . Évalué à 3.
La somme des tests unitaires ne constitue pas un test fonctionnel. Il faut mettre son grain de sel (sa connaissance du fonctionnement du bazar) dedans. Dans mon experience, on s'appuie sur les mecanismes mis en place lors des tests unitaires, mais on ne re-utilise pas les tests unitaires tel quel.
C'est un peu comme la generation automatique de test unitaire a partir des headers. C'est genial sauf que 50 tests unitaires auto-generes ne peuvent remplacer des tests ecrits par le developpeur, qui va tester la ou ca fait mal.
Ce que tu me decris me semble plus facile a mettre en place avec un vrai test, fait non pas d'assemblage de tests unitaires, mais de reproduction du comportement d'un utilisateur.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
creerClient, creerDevis, transformerDevisEnCommande...
Ces tests reproduisent en gros ce que les utilisateurs vont faire avec l'application, donc pourkoi ne pas les utiliser pour simuler les actions des utilisateurs?
Par exemple écrire un scenario vendeur
en simulat qu'en une heure ce type d'utilsisateur va créer 6 clients et 15 devis... et de simuler que 15 vendeurs vont travailler sur l'application en continue ?
Et surtout, le tout en écrivant un bete fichier xml tout simple.. c tout
est ce plus clair ?
http://about.me/straumat
[^] # Re: Autre chose
Posté par Romain Vinot . Évalué à 3.
Donc les tests unitaires ne permettent pas du tout de tester une appli réelle. Il y a les tests de recettes qui sont fait pour ça.
Après, effectivement, on peut utiliser des outils de type JUnit pour créer des tests de recettes (dont une partie peut être des tests de charge), mais il ne faut surtout pas dire que JUnitScenario permet de réutiliser les tests unitaires pour faire des tests de charge. C'est une grosse erreur et contribue au flou qui entoure la définition d'un test unitaire.
Pour info, il existe HtmlUnit qui utilise le framework JUnit également et dont le but est de simuler un navigateur web qui permet de faire des tests de recettes de façon très simple. Mais attention faire des tests de recettes automatiques, c'est autrement plus compliqué que des tests unitaires automatiques.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Pas pour moi, mes tests unitaires testent toutes les fonctionnalités de la couche service, c'est à dire la logique métier que je vais partager.
Mes tests unitaires créent reelement les clients et tout le reste dans la base, ils me permettent de valider ma couche service et de garantir sa conformité.
"C'est une grosse erreur et contribue au flou qui entoure la définition d'un test unitaire."
Pas du tout d'accord, ma définition est claire, les tests unitaires servent surtout pour nous à valider les fonctionnalités de l'application pour s'assurer que tout ce qui sera développé fonctionnera correctement.
Je ne vois pas ou est la difficulté
creerClient() créer un client tel qu'une appli ou un utilisateur le ferait et on valide juste que cette fonction peut etre appelée 50 fois par heures par 50 utilisateurs sans que le serveur crash.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Romain Vinot . Évalué à 3.
Ok, mais chaque utilisateur de JUnit a sa propre définition de test unitaire et s'en sert à sa manière.
L'utilisation "orthodoxe", celle mis en exergue par les auteurs initiaux de Junit et du TDD (Test Driven Development) n'est pas la même définition que la tienne. Pour eux, un test unitaire doit tester une partie de code et non pas une fonctionnalité. D'où l'utilité de objets bouchons (stubs), des Mock et autres bizarreries. Pour tester une fonctionnalité, il ne faut clairement pas utiliser d'objets stubs, puisque ça modifie clairement l'environnement qui n'est plus comme un serveur de production. Par ailleurs, l'accès à la BD est un problème récurrent. Pour faire du TDD et lancer les tests 3 fois par heure, tu ne peux pas te permettre d'accéder à la BD pour les 2000 tests qui tu as écris.
Plus d'infos sur http://www.junit.org,(...) http://www.easymock.org,(...) ...
Maintenant, ton utilisation de Junit est parfaitement valable pour tes tests de fonctionnalités que tu appelles tests unitaires. Chacun fait ce qu'il veut avec l'outil qui lui convient et tout est bien dans le meilleur des mondes :)
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Ils ont pas vu assez loin :)
Personnelement, avec une couche service qui a ses interfaces publiées, on peut désormais facilement écrire les tests unitaires correspondant. Ces tests peuvent ensuite être lancées pour valider les services indépendament des applications développées au dessus de cette couche.
Je pense que ne pas tester cette couche est une erreur...
pour la base de données, je vois pas le prb de voir ce qu'elle peut supporter :)
http://about.me/straumat
[^] # Re: Autre chose
Posté par Romain Vinot . Évalué à 2.
Pour la BD, son accès est lent (comparativement à un accès direct en RAM). Quand tu exécute 2000 tests et que tu veux pouvoir les exécuter en moins d'une minute (c'est un des pré-requis de la méthodologie TDD), bah, avec une BD ça va pas être possible.
En plus, les tests unitaires, il est hautement conseillé de les rendre indépendant les uns des autres et de l'environnement. Ce sont des tests standalone (D'où le coup du setUp et du tearDown qui sont exécutés A CHAQUE TEST). Avec la BD, ce n'est pas possible. Tu ne peux pas générer une BD propre pour chaque test.
Mais encore une fois, tout cela ne concerne que la vision spécifique des amateurs de TDD, ce n'est pas la tienne, c'est tout. Mais bon, j'aime bien quand même cette conversation alors je continue :)
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
"Quand tu exécute 2000 tests et que tu veux pouvoir les exécuter en moins d'une minute"
Ca ne m'interesse pas dans le cadre du développement d'applications métiers... le but pour moi est que si il y a 1000 créations de clients par heure avec l'appli que je développe, c'est de m'assurer que la base, l'os, le serveur d'appli, le réseau et tout le reste vont résister à ces 1000 créations.
"Tu ne peux pas générer une BD propre pour chaque test."
On a une tache init qui regénère la base, insière les donénes de config et lance le tout... on peut à tout moment relancer tous les tests de l'application.. sans prérequis ou config spéciale....
"Mais encore une fois, tout cela ne concerne que la vision spécifique des amateurs de TDD, ce n'est pas la tienne, c'est tout. "
Tout à fait :) c'est toujours enrichissant de discuter serainement avec des gens intelligents.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à -2.
Ouais, gros con.
--
Désolé, j'ai pas pu...
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à -1.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Romain Vinot . Évalué à 1.
Non. ca ne t'intéresse pas dans le cadre des tests que tu réalises. Ca n'a rien à voir avec le fait que le développement soit d'application métier ou pas (ce qui d'ailleurs ne veut pas dire grand chose, y a quelqu'un qui développe autre chose que des applis métiers ?).
Et si je veux exécuter UN test unitaire ? J'ai un bug quelque part, j'ai déterminé dans quelle classe il était, je crée mon test unitaire qui va bien et je veux exécuter juste celui-là. Je fais comment avec ton système ?
Ca montre bien que ce ne sont pas des tests unitaires que tu fais mais plutôt des tests de recettes ou des tests de fonctionnalités !
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Ce que je veux dire par la, c que cela ne me sert à rien un test sans base de données !
"Et si je veux exécuter UN test unitaire ? J'ai un bug quelque part, j'ai déterminé dans quelle classe il était, je crée mon test unitaire qui va bien et je veux exécuter juste celui-là. Je fais comment avec ton système ?"
Je crois que tu n'as pas bien saisi, si j'ai un test à lancer, je ne vais pas utilisier JUnitScenario !
En fait, on développe comment avant, on lance nos testcase avec JUnitEE, ou une tache ant ou eclipse, classqiue koi.
On développe comme d'ab.
C'est juste que les vendredis soir, on lance junitscenario pour qu'il stresse le serveur le week et qu'on voit lundi si le serveur tient la charge et si les performances sont "assez bonne".
http://about.me/straumat
[^] # Re: Autre chose
Posté par Romain Vinot . Évalué à 1.
Donc le JUnitScenario n'est pas conforme à la philosophie de JUnit. Et alors ? La belle affaire ? Qu'est-ce j'en ai à pêter ? Heu bah rien, c'était juste pour discuter :)
Comme j'ai la vague sensation que ça commence à tourner un peu en rond, je vais arrêter la conversation là, ça vaudra mieux que de se répeter encore et encore...
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
Prenons mon exemple, on a 3 tests
creerClient
creerDevis
transformerDevisEnCommande
Ce sont des choses que l'utilisateur final va faire.. cela a donc un sens de les lancer les uns après les autres car au final, c ce que l'utilisateur va faire
donc on simule bien l'utilisation reelle de l'application et c'est la le but, ce n'est pas du tout de faire la suite de junit ou un truc de ce genre...
si tu veux discuter par mail ou tel, je suis dispo ;)
http://about.me/straumat
[^] # Re: Autre chose
Posté par Philippe F (site web personnel) . Évalué à 8.
Le signification de test unitaire est acceptee par beaucoup de monde et signifie "tester independamment des morceaux de code". Le but est de mettre en evidence des problemes dans un morceau precis de code de facon a faire de la non-regression. Cette definition est supportee d'une part par les livres traitant d'extrem programming, d'autre part par la communaute et les outils de test unitaires.
Les tests fonctionnels ont un autre role: validation de l'integration de toutes les briques ensemble, stress de l'application par l'envoi de requetes en serie, reproduction du comportement d'un utilisateur.
Typiquement, comme te le dis le monsieur plus haut, creerClient va juste generer une requete SQL fictive et validera que la requete est ce qu'elle doit etre. Idem pour creerDevis. La conclusion logique, c'est que lancer l'un apres l'autre ne stresse pas du tout l'application car ce sont des tests _unitaires_
Maintenant, tu peux mettre en place des tests fonctionnels, en t'appuyant aussi sur Junit et les executer via un scenario. C'est une bonne idee et je fais ca aussi dans mes projets. Dans ce cas, ton test creera effectivement une vraie base de donnee et reproduira le comportement d'un utilisateur.
C'est le fait que JUnit puisse etre utilise dans deux contextes differents (tests unitaires, tests fonctionnels) qui seme la confusion ici.
En continuant a appeler ton projet JUnitScenario, tu risques de ne pas du tout faire comprendre l'utilite de ton soft (donc tu peux oublier les contributeurs):
- les gens qui ne connaissent rien au test unitaire ne seront pas interesses
- les gens qui connaissent les tests unitaires comme moi trouveront ton bidule inutile.
Je te conseille donc pour le bien de ton projet de faire bien comprendre le message. Qqch comme:
"JunitScenario builds an automation framework on top of JUnit to perform functional tests and stressing tests".
Une fois que ce point la est eclairci, ton projet devient interessant.
Mais si tu veux, tu peux continuer a appeler test unitaire un test fonctionnel. Tu peux aussi appeler le soleil "Lune". Mais ca reste le soleil et personne ne te comprendra.
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 3.
J'aime bien ta définition, je vais la reprendre.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
http://about.me/straumat
[^] # Re: Autre chose
Posté par Pierre Tramonson . Évalué à 2.
JUnit permet certes de faire des tests unitaires (!) mais on peut aussi s'en servir pour faire des tests fonctionnels, qui sont plus proches de la réalité.
Chez moi, chaque jeu de test fontionnel reprend différents jeux de tests unitaires et simule une fonctionnalité en lançant successivement les différents TU.
Après il est possible de regrouper les tests fonctionnels dans JUnitScenario, et bien... à voir j'ai pas encore testé.
# Utilité
Posté par Etienne Juliot (site web personnel) . Évalué à 1.
Merci les gars.
Par contre, y a t il une intégration à Maven de prévue, en plus de Ant ?
Avez vous pris contact avec les mecs de JUnit pour les informer du projet ?
[^] # Re: Utilité
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
non, on a juste fait une première version pour voir l'interet... on a vu jmeter et junit mais c un peu trop lourd :(
notre truc lui est vraiment simple...
on cherche des petites mains habiles sinon ;)
http://about.me/straumat
# De la concurrence...
Posté par Yves Martin . Évalué à 1.
Grinder fait déjà beaucoup de choses comme la répartition machine/process/thread avec synchronisation des clients sur la console. A voir si ce n'est pas mieux de lui adjoindre un plugin pour TestCase JUnit et d'améliorer sa définition de scénario plutôt que de tout refaire.
[^] # Re: De la concurrence...
Posté par Stéphane Traumat (site web personnel) . Évalué à 2.
mais c vrai que je n'ai pas l'habitude de développer la partie présentation, donc je voulais un truc super simple ( le fichier scenario.xml est la seule chose à faire et ca prend pas plus de 15 minutes ) pour pouvoir tester ma couche service
http://about.me/straumat
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.