samedi 16 janvier 2016

CMDBuild et Kerberos AD

cmdbuild.png

CMDBuild est une CMDB libre très souple bâtie sur Java, Postgres, ExtJS, JasperReport et d'autres.

CMDBuild permet d'identifier les utilisateurs en créant des comptes dans sa base de données ou sur une source extérieure: LDAP, CAS ou, et c'est le sujet ici, Kerberos. Comme la documentation ne traite que de la configuration de CMDBuild, voici le reste.

Lire la suite...

dimanche 2 décembre 2012

Sortie de Sonar 3.3.2

Sonar

Sortie, le 24 octobre de la version 3.3 de Sonar, l'outil de qualimétrie, suivie les 7 et 21 novembre des versions correctives 3.3.1 et 3.3.2. On notera:

  • prise en charge des projets multi langages (source dans des répertoires différents pour le moment)
  • l'apparition de profils multiples par projet (un par langage)
  • l'analyseur de code Java SSLR en remplacement de ANTLR. SSLR était déjà utilisé pour Javascript, Cobol, PL/SQL, Flex, C, C++, C# et Python.
  • l'ajout de 2 règles pour Java
  • l'apparition d'une couverture de code globale (tests unitaires et tests d'intégration)
  • une gestion améliorée des exclusions de fichiers
  • une amélioration de l'IHM: fil d’Ariane, liste déroulante dynamique et fenêtres modales.

La 3.3.1 corrige notamment un problème posé par la traduction française provoquant un crash au démarrage. Le pack en version 1.6 (13 novembre 2012) est .

La 3.3.2 corrige des problèmes rencontrés avec Postgres 8.

Pour une description avec captures d'écran, c'est , les changelogs sont et le téléchargement, ici. Penser également à la doc d'installation et de mise à jour.

A noter également la sortie du plugin Jenkins pour Sonar version 2.0.1 qui corrige quelques bugs et ajoute les champs login et password pour accéder à l'instance de Sonar. Voir le changelog ici. Pour la documentation, c'est .

J'en profite enfin pour signaler un plugin Thucydides en version 0.1 sorti le 6 juin 2012: voir là.

jeudi 22 mars 2012

JUnit 4 en 60 secondes

junit-logo.png

Comme l'actualité est calme, voici la traduction un peu enrichie d'un article d'introduction à JUnit 4 à consulter ici.

JUnit 4 apporte à JUnit la gestion des annotations pour les tests Java. Voyons-en quelques unes....

@Test

Permet de marquer vos tests. Vous n'avez alors plus besoin de préfixer vos cas de tests avec "test". De plus, votre classe n'a plus besoin d'hériter de la classe “TestCase”.

  @Test
  public void addition() {
     assertEquals(12, simpleMath.add(7, 5));
  }
  
  @Test
  public void subtraction() {
     assertEquals(9, simpleMath.substract(12, 3));
  }

@Before et @After

Utilisez respectivement les annotations @Before et @After pour les méthodes “setup” et “tearDown”. Ces méthodes sont exécutées respectivement avant et après chaque cas de test.

  @Before
  public void executerAvantChaqueTest() {
     simpleMath = new SimpleMath();
  }

Ici, on vient de préparer le "monde" du test.

  @After
  public void executerApresChaqueTest() {
     simpleMath = null;
  }

Et là, on nettoie une fois le test exécuté.



@BeforeClass et @AfterClass

Utiliser respectivement les annotations @BeforeClass et @AfterClass pour les méthodes “setup” et “tearDown” s'appliquant à la classe toute entière. Pnsez à ces méthodes comme étant à usage unique. Elles s'exécutent respectivement et une seule fois avant le premier cas de test et après le dernier cas de test.

  @BeforeClass
  public static void executeBeforeClass() {
     // s'exécute une unique fois 
     //avant le premier cas de tests
  }
  @AfterClass
  public static void executeAfterClass() {
     // s'exécute une unique fois pour toute
     //  après le dernier cas de tests
  }

Gestion des exceptions



Utilisez le paramètre “expected” avec l'annotation @Test pour indiquer que le cas de test s'attend à une exception. Donnez le nom de l'exception qui va être lancée.

  @Test(expected = ArithmeticException.class)
  public void divisionAvecException() {
     // division par zero
     simpleMath.divide(1, 0);
  }

@Ignore



Ajouter l'annotation @Ignore pour les cas de tests que vous voulez ignorer. Vous pouvez ajouter comme paramètre une chaîne de caractères qui indique la raison pour laquelle vous ignorez le test.

  @Ignore(“Pas prêt à fonctionner”)
  @Test
  public void multiplication() {
     assertEquals(15, simpleMath.multiply(3, 5));
  }

Timeout



Définit un délai d'expiration en millisecondes avec le paramètre “timeout”. Le test échouera si le délai est atteint.

  @Test(timeout = 1000)
  public void infinity() {
     while (true)
     ;
  }

Nouvelles affirmations

Ces nouvelles affirmations permettent de comparer des tableaux. Deux tableaux sont égaux seulement s'ils ont la même longueur et si chaque élément de l'un est égal à l'élément correspondant de l'autre.

  public static void assertEquals(Object expected, Object actual);
  public static void assertEquals(String message, Object expected, Object actual);
  @Test
  public void listEquality() {
     List expected = new ArrayList();
     expected.add(5);
     
     List actual = new ArrayList();
     actual.add(5);
     
     assertEquals(expected, actual);
  }

JUnit4Adapter

Permet d'exécuter vos tests JUnit 4 dans les lanceurs de tests JUnit 3 avec le JUnit4Adapter

  public static junit.framework.Test suite() {
     return new JUnit4TestAdapter(SimpleMathTest.class);
  }

lundi 19 mars 2012

Sortie de Sonar 2.14

Sonar

Sortie de la version 2.14 de Sonar, l'outil qualimétrique multi-langages, dont Java et PHP, appelable via Maven et s'appuyant sur un SGBD dont Postgresql. Au menu, détection des copier/coller entre projets pour tous les langages, ajout de notes aux règles, capacité de récupérer des informations concernant les utilisateurs depuis des systèmes tiers, notification par mail pour les nouvelles violations et amélioration de la carte des projets.

Sonar est sous licence GNU Lesser GPL version 3, lois suisses.

Pour le voir en action sur le site nemo et pour le télécharger.

Lire la suite...

jeudi 15 mars 2012

LibrePlan version 1.2.2 est sortie

LibrePlan

Sortie d'une version mineure de LibrePlan aujourd'hui... mineure peut-être mais elle parle français ! Des améliorations ont été apportées au diagramme de Gantt et à la gestion des comptes LDAP.

LibrePlan (anciennement NavalPlan) est un outil collaboratif pour planifier, surveiller et contrôler des projets qui a une interface web client riche. Tous les membres de l'équipe peuvent prendre part à la planification ce qui permet d'avoir une planification en temps réel. Il permet aussi de gérer plus d'un projet à la fois avec des ressources qui contribuent à plusieurs projets ce qui le rend adapté au travail dans une compagnie.

LibrePlan dispose d'une large série de web services pour importer et exporter des données depuis et vers d'autres systèmes d'information, ce qui permet d'économiser du temps (et le temps, c'est de l'argent). LibrePlan est une application libre sous licence GNU Affero General Public (AGPL) et dispose d'une communauté. Il y a même des paquets deb et rpm.

Côté technique, LibrePlan est en Java, s'appuie sur Tomcat et utilise une base de données Postgres.

Voir le site, la documentation et la démonstration en ligne.

dimanche 26 février 2012

Sortie de Doxygen 1.8.0

Doxygen

La version 1.8.0 de Doxygen est sortie le 25 février 2012. Cet outil libre développé par Dimitri van Heesh permet de générer la documentation technique à partir du code source, et ce pour les langages suivants: C++, C, Java, Objective-C, Python, IDL (pour Corba et Microsoft), Fortran, VHDL, PHP, C# ainsi que D jusqu'à un certain point.

Doxygen permet de générer un navigateur de documentation en ligne (en HTML) et/ou des manuels de référence à consulter hors ligne (en LaTeX, donc avec une qualité remarquable) à partir d'un ensemble de fichiers de code source documenté. Sont également gérés les formats de sortie RTF (MS-Word), PostScript, PDF avec hyperliens, HTML compressé et man pages Unix. La documentation est extraite directement depuis le code source, ce qui facilite de maintenir le code et la documentation synchronisés.

Il est possible de configurer Doxygen pour extraire la structure de code de fichiers sources non documentés. Ceci est très utile pour vous y retrouver rapidement dans un grand volume de code source. Vous pouvez également visualiser les relations entre les différents éléments grâce des graphiques de dépendances d'inclusion, des diagrammes d'héritage et des diagrammes de collaboration qui sont tous générés automatiquement.

Enfin, il est également possible d'utiliser Doxygen pour créer une documentation classique (comme Dimitri van Heesh l'a fait pour la documentation de Doxygen).

