JUnitScenario 0.1 vient de sortir

Posté par  (site web personnel) . Modéré par Amaury.
Étiquettes :
0
14
fév.
2005
Java
JUnitScenario est un outil pour simuler l'utilisation d'une application avant sa mise en production. Il permet de décrire des scénarios qui sont composés d'appels à des tests unitaires et d'émuler plusieurs utilisateurs exécutant ces scénarios.

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

  • # JOnAS certifié J2EE par sun !

    Posté par  (site web personnel) . Évalué à 4.

    au fait, pour info, JOnAS a été certifié J2EE 1.4 !
    http://jroller.com/page/jonaslive/20050203#jonas_passes_j2ee_1_4(...)
    La concurrence a du soucis a se faire :)

    http://about.me/straumat

  • # Autre chose

    Posté par  (site web personnel) . Évalué à 2.

    Si des gens/sociétés veulent participer au projet, ils seront les bievenus :)

    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  (site web personnel, Mastodon) . Évalué à 3.

      A la linux-expo j'étais à côté d'un mec de IBM à qui je voulais parler (ou HP, mais je crois que c'était IBM), et deux mecs de objectweb étaient en train de discuter pour voir si cette boite pouvait pas signer pour faire parti du consortium. J'ai tenté de discuter avec un des deux mecs, mais j'ai bien vu que je les faisais chier.

      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  (site web personnel) . Évalué à 8.

        il fallait plutôt venir voir sur le stand d'Objectweb ou François t'aurait reçu avec grand plaisir :) et j'aurais aimé aussi discuté avec toi !
        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  (site web personnel, Mastodon) . Évalué à 4.

          En gros ce qu'on m'a rétorqué quand j'ai posé quelques questions à ces mecs avec des tshirts objectweb c'est "faites pas chier, allez voir le stand" (pas dit comme ça, mais le coeur y était), alors évidemment ça ne m'a pas trop donné envie.

          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  (site web personnel) . Évalué à 3.

            C# est une bonne alternative et quand tu vois ce que c'est, tu te dis que java n'est pas sur la mauvaise voie ;)

            "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  (site web personnel) . Évalué à 1.

            > Quid de C# dans l'histoire, il permet aussi beaucoup de choses.

            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  (site web personnel, Mastodon) . Évalué à 2.

              Néanmoins, s'il est beaucoup plus facile de réutiliser du C dans du C#, ou si un système d'exploitation a par défaut le support de ce langage et qu'on a pas à télécharger un truc de 20Mo, ça fait une sacrée différence aussi.

              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  (site web personnel) . Évalué à 1.

                > 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.

                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  (site web personnel, Mastodon) . Évalué à 2.

                  quel est l'avantage d'abandonner Java ou C++ au profit de C# ?

                  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  . Évalué à 3.

          Tout ça plus: un apport concret du libre par rapport aux specs: JUnit, Spring, Hibernate : ils influencent directement le langage - ou les façons d'utiliser ce langage.
          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  (site web personnel, Mastodon) . Évalué à 3.

            Sans le libre java ne serait pas ce qu'il est.

            Ce serait bien sur Sun s'en rende compte...
            • [^] # Re: Autre chose

              Posté par  (site web personnel) . Évalué à 2.

              Sun s'en rend compte et sun donne aussi au libre

              http://about.me/straumat

              • [^] # Re: Autre chose

                Posté par  (site web personnel, Mastodon) . Évalué à 3.

                Moi j'attends qu'ils normalisent sous la couverture d'un organisme quelconque JAVA (ECMA ?), qu'ils indiquent clairement qu'ils ne poursuivront personne en rapport avec la tétrachié de brevets qu'ils ont sur des technologies utilisées pour JAVA, y compris d'autres sociétés directement concurrentes, que la JVM Sun soit sous une licence dite libre (enfin je peux toujours me tromper).

                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  (site web personnel) . Évalué à 2.

                  Pour la couverture d'un organisme, le JCP me convient parfaitement... pour les autres problèmes que tu évoques, je suis d'accord.

                  http://about.me/straumat

                  • [^] # Re: Autre chose

                    Posté par  (site web personnel, Mastodon) . Évalué à 2.

                    JCP ? Du vent pour faire penser qu'on peut faire évoluer le language mais que c'est toujours Sun qui décide de manière arbitraire, ou une réelle volonté d'avoir un développement communautaire ?

                    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  (site web personnel) . Évalué à 3.

                      Pas d'accord avec toi.. JCP n'est pas du tout du vent, et de nombreuses décisions ont été prises contre l'avis de sun même...
                      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  (site web personnel, Mastodon) . Évalué à 2.

                        Pour JCP tu me dis ça tant mieux, j'ai eu des echos inverses. Qui croire ? :)

                        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  (site web personnel) . Évalué à 2.

                        Le JCP peut effectivement prendre des décisions qui ne vont pas forcement dans le sens de Sun, c'est arrivé, mais celà ne démontre aucunement l'indépendance du consortium vis-à-vis de Sun. On croirait que tu oublies que la porte n'est pas ouverte à tout le monde, et que c'est Sun qui décide qui y a droit de citer.
                        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  (site web personnel) . Évalué à 2.

                          "que c'est Sun qui décide qui y a droit de citer"
                          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  (site web personnel) . Évalué à 1.

                            "Participation as a Member requires you or your organization to sign the Java Specification Participation Agreement (JSPA). The JSPA is a one-year, renewable agreement between you and Sun Microsystems, Inc."

                            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  (site web personnel) . Évalué à 4.

                              non tout n'est pas dit, tu as dit dans ton commentaire que sun choisissait qui rentrait ce qui est faux... c'est tout.

                              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  (site web personnel) . Évalué à 2.

                                http://www.ecma-international.org/memento/join.htm(...)

                                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  (site web personnel, Mastodon) . Évalué à 2.

                                Tiens, sérieusement, est ce que NHibernate, NUnit et spring.net tournent avec mono ?

                                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  (site web personnel) . Évalué à 2.

                                  Merci fabien :)

                                  http://about.me/straumat

                                  • [^] # Re: Autre chose

                                    Posté par  (site web personnel) . Évalué à 2.

                                    tu remarqueras quand même que je me suis pas servi de ta réponse pour poser la question de la maturité de Mono ?
                                    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  (site web personnel, Mastodon) . Évalué à 2.

                                      Pour la maturité de Mono il me semble évident qu'elle est moindre à celle de JVMs dont l'existence est bien antérieure et sur lesquelles le temps de développement homme/jour est bien supérieur.

                                      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  (site web personnel) . Évalué à 3.

                                t, tu as dit dans ton commentaire que sun choisissait qui rentrait ce qui est faux... c'est tout.
                                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  (site web personnel) . Évalué à 3.

      Qu'apporte junitScenario par rapport aux utres solutions de test unitaires en Java: junit, easymock, mockobjects ?

      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  (site web personnel) . Évalué à 2.

        En fait, JUnitScenario se situe au dessus de JUNit... on écrit toujours les tests avec JUnit...
        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  (site web personnel) . Évalué à 1.

          Mais est-ce que "stresser" un test unitaire a vraiment un sens?

          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  (site web personnel, Mastodon) . Évalué à 2.

            Je pense que c'est pertinent ici parce que ça lance des discussions sur ce qui est tests unitaires, et on voit bien que c'est des questions recurrentes. Une autre application on s'en fiche, tout ce qui se rapproche des modélisations, méthodes de travail, tests unitaires, scenario, OCL, etc, a à mon avis sa place ici.
            • [^] # Re: Autre chose

              Posté par  (site web personnel) . Évalué à 2.

              d'accord avec toi sur ce point :)

              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  (site web personnel) . Évalué à 2.

            beh oui d'après moi car les tests unitaires simulent l'utilisation d'une application...

            http://about.me/straumat

        • [^] # Re: Autre chose

          Posté par  (site web personnel) . Évalué à 3.

          Ce que vous faites, j'appelle ca un test fonctionnel. Je reste sceptique dans la mesure ou un test unitaire reste unitaire, c'est a dire dedie a une fonctionnalite precise.

          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  (site web personnel) . Évalué à 2.

            Je m'explqique un peu mieux... pour une application de gestion commerciale par exemple, on va avoir des tests unitaires comme:
            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  . Évalué à 3.

              Bah moi, je suis toujours pas convaincu. Les tests unitaires permettent de tester non pas une fonctionnalité mais une unité de code. Typiquement, quand tu veux faire un test creerClient, tu ne crées pas vraiment le client dans la base de données, tu crées un objet Mock de ta base et tu vérifies que ton code Java génère bien les requêtes SQL correctes. Il ne s'agit pas de tester que ton moteur de BD fait bien l'insertion correctement, on suppose que la BD sait le faire.

              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  (site web personnel) . Évalué à 2.

                "Les tests unitaires permettent de tester non pas une fonctionnalité mais une unité de code."
                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  . Évalué à 3.

                  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.


                  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  (site web personnel) . Évalué à 2.

                    "Pour eux, un test unitaire doit tester une partie de code et non pas une fonctionnalité"
                    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  . Évalué à 2.

                      Bien sûr, tu peux tester des services indépendamment des applications développées au-dessus de cette couche. Ce qui est plus dur, c'est de tester des services indépendamment des autres services situés en-dessous de cette couche (en particulier la couche persistante d'accès aux données).

                      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  (site web personnel) . Évalué à 2.

                        Ok pour ton premier point mais le but pour moi est de constuire un ensemble de services utilisables par d'autres développers/applications et ils se fouttent des couches du dessous, nottament la persistance... ils recoivent des objets java et les renvoiet c tout...

                        "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  (site web personnel, Mastodon) . Évalué à -2.

                          Tout à fait :) c'est toujours enrichissant de discuter serainement avec des gens intelligents.

                          Ouais, gros con.

                          --
                          Désolé, j'ai pas pu...
                        • [^] # Re: Autre chose

                          Posté par  . Évalué à 1.

                          "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...

                          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 ?).

                          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....

                          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  (site web personnel) . Évalué à 2.

                            "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 ?)."

                            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  . Évalué à 1.

                              Je voulais juste indiquer que l'idée même d'un scénario pour des tests unitaires, c'est pas logique dans le sens où les tests unitaires sont sensés être indépendants, non ordonnés, etc. C'est la philosophie de JUnit et beaucoup de principes de fonctionnement de ce framework viennent de cette philosophie, que tu mets à la poubelle avec ton JUnitScenario.

                              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  (site web personnel) . Évalué à 2.

                                Cette discution ne tourne pas tant en rond que ça :)

                                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  (site web personnel) . Évalué à 8.

                                  Le monsieur t'explique qu'il y a un probleme de vocabulaire. Ce que tu appelles test unitaire est en fait un test fonctionnel. Les tests unitaires et les tests fonctionnels sont deux choses tres bien, mais distinctes.

                                  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  (site web personnel) . Évalué à 3.

                                    Ok, c juste un problème de vocabulaire alors... je croyais que vous ne compreniez pas le principe :) en fait, vous me disiez juste que c pas le bon mot que j'utilise donc vous aviez compris depuis le début ? :D

                                    J'aime bien ta définition, je vais la reprendre.

                                    http://about.me/straumat

                                    • [^] # Re: Autre chose

                                      Posté par  (site web personnel) . Évalué à 2.

                                      Bon.. bonne nouvelle quand même, les gens sur Theserverside comprennent http://www.theserverside.com/news/thread.tss?thread_id=31820(...) :)

                                      http://about.me/straumat

                                    • [^] # Re: Autre chose

                                      Posté par  . Évalué à 2.

                                      J'avais compris ta définition perso ;)
                                      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  (site web personnel) . Évalué à 1.

    Bah moi, je suis convaincu. Je cherchais un truc comme ça depuis quelque temps.

    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  (site web personnel) . Évalué à 2.

      Merci :) ca fait plaisir...

      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  . Évalué à 1.

    Intéressant. Jusqu'à présent j'utilisais Grinder qui est essentiellement orienté HTTP mais que l'on peut faire exécuter ce que l'on veut puisqu'il suffit d'implémenter une interface pour définir un appel de méthode.
    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  (site web personnel) . Évalué à 2.

      Merci :)

      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.