Archive

Archives pour 10/2009

White : un framework de test intéressant ?

Pour situer le contexte, je réitère l’animation d’un séminaire à l’Université de Savoie sur le même thème que l’an passé : les tests automatisés et l’intégration continue. L’intervention aura lieu le 18 novembre prochain. Je suis donc en pleine phase de revue des différents framewoks de test abordés.

Ma bête noire c’est le test automatisé d’une application de type client lourd, écrite en Winforms, WPF ou plus léger Silverlight. Les solutions open source (et gratuites) sont soit inexistantes soit très pauvres.

Pour peut-être enfin répondre à ce besoin, je regarde actuellement le framework white qui me semble très prometteur: white encapsule la couche UI Automation, l’API d’accessibilité de Microsoft. Quelle que soit la technologie utilisée, on pourrait partir du principe qu’une application accessible est une application testable !

Les premiers tests sur une application école Winform sont assez concluants. Le prochain objectif est clairement d’éprouver cette solution sur une application grandeur nature.

Categories: .NET, Outillage Tags: , , , ,

soapUI et les tests de Web Services

SoapUI est un outil de test de Web Services développé par Eviware. Il existe en 2 versions dont une entièrement gratuite. Je le trouve très utile pour le debug et les tests unitaires de web services, mais aussi pour les tests automatisés et les tests de charge.

Je vous propose de découvrir dans cet article comment utiliser SoapUI pour réaliser des tests unitaires.

Lire la suite…

Agile Tour Paris 2009

L’Agile Tour s’est déroulé sur le campus de l’université Paris X à Nanterre.

Accueillis par Patrice Petit (Agilii) on découvre que d’ores et déjà les formations MIAGE qui sont dispensées à l’UPX incluent les spécificités des SI agiles.

3 salles de conférences pour 3 thématiques étaient proposées : « Recherche et Méthodes », « Managers » ou “Coaching & équipes ». Ces sessions de 45′ ou 1h30 se déroulaient en parallèle. Quelques choix s’avéraient cornéliens…

Mon intérêt s’est porté dans l’ensemble sur le programme « coaching des équipes » plutôt orienté ateliers pratiques que théorie.

Pendant la journée :

  • On apprend a mettre en pratique les fondamentaux d’une organisation agile :
    • manipulation des outils destinés à communiquer sur le déroulement du projet : manipulation de kanbans -ou petites fiches cartonnées- (voir image ci dessous), initialisation de BurnUp et BurnDown charts.Prioriser
    • auto-organisation en cycles itératifs destinés à produire de la valeur client
  • On renforce notre argumentaire pour défendre l’agilité (pouvoir parler des coûts de réalisation d’un tel projet, comprendre les détracteurs des méthodes agiles).
  • La vision du responsable de projet agile dans le management des équipes est explicitée :
    • une équipe sereine est plus productive qu’une équipe qui communique mal
    • il faut préférer la facilitation de la communication pour résoudre les problèmes plutôt que l’imposition de solutions ou d’une organisation qui décide pour les développeurs.
  • On prend conscience des illusions et du déni de faits qui peuvent exister au sein d’une équipe et qui peuvent la déstabiliser (de la perte de vélocité jusqu’à la dislocation d’une équipe pourtant productive) : on cherche à éviter ces échecs.
  • On découvre des outils dont la vocation est de renforcer la connivence entre les membres d’une équipe:
    • aide pour améliorer l’efficience de la communication: Core Protocols.
    • aide dans le partage de la façon de réaliser une implémentation : Dojo (session d’écriture de code en binôme -un qui rédige le code, l’autre qui interagit avec lui pendant l’écriture de ce code- avec rotation du binôme à la fin de time boxes)

En conclusion, ce fut une journée riche et didactique en particulier avec des illustrations pratiques et ludiques. Cet ensemble donne des axes pour construire sa pratique agile.
Elle se destinait à ceux qui sont curieux de découvrir le sujet par du concret et de l’explication pratique,  ou bien à d’autres -déjà acquis à la cause-, qui cherchaient des outils, des éléments pertinents pour nourrir un argumentaire destiné à sensibiliser leur environnement à l’agilité.
Je vous proposerai dans un futur très proche quelques articles détaillant les différentes sessions que j’ai suivies.

Voici le détail de la conférence que vous pouvez retrouver dans le wiki d’ObjetDirect :

Planification Agile par la pratique

Gestion des côuts dans un projet agile

The invisible project manager

Illusions et désillusions

Tests unitaires pour Google App Engine