Doxygen fonctionne sur la plupart des Unix (dont Linux et Mac OS X sur lesquels il est développé) et des exécutables pour Windows sont également disponibles. Doxygen est sous licence GNU General Public License. En revanche, les documents produit par Doxygen sont considérés comme travail dérivé de celui effectué pour produire les fichiers en entrée. Ils ne sont donc pas affectés par la license GNU GPL.

Enfin, il existe des plugins pour Maven, Jenkins et Sonar:

Sur le site Doxygen, vous pourrez voir le manuel ou télécharger la dernière version.

Lire la suite...

mercredi 22 février 2012

Hamcrest, tutoriel pour Java

Java

Hamcrest est une bibliothèque d'objets de correspondance ('matchers' ou contraintes ou encore prédicats) permettant de définir des règles de 'correspondance' de façon déclarative, utilisables dans d'autres frameworks. Typiquement, on l'utilisera avec des frameworks de test, des bibliothèques d'objets bouchons (mock objects) et des règles de validation d'interface utilisateur.Par exemple, au lieu d'écrire:

   assertEquals("bleu", couleur);

On écrira:

   assertThat(couleur,is("bleu"));

On note ici le gain immédiat de lisibilité (surtout en anglais)...

Hamcrest a été implémenté pour Java, PHP mais aussi C++, Objective-C, Python et Erlang. Naturellement, avec Java, on pourra gérer cette dépendance via Maven.

