CITCON Europe 2009 Paris
J’ai assisté au CITCON Europe 2009 Paris (CITCON signifie en français « Conférence sur les tests et l’intégration continue »). Le vendredi soir, nous avons d’abord commencé par nous présenter rapidement. Ensuite, ceux qui voulaient proposer un sujet l’écrivaient sur un papier, le présentaient à l’assemblée et le collaient sur le tableau représentant le planning du samedi.
Durant toute la journée de samedi, j’ai assisté à diverses sessions :
- Session sur hudson et les besoins de nouveaux plugins, dirigée par Douglas Squirrel. J’ai malheureusement manqué le début, lorsque Douglas a expliqué comment écrire un plugin pour hudson. Si vous souhaitez écrire votre propre plugin pour hudson, n’hésitez pas à écrire à kohsuke (le créateur d’hudson) en postant un message sur la liste de diffusion pour les développeurs ou à envoyer un mail à douglas.
- Session sur l’intégration et le déploiement continu (avec le cas de cruise control). Il y a notamment été question de chaine de déploiement dont voici un exemple typique dans le cas d’une mise en production : [gestionnaire de sources] : intégration continue -> tests d’intégration -> (…) -> tests de performance : [environnement de production]. Sans le déploiement continu, cette chaine de développement existe déjà : c’est le processus organisationnel dont les étapes sont des opérations manuelles.
Les questions que nous sommes amenés à nous poser dans ce type d’automatisation sont : Mais que faire si une étape échoue ? L’ignorer et passer à l’étape suivante ?
Les étapes de la chaine peuvent dépendre des changements (petits ou gros), particulièrement si l’execution de la chaine complète prend beaucoup de temps.
L’execution de 2 chaines en parallèle pourrait soulever certains problèmes si une étape a besoin d’un environnement dédié (exemple : tests de performances). - Session sur les tests unitaires avancés. L’un des participants nous a parlé des nouvelles fonctionnalités de JUnit ajoutées depuis la version 4.4 (la dernière à ce jour étant la version 4.7). Il y a été question des annotations Theory, Theories, DataPoint, DataPoints et Rule. C’est très intéressant et il faudra que je regarde cela de plus près afin de le mettre en oeuvre pour JNode si c’est utile.
- Session sur le cloud computing, les environnements distribués ou virtualisés. Teamcity est un logiciel de build basé sur une architecture serveur + agents/esclaves. Déplacer ces 2 éléments vers une architecture de type cloud computing présente les avantages suivants :
- diminution du coût de maintenance
- optimisation du temps d’utilisation du processeur
- meilleur gestion des pics de charge
- Les performances de la connection réseau
- Dans le domaine de la banque / finance : gestion de la sécurité et de la confidentialité des données
- Gestion des environnements personnalisés (notamment matériels spécifiques) et leur maintenance
- Gestion des temps d’indisponibilité
- Restrictions sur les adresses IP
- Session sur les tests d’acceptation narratifs :
- Twist, un logiciel commercial basé sur eclipse et selenium permet d’exprimer les tests sous forme de phrases compréhensibles par l’utilisateur. Ces tests sont enregistrés dans un simple fichier texte mais avec un certain formalisme. Il est également possible d’y ajouter des jeux de données sous forme de tables. Bien sûr, les vrais tests ne pas sont implémentés dans ce fichier mais l’environnement de développement de Twist s’assure que celui-ci et les classes java les implémentant sont bien synchronisés.
- FitNess est un logiciel libre basé sur Fit, un framework pour les tests d’acceptation. Il permet d’exprimer les tests sous forme de phrases et dans une syntaxe de type wiki.
Mais cette architecture soulève d’autres problématiques :
Ensuite, j’ai assisté à une présentation d’openQRM, un serveur web qui permet de gérer un parc de machines virtuelles tournant sous différentes technologies de virtualisation telles que xen, kvm et vmware. Il gère aussi des fonctionnalités comme le démarrage depuis le réseau (en anglais boot pxe) et les images (+ paquets optionnels) des machines virtuelles. Il faudra que j’étudie ça de plus près pour voir si ça pourrait être utile pour JNode (il faudrait alors développer un plugin openQRM pour gérer les plugins JNode).




