Warning: ob_start(): non-static method wpGoogleAnalytics::get_links() should not be called statically in /var/www/sdb/e/7/linsolas/wordpress/wp-content/plugins/wp-google-analytics/wp-google-analytics.php on line 259

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sdb/e/7/linsolas/wordpress/wp-content/plugins/wp-google-analytics/wp-google-analytics.php:259) in /var/www/sdb/e/7/linsolas/wordpress/wp-includes/feed-rss2.php on line 8
romain.getBlog( ); » article http://linsolas.free.fr/wordpress Wed, 23 Jan 2013 21:29:05 +0000 en hourly 1 http://wordpress.org/?v=3.0.5 Redirection… http://linsolas.free.fr/wordpress/index.php/2012/11/redirection/ http://linsolas.free.fr/wordpress/index.php/2012/11/redirection/#comments Sun, 18 Nov 2012 13:11:34 +0000 Romain http://linsolas.free.fr/wordpress/?p=288 http://linsolas.github.com/]]> Ce blog ne sera sans doute plus maintenu, compte tenu des difficultés à le faire vivre sur les pages perso de Free.
Ma nouvelle version du blog est donc hébergée par GitHub Pages, propulsé par Octopress !

Ca se passe ici -> http://linsolas.github.com/

]]>
http://linsolas.free.fr/wordpress/index.php/2012/11/redirection/feed/ 0
Calculer sa couverture de code par les tests d’intégration http://linsolas.free.fr/wordpress/index.php/2011/07/calculer-sa-couverture-de-code-par-les-tests-dintegration/ http://linsolas.free.fr/wordpress/index.php/2011/07/calculer-sa-couverture-de-code-par-les-tests-dintegration/#comments Fri, 08 Jul 2011 08:07:20 +0000 Romain http://linsolas.free.fr/wordpress/?p=159 Nous allons voir ici comment, grâce à Sonar, Maven et JaCoCo nous pouvons obtenir la couverture de code par des tests d’intégration.

Contexte

Dans mon exemple, je me baserais sur les outils suivants : Sonar 2.8, Maven 2.2.1, Java 1.6.

Au sein de l’un de mes projets, je dispose de quelques rares tests unitaires, qui couvre environ 7% de l’application. C’est peu. Très peu. Trop peu même.
Mais nous avons également des tests d’intégration.
En gros, ces tests d’intégration vont exécuter un jeu d’environ 300 fichiers d’entrée, qui seront ensuite analysés par mon application.

Mon but est donc de connaître, en plus de ma couverture de test par les tests JUnit, la couverture du code exécuté par mes tests d’intégration.

La structure de mon projet ressemble en gros à ceci :