Une version d'Hamcrest est fournie avec JUnit. Cependant, elle date un peu et les versions plus récentes d'Hamcrest offrent un tas de nouvelles fonctionnalités, en particuliers pour travailler avec les collections. Vous pouvez utiliser la dernière version d'Hamcrest en utilisant la dépendance junit-dep à la place de junit, comme suit:

  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit-dep</artifactId>
      <version>4.10</version>
      <scope>test</scope>
      <exclusions>
         <exclusion>
              <groupId>org.hamcrest</groupId>
              <artifactId>hamcrest-core</artifactId>
          </exclusion>
      </exclusions>
  </dependency>
  <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <version>1.3.RC2</version>
  </dependency>

junit-dep est exactement la même bibliothèque que junit, exception faite que ses dépendances sont explicitement déclarées et non incluse dans le bundle.....

Notez enfin que Hamcrest n'est pas une bibliothèque de test comme JUnit ou TestNG, mais bien une bibliothèque d'objets de correspondance destinés à rendre les tests implémentés avec les bibliothèques précédentes beaucoup plus lisibles.

Ce qui suit est la traduction du tutoriel Java que l'on peut lire sur le wiki du site de Hamcrest. On pourra également lire ce billet de John Smart.

Lire la suite...

mardi 14 février 2012

La version 1.2.3 de PHPUnit_Selenium est sortie

selenium-logo.png PHP

PHPUnit est l'équivalent pour PHP de JUnit pour Java. Framework très abouti, utilisant même des annotations, il permet de plus de s'interfacer avec Selenium pour tester des applications Web. Depuis la version 1.2.0, il prend maintenant en compte l'API WebDriver en ajoutant la classe PHPUnit_Extensions_Selenium2TestCase ainsi que:

  • le partage de session pour l'API WebDriver
  • l'ouverture d'URL et la sélection d'élément pour l'API WebDriver
  • le clic d'éléments et le raccourci clickOnElement($id) pour l'API WebDriver
  • le support partiel de 'alert()' pour l'API WebDriver
  • la manipulation d'éléments pour l'API WebDriver: accesseur de test, modificateurs de valeurs
  • les sélecteurs raccourcis `by*()` pour l'API WebDriver
  • l'extraction d'une classe de commande de base pour étendre les commandes gérées des sessions et des éléments pour l'API WebDriver

Viennent donc de sortir coup sur coup les versions 1.2.2 et 1.2.3 qui vient réparer un petit oubli de la 1.2.2.

