Confronté à la nécessité de mettre en place un dispositif de monitoring pour un projet de développement Web très interactif, je me suis évidemment d’abord intéressé aux solutions classiques telles que PingDom en SAAS ou la solution bien connue Selenium.
PingDom est évidemment intéressant, sinon même devenu incontournable, pour monitorer la présence d’un site Web.
Il a donc été utilisé pour monitorer quelques urls racines. La page publique est particulièrement utile pour informer les utilisateurs du statut du site.
Selenium a très vite montré ses limites dès lors que le code html du site devient un peu compliqué : difficultés d’enregistrement des scripts ou adaptations manuelles nombreuses deviennent nécessaires.
Selenium ayant déçu, la question s’est donc posée du bien fondé d’un développement spécifique pour balayer régulièrement des parties du site (selon des scénarios multiples) en prenant des logs sur :
– les temps de réponse par lien activé ;
– les erreurs éventuelles (lien vers un site tiers devenu inopérant par exemple, ou erreur sur une action relative à un contrôle).
Le principe d’un développement spécifique retenu il fallait choisir un outil, le plus productif possible et capable de répondre à la volonté de vraiment traduire l’expérience utilisateur (entendez par là qui permette de mesurer le temps de réponse du rendu dans le browser et pas seulement de réaliser des gets de pages web vers le file system). Autre contrainte : permettre à un non-informaticien d’établir les fichiers d’instructions (fichiers des liens à visiter et contrôles de formulaires à activer).
Mes recherches m’ont conduit à opter pour l’open source AutoIt, découvert à l’adresse www.autoitscript.com/site/autoit/
Cet outil est en fait un langage et un framework d’automatisation sous Windows. Sa syntaxe est celle du VBA (Visual Basic for Application) avec des variables non typées de type Variant.
De nombreux éditeurs peuvent être utilisés, dont l’open source Scite qui a fait l’objet d’une déclinaison spécifique pour AutoIt (Scite4AutoIt).
La richesse fonctionnelle de l’outil est impressionnante (plusieurs centaines de fonctions). De nombreuses librairies UDF (User Defined Library) sont disponibles, dont celle relative à la manipulation d’Internet Explorer, élément qui m’a fait retenir l’outil pour le besoin de monitoring de sites Web.
Les différents forums (En, Us, Fr, De et autres) sont très actifs et riches en conseils, UDFs et codes exemples.
Il nous a ainsi été possible de trouver des librairies pour interfacer le robot avec SQLite (“mini” base de données relationnelle livrée sous la forme d’une dll), Excel (pour construire les graphiques nécessaires), PowerPoint (pour y stocker des copies écrans), Skype (pour éventuellement envoyer des sms), Word, les protocoles FTP et SMTP, … Des UDFs existent dans les forums pour interagir avec SQL Server, MySQL, … De nombreux petits “utilitaires” sont aussi disponibles, par exemple pour prendre des images de parties d’écran qui seront ensuite utilisée pour localiser les zones correspondantes et y simuler un clic souris (option utile lorsque les autres approches échouent).
Le développement principal consiste en un robot de monitoring finalement générique et donc entièrement paramétrable, permettant non seulement d’activer des liens mais aussi d’agir sur des contrôles (radiobox, checkbox, listbox, …). Une syntaxe ad hoc (et simple) a été developpée à cet effet, utilisée dans les fichiers de commandes.
Une seconde partie est destinée à exploiter la prise de logs effectuée par le robot (chargement dans une db [SQLite], détermination des dépassements, calculs de moyenne, graphiques). La visualisation des données et la gestion de la db sont effectués à l’aide de l’outil gratuit SQLite Expert Personal. Les échanges de SQLite vers Excel, la construction des graphiques dans Excel et leur envoi vers un serveur FTP sont pilotés par les scripts AutoIt.
Le projet impliquant des équipes offshore, le dispositif suivant a été développé. Les développeurs peuvent poster un gmail avec un mot clé. Un script déclenché à intervalles réguliers, détecte via un feed atom l’arrivée de ce mail, simule un login avec une carte eID, parcourt les écrans voulus, en prend des copies sous la forme de slides PowerPoint et retourne le .ppt en attachment dans un mail. La motivation à l’origine de ce développement : les développeurs offshore n’ont pas accès à une carte eID belge. Ceci pourrait être envisagé dans l’environnement d’acceptation (finalement supprimé une fois l’intégration avec la plate-forme eHealth implémentée et testée) mais est de toutes façons exclu pour les ultimes tests dans l’environnement de production (question de droits d’accès à des données personnelles strictement confidentielles).
Le dispositif mis en place leur permet donc de procéder à de premiers tests sans attendre la disponibilité de “l’autre côté de la planète”.
Fort de ce succès nous envisageons aussi utiliser l’outil pour automatiser des opérations d’établissement de rapports s’appuyant sur des sources multiples (fichiers Excel, bases de données, écrans Web, …) dans un cadre plus général que celui du projet mentionné ici.
Hormis quelques limites dans la gestion des erreurs sur quelques composants COM dans de rares cas de figure (mais qui n’ont jamais empêché un fonctionnement correct – donc l’obtention du résultat voulu), la fiabilité de l’outil n’a pas été prise en défaut et de façon générale toutes les librairies utilisées se sont avérées efficaces.
Un outil à découvrir pour qui estime pouvoir exploiter des gisements de productivité en termes de Windows automation et Web automation.
Comparé à des équivalents commerciaux, AutoIt s’est révélé une alternative parfaitement crédible vu sa qualité, sa richesse fonctionnelle, sa facilité d’apprentissage et le dynamisme de ses forums.
Leave a Reply