mon-projet
  +- pom.xml (ce pom-là n'est qu'un pom d'aggrégation)
  +- parent
  |   +- pom.xml (c'est le vrai parent de tous les autres modules)
  +- module-1
  |   +- pom.xml
  +- module-2
  |   +- pom.xml
  +- ...
  +- module-tests
      +- pom.xml
      +- src/test/java/
          +- foo/bar/IntegrationTestsRunner.java

module-tests est un module ne contenant que quelques classes de tests, en particulier IntegrationTestsRunner.java dont le but est d’aller lire mes fichiers de tests, et les exécuter.

Afin de ne pas lancer ces tests d’intégration à chaque build, nous définissons un profil Maven dans le pom.xml de module-tests, comme suit :

    <profiles>
        <profile>
            <id>run-it</id>
            <activation>
                <property>
                    <name>runIT</name>
                    <value>true</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <includes>
                                <include>**/IntegrationTestRunner.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

Ce profil sera activé soit en ajoutant -DrunIT=true soit -Prun-it dans la ligne de commande Maven.

Avec une méthode « traditionnelle », c’est-à-dire l’exécution de tests unitaires via Surefire, aucune couverture de code ne sera détectée, car le code exécuté par les tests d’intégration l’est sur les autres modules du projet. Or Cobertura ne va instrumentaliser que les classes du module courant et non les dépendances (i.e. module-1, module-2, etc.).

Mise en place de JaCoCo

Pour résoudre mon problème, je vais faire appel à JaCoCo, un outil de couverture de test plus performant que Cobertura. Son principal avantage est de pouvoir instrumentaliser les classes au runtime. Dans mon cas présent, JaCoCo va donc pouvoir vérifier la couverture du code sur les différents modules au moment où l’on exécute module-tests.

Avant toute chose, il va nous falloir configurer un peu notre environnement :

  • Installer le plugin JaCoCo pour Sonar (à copier dans le répertoire extensions/plugins de son installation Sonar).
  • Une fois Sonar redémarré, penser à ajouter dans le dashboard le widget IT Coverage Widget (il faudra sans doute pour cela être connecté en tant qu’administrateur).
  • Télécharger l’agent JaCoCo. Pour cela, il faut récupérer le ZIP de JaCoCo ici, l’agent se trouvant alors dans lib/jacocoagent.jar.

Maintenant que ceci est en place, nous allons devoir indiquer à Surefire d’utiliser un agent Java spécifique (l’agent JaCoCo).
Etant donné que nous n’avons besoin de cet agent qu’au moment de l’exécution des tests d’intégration, nous le définirons que pour le profil run-it.
Au sein du pom.xml parent, j’ai donc ajouté :

    <profiles>
        <!-- Profile used to run Integration Tests. In such case, we add the Java agent for JaCoCo... -->
        <profile>
            <id>run-it</id>
            <activation>
                <property>
                    <name>runIT</name>
                    <value>true</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>-javaagent:${jacoco.agent.path}=destfile=${jacoco.file.path}</argLine>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

J’ai défini mon profil deux fois, dans le pom.xml parent et dans celui de module-tests. Nous aurions pu tout mettre dans le parent.

Execution

Nous allons avoir besoin d’exécuter maintenant deux commandes Maven :

  • mvn clean install -DrunIT=true -Djacoco.agent.path=C:\dev\jacocoagent.jar -Djacoco.file.path=C:\dev\monprojet\jacoco.exec
  • mvn -Dsonar.jacoco.itReportPath=C:\dev\monprojet\jacoco.exec sonar:sonar

La première ligne va activer le profil run-it, ce qui aura pour conséquence de lancer le tests d’intégration.
On y définit les deux paramètres (jacoco.agent.path et jacoco.file.path) qui seront passés à Surefire pour définir un agent Java.

La seconde ligne va simplement exécuter l’analyse Sonar sur mon projet, mais en définissant le paramètre sonar.jacoco.itReportPath (généré lors de la première commande), cette analyse comprendra également la couverture des tests d’intégration.

Une fois les deux commandes exécutées, il suffit de se rendre sur son serveur Sonar pour apprécier cette nouvelle mesure de couverture de code !

Comme le montre les captures d’écran sur le post du blog de Sonar à ce sujet, il est possible, à l’instar de la couverture de code, de visualiser la couverture de code de tests d’intégration directement dans la fenêtre de visualisation du code source d’une classe.

Start Slide Show with PicLens Lite PicLens]]>
http://linsolas.free.fr/wordpress/index.php/2011/07/calculer-sa-couverture-de-code-par-les-tests-dintegration/feed/ 2
Tutoriel Play ! http://linsolas.free.fr/wordpress/index.php/2010/02/tutoriel-play/ http://linsolas.free.fr/wordpress/index.php/2010/02/tutoriel-play/#comments Wed, 03 Feb 2010 19:13:06 +0000 Romain http://linsolas.free.fr/wordpress/?p=111 Lors de mon précédent billet, j’avais évoqué le framework Play en montrant comment réaliser un simple Hello World.