Lire la suite...

jeudi 9 février 2012

Selenium Grid pour Selenium 1 et WebDriver

selenium-grid-logo.png

La grille Selenium permet

  • de répartir la charge en distribuant les tests sur plusieurs machines (exécution parallèle)
  • de gérer de multiples environnement depuis un point central en facilitant l'exécution de tests sur une grande variété de navigateurs et d'OS
  • de réduire le temps de maintenance de la grille en permettant d'implémenter des déclencheurs personnalisés pour mettre en place une infrastructure virtuelle par exemple

Démarrage rapide

L'exemple qui suit montre comment lancer le Hub Selenium 2 et d'y enregistrer à la fois un noeud WebDriver et un ancien noeud Remote Control Selenium 1. Sera également montrée la façon d'appeler la grille en Java. Le hub et les noeuds seront lancés sur la même machine mais il est bien sûr possible de copier le selenium-server-standalone sur plusieurs machines.

Lire la suite...

samedi 4 février 2012

Test d'une application Web avec Thucydides

Thucydides

L'objet de cet article, inspiré fortement par le guide utilisateur de Thucydides, et de mettre en place des tests de validation fonctionnelle sur une application Web à l'aide de Thucydides, donc, et de WebDriver/Selenium 2. Thucydides est une bibliothèques OpenSource destinée à faciliter ces tests de recette, en utilisant, soit JUnit, soit EasyB.

Lire la suite...

vendredi 27 janvier 2012

Selenium IDE

Selenium IDE

Selenium IDE est en environnement de développement intégré pour les scripts Selenium. Il est implémenté comme une extension de Firefox et permet d'enregistrer, de modifier et de corriger des tests fonctionnels. Selenium IDE intègre tout Selenium Core ce qui permet d'enregistrer et de rejouer rapidement des tests dans un environnement réel.

Selenium IDE n'est pas qu'un outil d'enregistrement. Il est possible d'utiliser ses capacités d'enregistrement mais aussi de modifier à la main les scripts. Via l'autocomplétion et la capacité de déplacer rapidement les commandes, Selenium IDE est l'environnement idéal pour créer des tests Selenium, quel que soit le style choisi.

Lire la suite...

Sonar

Sonar

Sonar est une plate-forme ouverte de gestion de la qualité du code. Elle couvre les 7 axes de la qualité du code:

Sonar sait gérer Java mais aussi d'autres langages comme PHP (mais aussi C, C#, Flex, Natural, PHP, PL/SQL, Cobol et Visual Basic 6).

Sonar est extensible à l'aide de plugins très simples à installer. L'un deux permet l'interfaçage avec Jenkins

Parmi les fonctionnalités notables de Sonar, sa capacité à gérer des projets multiples, son authentification possible sous LDAP, ses outils de revue de code augmentés d'information signalant les manquements et des voies d'amélioration possible, sa localisation notamment en français, sa gestion personnalisé des règles à appliquer, etc. Des nuages permettant de repérer du premier coup d'oeil où l'effort doit être porté en priorité pour obtenir des résultats rapidement.

Sonar peut être appelé depuis le poste de travail du développeur, depuis Eclipse, via Maven ...

Il génère une émulation entre les équipes qui essaient d'avoir le projet le plus propre, ce qui apparaît clairement dans les tableaux de bord "radiateurs".

Nous verrons dans un prochain billet comment l'installer.... même si c'est très simple.

Sonar est actuellement en version 2.13.

dimanche 15 janvier 2012

Bienvenue !

Ce blog est destiné à partager les connaissances que j'aurais pu acquérir dans le domaine du développement, plus principalement dans la recherche de l'amélioration de la productivité et donc, de la qualité logicielle.... Une particularité: l'ajout de la contrainte de travailler en équipe sur un Intranet non connecté à l'Internet.

Les principaux langages évoqués seront Java et PHP sans oublier Javascript, les développements étant principalement web. Mais comme il faut bien se faire plaisir, il y aura aussi du Perl !

Le choix des outils est réalisé selon les critères suivants:

  • licence libre
  • projet actif
  • localisé en français
  • authentification LDAP possible
  • api web SOAP ou REST
  • intégrable avec les autres outils si nécessaire
  • cohérence technologique: outil si possible en Java ou PHP sur SGBD Postgres si nécessaire et via serveur Apache

A bientôt !