Published

27 August 2014

Sharing

Introduction

Dans le cadre du développement d'une application, quelle qu'elle soit, les tests sont indispensables afin de garantir un haut niveau de qualité. Il en existe plusieurs types :

  • Unitaires,
  • Intégration,
  • Fonctionnels,
  • Qualification...

Ces tests constituent une part non négligeable du développement. Il est possible d'automatiser la plupart des tests, ce qui permet au final un gain de temps substantiel, et surtout une plus grande fiabilité.

Tests

Selenium

Selenium est un outil d'automatisation de tests fonctionnels d'applications Web. Il permet de programmer les interactions de l'utilisateur avec l'application web. Celles-ci peuvent ensuite être paramétrées afin d'être rejouées pour simuler un utilisateur, plusieurs utilisateurs, avec des navigateurs différents, des systèmes d'exploitation différents. On peut donc aussi simuler des charges plus ou moins importantes.

L'approche par les tests permet ainsi de produire au final un code plus robuste.

Alfresco Share

BlueXML a développé pour Alfresco Share de tels tests. Ils permettent actuellement d'effectuer automatiquement 130 tests de non régression fonctionnelle sur Alfresco Share Enterprise 4.0.2.9 et permettent d'économiser 2 heures de travail au niveau de BlueXML comme du client final, car sa recette est également facilitée.

Sachant que les tests sont rejoués de nombreuses fois, ce sont plusieurs jours qui sont économisés pour chaque équipe, côté BlueXML comme côté client.

Dans le cadre d'Alfresco Share, ces tests sont regroupés au sein de 11 modules afin de faciliter des tests partiels lorsque cela est nécessaire. La figure ci-dessous illustre les tests réalisés dans le cadre de l'écran principal des utilisateurs, à savoir le tableau de bord :

Même si l'on peut parfois avoir l'impression que les tests ne sont pas utiles, il s'avère d'une efficacité redoutable pour détecter les problèmes immédiatement lorsqu'ils sont réalisés automatiquement dans une chaine d'intégration continue. BlueXML met systématiquement en place pour ses projets des environnements d'intégration continue permettant de lancer automatiquement chaque nuit les tests développés avec Selenium.

Chaque matin, les développeurs ont dans leur boîte mail les résultats des tests et peuvent immédiatement diagnostiquer le problème, généralement lié à un conflit sur des fichiers modifiés par des développeurs différents. Le fait de corriger le problème immédiatement permet de limiter le coût des bugs à leur strict minimum. En effet, le coût des bugs est lié exponentiellement au temps nécessaire à leur découverte : plus un bug est découvert tard, plus le coût de sa résolution sera élevé. De quelques minutes s'il est traité immédiatement, il peut facilement nécessiter plusieurs heures, voire jours, pour une résolution tardive (car le développeur est sur un autre projet, car il n'est plus là, car il ne se rappelle plus de quelle modification il s'agit...).

Gains

Les gains liés aux tests sont visibles à chaque étape du projet :

  • Maintenance aux Conditions Opérationnelles : en cas de crash, suite à la restauration du système, les tests fonctionnels permettent de valider automatiquement que les fonctions principales sont disponibles et opérationnelles,
  • Développement : les développeurs ont dans Eclipse un environnement de test permettant de vérifier que leur travail est correct et s'intègre sans problème avec le travail de leurs collègue,
  • Livraison : lors de la livraison, les tests sont joués et une vidéo fournie, ainsi que des screenshots, prouvant que la livraison est correcte,
  • Migration : jouer les tests permet de mettre en évidence les points bloquants lors du passage à une nouvelle version. Cette étape nécessite de jouer souvent les tests et assurent une économie de temps intéressant qu'il est ainsi possible de passer ailleurs.

Tous ces tests permettent d'améliorer la qualité du code, sa réutilisabilité et contribuent à optimiser pour chaque acteur son ROI, garant d'une relation pérenne de bonne qualité.

Phases

Développement

L'environnement de développement Eclipse permet au développeur de jouer ses tests autant de fois qu'il le souhaite dans la journée. L'objectif est d'avoir une totale confiance dans ces tests afin qu'ils soient totalement intégrés dans le processus de développement.

En cas d'échec, les tests apparaissent en rouge et les éléments en cause sont détaillés :

Livraison

Les tests sont joués tout le temps, plusieurs fois dans la journée par les développeurs, chaque nuit par le système d'intégration continue comme Hudson ou Jenkins. Les résultats sont alors disponibles au petit matin sur un tableau de bord général.

Une vidéo peut aussi être générée automatiquement lors de la réalisation du test. Celle-ci permet de se rendre compte, de visu et très rapidement, que tout est correct ou non. Des captures d'écran à des moments 'sensibles' peuvent aussi être générées. Ces éléments permettent de vérifier que tout est correct ou non et que le travail réalisé la veille est valide.

Migration

Les tests représentent un coût non négligeable mais sont un véritable investissement qui garantit la qualité de votre solution.

Utiles lors de la phase de développement et pour chaque livraison, les tests assistent aussi les développeurs en montrant les points bloquants sur le chemin fonctionnel critique

Conclusion

BlueXML dans le cadre de sa démarche qualité programme des actions sur l'interface, et à vérifier les réponses. Les actions à réaliser peuvent être exportées depuis Selenium IDE.

Les tests doivent être maintenus car les éléments d'interface peuvent être modifiés lors de développement d'une nouvelle fonctionnalité ou du passage à une autre version d'Alfresco lors d'une migration par exemple.

Les tests sont incontournables. En ne les faisant pas, vous n'aurez pas une solution de qualité professionnelle mais un jouet qui vous coûtera au final très cher.

Ils garantissent la qualité de votre solution et la satisfaction de vos utilisateurs.




blog comments powered by Disqus