google-app-engine Les développeurs Cloud le savent, tests unitaires et Google App Engine ne sont pas franchement compatibles : si on veut exécuter les tests unitaires sur le GAE depuis un script ou son IDE préféré, on est obligé de les invoquer via http (ou xmpp) et on est vite limité par le timeout de 30 secondes.

Le projet App Engine Unit tente de combler le vide. Le principe est de découper une suite de tests JUnit en tâches asynchrones et de les empiler ensuite dans la Task Queue.

Sur le papier, ça semble plutôt prometteur. Mais le projet en est encore à ses balbutiements (version 0.0.6 !). A suivre de près néanmoins.

Google Wave en vrai

(suite de mon post précédent)

Ayè ! J’en suis :-) J’ai mon accès Google Wave.

Premiers contacts pas à pas :

  • Je regarde la vidéo de présentation incluse dans la Vague d’introduction. J’apprends un nouveau mot : un “blip”. C’est le bout de message ajouté ou modifié quand on intervient sur une Vague (une Vague est une composition de Blips).
  • Demie-surprise : je retrouve dans ma liste de contacts Wave mes contacts Google qui ont déjà un compte Wave (5 personnes seulement : on a tout de suite l’impression d’appartenir à un club très “select”). Ca veut dire que tous ces correspondants savent que je suis “Wavisé”. Petit malaise : Big Brother n’est pas loin.
  • J’édite mon profil (c’est assez bien caché : il faut cliquer sur son nom dans les contacts mais celui-ci n’est pas apparemment “sensible”). Big Brother 2, le retour : il me propose d’ajouter des liens vers des sites qui ont un rapport avec moi. On retrouve dans la liste, des sites “Google” en relation avec moi (Picasa, Youtube), mais aussi d’autres sites sans rapport directs avec Google !!! En fait, il s’agit de domaines dont je suis le propriétaire et dont les sites sont hébergés chez OVH…
  • Difficile de trouver les “robots”, ces contacts qui permettent des usages alternatifs de Google Wave (publier un Twit ou un blog par exemple). Je dois faire un passage par l’aide en ligne pour arriver à faire mon premier Wave Twit.
  • Déception : je ne trouve pas le robot magique qui m’aurait permis de publier ce post directement via une Vague. En revanche, j’ai trouvé quelques robots amusants via un site tiers.
  • Les forums sont très vides et il n’y a pas de FAQ (il y a plus de buzz autour de GW que de vrai info dedans !)