J’avais promis d’aller plus loin dans l’étude de ce framework, j’ai en fin de compte traduit l’intégralité du tutoriel présenté sur le site officiel. A travers ce tutoriel, vous pourrez découvrir plus de fonctionnalités de Play, d’apprendre la façon dont il gère la persistence, comment créer des pages complexes, d’ajouter de l’authentification, etc.

Vous pouvez lire ma prose sur mon site developpez.com !

]]>
http://linsolas.free.fr/wordpress/index.php/2010/02/tutoriel-play/feed/ 2
Et une année de plus chez developpez.com http://linsolas.free.fr/wordpress/index.php/2010/01/et-une-annee-de-plus-chez-developpez-com/ http://linsolas.free.fr/wordpress/index.php/2010/01/et-une-annee-de-plus-chez-developpez-com/#comments Sat, 02 Jan 2010 21:53:19 +0000 Romain http://linsolas.free.fr/wordpress/?p=83 Début avril 2008, il y a presque deux ans maintenant, mon premier article sur Hudson paraissait sur le site de developpez.com. Depuis, j’ai écrit 4 autres articles, 2 compte-rendus de conférences, ainsi qu’une critique de livre :

Quelques chiffres maintenant, concernant l’année 2009 :

On voit que la fréquentation quotidienne – hors week-end – est d’à peu près 120 – 150 visiteurs. On distingue cependant quatre pics lors du second semestre de l’année :

  • Le 14 août, avec 750 visites, correspond à la mise à jour de l’article sur Sonar.
  • Le 6 octobre, avec 340 visites, pour le compte-rendu de la conférence CitConf 2009.
  • Le 25 novembre, avec 682 visites, atteint grâce à l’article sur les comparatif des outils de builds Java.
  • Le 17 décembre avec 743 visites, pour l’article traitant des nouveautés de Maven 3.

Au total, durant cette année 2009, ce sont 35,940 visites qui ont été faites par 20,935 visiteurs sur mon site de developpez.com ! Cela fait un total de 62,322 pages vues.Pas mal non ?

Malgré cela, c’est mon « vieil » article sur Hudson (paru en avril 2008) qui truste la première place, avec 35,77% des pages vues.

Côté visiteurs, c’est évident la France qui héberge la plupart des visites (27,945 visites sur les 35,940), le Maroc arrivant deuxième (1,363 visites), suivie de près par la Belgique (1,105).  La Suisse, la Tunisie complète le quinté.

Au niveau des navigateurs, Firefox obtient la médaille d’or, avec presque 3 visiteurs sur 4 (71,56%), suivi d’Internet Explorer (16,32%), puis Chrome (5,93%). La très forte majorité des visiteurs tournent sur Windows (83,86%), Linux étant leur deuxième choix (11,80%). Il arrive également que quelques adeptes de la Pomme visitent mon site (3,89% pour MacOS, 0,24% pour l’iPhone !)…

Voilà une très belle année 2009 pour moi de ce côté-là. L’année 2010 sera-t-elle aussi productive ? Réponse dans 363 jours !

Start Slide Show with PicLens Lite PicLens]]>
http://linsolas.free.fr/wordpress/index.php/2010/01/et-une-annee-de-plus-chez-developpez-com/feed/ 0
Maven http://linsolas.free.fr/wordpress/index.php/2010/01/maven/ http://linsolas.free.fr/wordpress/index.php/2010/01/maven/#comments Sat, 02 Jan 2010 20:48:26 +0000 Romain http://linsolas.free.fr/wordpress/?p=80

Maven a une actualité assez chargée ces derniers temps, avec la sortie toute proche de la troisième génération de l’outil, mais également avec la publication d’un ouvrage sur Apache Maven, écrit par Nicolas de Loof et Arnaud Héritier.

J’ai écrit courant décembre deux articles sur le site developpez.com concernant ces actualités :

Bonne lecture, et n’hésitez pas à réagir à ces articles sur le site de developpez.com ou en commentaires ici !

Start Slide Show with PicLens Lite PicLens]]>
http://linsolas.free.fr/wordpress/index.php/2010/01/maven/feed/ 0