Conclusions à chaud :

  • Le nom est bien choisi, mais les initiales me posent un petit problème personnel…
  • Si mes amis et collègues ne sont pas sur la Vague, je n’ai pas les moyens de communiquer avec eux par ce biais (pas de passerelle simple vers le courriel traditionnel ni même vers Google Talk). Donc, pour le moment, ça ne sert pas à grand chose et je ne peux même pas faire une démo sympa :-(
  • La peinture n’est pas sèche. On voit en permanence des fonctions qui manquent, des erreurs d’ergonomie flagrantes… qui expliquent l’usage “restreint” (100 000 c’est restreint à l’échelle Google) ou des trucs qui ne fonctionnent pas (comme le robot “Bloggy” permettant de blogger une Vague mais qui affiche en permanence un message d’erreur) ou accessibles uniquement à certains utilisateurs.
  • A contrario, au fur et à mesure qu’on s’en sert, plein d’usages nouveaux viennent à l’esprit. En vrac et sans filtre (à chacun des usages suivants, il faut ajouter systématiquement l’adjectif “… collaboratif”) :
    • Mind Mapping
    • prise de note et compte-rendu de réunion
    • constitution de FAQ
    • modélisation
    • interview
    • pair programming

Maintenant j’attends avec impatience :

  1. D’avoir la possibilité d’inviter du monde et d’échanger avec mon entourage
  2. D’avoir accès à la sandbox pour que mon côté geek puisse s’exprimer.

A bientôt pour la suite donc.

Categories: Actualités, Cloud Tags: , , ,

Paris JUG octobre 2009 : JSF2 et Servlet 3.0

Tout d’abord, une bonne adresse à noter : si vous ratez les rendez-vous du JUG Parisien, vous pouvez désormais les rejouer à cette adresse http://beta.parleys.com/#st=4&id=56644.

JSF 2.0

La présentation JSF2 faite par Damien Gouyette et François Petitit a détaillé, non pas uniquement les nouveautés JSF2, mais une présentation complète du framework en marquant les nouveautés 2.0.

La présentation est intéressante même pour un débutant JSF. Je ne détaillerai ici que les nouveautés de la mouture 2009 du framework d’IHM de la spec JEE.

On note que JSF2 est bien entendu, complètement inclus dans JEE6 (dont Antonio Goncalves rappelle qu’il fera une présentation au Paris JUG de décembre) et est compatible JEE5.

Voici donc les nouveautés :

  • Une déclaration des managed beans de la sorte :

@ManagedBean

@SessionScoped

public class MonBean {

}

La convention dit que ce bean sera accessible dans la vue par son nom de classe ; première lettre en minuscule : ‘monBean’

  • Validation des vues via les annotations Hibernate Validator (ce qui permet une vérification centralisée des contraintes)
  • Un nouveau scope, le ‘view scope’ ayant une durée de vie égale à la durée de vie de la vue. Scope qui s’intercale donc entre request et session
  • Un des principaux apports de cette nouvelle version est le support natif d’AJAX. On ajoute le support Ajax à un composant JSF en insérant le tag <f:ajax>

<h:inputText ….>

<f:ajax render= »autreChamp » />

</h:inputText>

  • Les Jsp sont abandonnées (mais restent compatibles) au profit des Facelets XHTML. Les Facelets apportent notamment le concept de « templating », permettant de réutiliser aisément des sections de la vue.
  • EZComp permet de créer facilement des composants uniquement via les Facelets (plus de Java nécessaire pour des composants simples) en leur déclarant une interface puis un contenu créé de façon similaire à celui des vues qui sont, elles aussi, des Facelets.

Un exemple des plus classiques : ici on a créé un composant qui prend un attribut ‘value’ :

<!DOCTYPE html PUBLIC « -//W3C//DTD XHTML 1.0 Transitional//EN »

« http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd »>

<html xmlns=« http://www.w3.org/1999/xhtml »

xmlns:h=« http://java.sun.com/jsf/html »

xmlns:ezcomp=« http://java.sun.com/jsf/composite »>

<body>

<ezcomp:interface>

<ezcomp:attribute name=« value » required=« true »/>

</ezcomp:interface>

<ezcomp:implementation>

<!– Les mots clés cc.attrs sont réservés par JSF2 pour accéder aux attributs/paramètres passés au composant –>

<h:outputText value=« Hello #{cc.attrs.value} » />

</ezcomp:implementation>

</body>
</html>

Ce composant est déclaré dans ‘WEB-INF/resources/’ puis utilisé tout simplement :

<ez:mycomp value= »world » />

Je vous laisse deviner le résultat …

  • Un autre apport non négligeable est la gestion de profils d’environnement : « prod », « testUnit » …
  • La gestion des ressources statiques est améliorée : on n’a plus besoin de gérer ces ressources dans le WEB-INF de son projet. Elles peuvent être apportées par un jar.

On note donc une évolution de la spec, reprenant de bonnes idées. On retrouve notamment de nombreux concepts apparus dans des frameworks et librairies JEE comme Seam ou ajax4jsf.

Servlet 3.0

Mon retour sera beaucoup plus rapide sur ce sujet qui nous touche quotidiennement … mais de loin puisque les frameworks que nous utilisons nous font travailler à un plus haut niveau.

La présentation de l’API par Rémy Maucherat concernait donc plus particulièrement les personnes développant ces frameworks. Néanmoins un tour d’horizon permet d’apercevoir quelques impacts sur notre façon de travailler avec ces frameworks :

  • Actuellement, lors de l’ajout d’un framework il est nécessaire de configurer le fameux fichier web.xml afin de notifier le conteneur de servlet de la présence de ce framework.Cela sera remplacé par des web-fragments vivant à l’intérieur des jars des frameworks et donc intégrés au web.xml par le conteneur à l’initialisation.
  • Le deuxième point marquant est la gestion de l’exécution asynchrone des Servlets. Actuellement on réserve un processus pour traiter une requête et la gestion asynchrone devait être gérée par ailleurs.
    Servlet 3.0 permet de rendre un traitement asynchrone et donc de libérer des ressources tout en ayant des requêtes longues. En travaillant sur ce point les frameworks devraient gagner en performance.

Fortement lié au contenu de ce post, un post précédent traitait des nouveautés JEE6.

Categories: Java EE Tags: , , , ,

Des tutoriaux vidéo pour wiQuery !

Wiquery intègre jQuery avec le framework web Apache Wicket

L’équipe de wiQuery est fière de vous présenter ses premiers screencasts vidéo. Le projet wiQuery intègre les technogologies JavaScript jQuery et jQuery UI avec le framework web java Wicket. WiQuery est sponsorisé par odlabs, le label open source d’Objet Direct.

Au programme, Julien Roche nous propose deux vidéos :

  1. Comment installer wiQuery dans une application existante (version anglaise)
  2. Utilisation du composant tabs, un composant UI pour la gestion d’onglets (version anglaise)

Plus d’infos sur notre site web et notre google code !

A bientôt pour de nouvelles vidéos, et un grand bravo à Julien pour ses tutoriaux !

Google Wave, révolution ?

Logo Google Wave Je me suis avalé l’intégralité de la vidéo de présentation de Google Waves (1h20 !) mais ça valait le coup. Depuis l’annonce faite en mai à la conférence Google I/O à quelques (600) happy few, le buzz a considérablement enflé. Jusqu’il y a quelques jours où Google a annoncé qu’il élargissait le nombre d’invitations à 100 000 et où le sport à la mode est devenu d’avoir SON accès (voire, encore plus fort, l’accès à la sandbox développeur). Il parait même que certains les achètent aux enchères sur e-bay !

Mais qu’est-ce donc que cet OVNI. L’ambition de Google est tout simplement de succéder à l’e-mail (et donc à SMTP) en terme d’usage et de popularité !

La solution ? Fournir un client unique pour toutes les usages collaboratifs d’Internet : le courriel donc, mais aussi le chat, le twitt, le blogging, la publication dans un Wiki, dans Facebook ou tout autre réseau social, jusqu’à l’écriture de compte-rendus de réunion, la planification d’un voyage ou même le jeu, ou toute autre activité qui induit un échange, une collaboration, une publication. Rien que ça !

Comment Google présente-t-il son nouveau bébé ? Qu’est ce qu’une Vague ?

  • Une Vague, c’est moitié conversation, moitié document
  • Une Vague c’est partagé
  • Une Vague c’est vivant

Mais encore? Quoi de neuf par rapport à un courriel traditionnel ?

  • On est plus proche d’une conversation que d’un courrier : tous les participants peuvent intervenir à tout moment (voire se couper la parole !). En ce sens ça ressemble plus à du chat.
  • Les échanges se font instantanément. Toute modification (frappe d’un caractère, mais aussi ajout de pièce jointe, ou d’image) est propagée instantanément à tous les participants ce qui rend effectivement l’échange extrêmement vivant (fini le temps d’attente pendant lequel apparaît le message “votre correspondant rédige un message”) mais aussi très intrusif (quand on chat on peut faire autre chose en même temps, c’est beaucoup plus difficile quand on est sur une Vague).
  • Une nouvelle dimension intervient, le temps : l’historique des échanges qui ont amené la Vague dans l’état courant est conservé et peut être restitué.
  • On peut intervenir à tout endroit de la conversation sans la dupliquer : on rassemble en un seul document un thread complet (i.e. le mail initial et toutes ses réponses ou mises à jour)
  • C’est réellement et nativement multi-media (même si le support initial est aujourd’hui majoritairement le texte).
  • On peut gérer des habilitations : l’accès à une Vague ou à certaines de ses parties peut être finement contrôlé.

L’équipe de Lars Rasmussen et Stephanie Hannon (les créateurs de Google Maps) est partie de la question suivante : à quoi ressemblerait l’e-mail s’il était inventé aujourd’hui ? La présentation du résultat est bluffante et, sans faire du “Googlisme” primaire, le concept me semble effectivement révolutionnaire.

Google Wave, c’est trois composants :

  • Un produit : un client écrit en GWT accédant à un serveur hébergé sur Google AppEngine
  • Une plateforme : des APIs pour développer
  • Un protocole : basé sur XMPP

Le tout est intégralement open source, l’objectif étant de développer des APIs et des usages nouveaux (j’ai admiré l’initiative de la R&D SAP pour proposer un outil collaboratif de modélisation de Business Process s’appuyant sur Google Wave).

J’attends avec impatience mon accès pour vous donner un retour concret (incluant aussi les points négatifs ;-)

Flash Sur iPhone ?!

D’après Adobe, ce devrait être possible en fin d’année, une confirmation à demander lors du séminaire Flex coorganisé entre Objet Direct, Xerox et Adobe courant octobre…

Lire l’article trouvé sur linformaticien.com

Noop – Google veut améliorer Java

Selon le site du projet, Noop est un langage testable qui tournera sur la JVM.
Son objectif :
  • encourager les bonnes pratiques comme l’injection de dépendance, la testabilité, l’écriture d’un code source lisible, une documentation exécutable toujours à jour, un typage fort des variables, …
  • éviter les mauvaises pratiques telles que le code et les variables statiques, l’héritage d’implémentation, les primitives, …
Le wiki du projet révèle d’intéressantes discussions sur ce que pourrait/devrait être le langage.
A suivre …
Categories: Java EE Tags: ,