Université de Franche-Comté

Industrialiser le test fonctionnel

Vérifier que ce qu’on a construit répond bien à ce que l’on demandait initialement porte un nom : le test fonctionnel. Tous les outils sont en place pour introduire ce test fonctionnel dans la chaîne de conception, de façon automatisée et non plus manuellement.

 

 

Un lanceur de fusée Ariane explose car des simplifications faites sur la version IV ne sont plus pertinentes sur la V et pourtant sont restées (perte de traçabilité), ou parce que les capteurs nouvelle génération sont plus précis. Un accident est provoqué parce que le constructeur d’une automobile n’a pas prévu le cas de figure où une voiture sans contact, mais toujours en mouvement, doit pouvoir être manœuvrée.

 

Ces exemples montrent l’importance du test des modes de fonctionnement d’un système construit. En informatique, il vise à dénicher les bugs dans les méandres du logiciel. Le long du chemin d’un cahier des charges à la réalisation d’un produit, la phase de test consiste donc à vérifier s’il remplit bien les actions qu’on lui demande. Cette phase de test a souvent été le parent pauvre du processus de production. Elle était jusqu’à récemment prise en charge d’une façon presque artisanale : c’est le savoir-faire et l’expérience des testeurs qui garantissaient la qualité des tests. Or, l’augmentation de la complexité des systèmes conçus accroît de fait la complexité des tests. Et ce qui pouvait être réalisé « à la main » ou aidé d’outils sur certains points, n’est plus possible avec les systèmes dont on parle : logiciels, téléphones portables, distributeurs de tickets… La complexité induit aussi une démultiplication des cas à tester. Les combinaisons, et donc les sources d’erreurs potentielles, deviennent rapidement exponentielles. Il est alors impossible d’espérer tout tester et des arbitrages sont nécessaires.

 

 

Tout objet conçu peut être testé  

Né d’une problématique informatique s’établissant comme une discipline depuis une quinzaine d’années, le test logiciel met en place des stratégies pour automatiser cette phase indispensable du développement d’un produit. Mais loin d’être propres à l’informatique, ces méthodes peuvent être appliquées à tout processus de conception, quel que soit le système conçu.

 

 

Comment procède-t-on ?

Le principe consiste à exprimer le cahier des charges dans un langage de modélisation (UML — Unified Modeling Language) qui lève le plus possible d’ambiguïtés. Un outil de génération de test, tel que Test Designer, issu des recherches menées au LIFC — Laboratoire d’informatique de l’université de Franche-Comté — et maintenant implémenté par la société SMARTESTING, génère automatiquement les tests pertinents à exécuter sur le système.

 

 

Schéma de procédure du test fonctionnel

 

 

Après avoir déterminé ce que couvrent exactement ces tests, ce qu’ils prennent en charge, ils sont validés par une confrontation directe avec le système réalisé. Deux circuits fonctionnent donc dos à dos et en parallèle : la réalisation effectuée à partir du cahier des charges et le processus de test. Cette double vision permet ainsi de détecter des ambiguïtés ou des erreurs dans le cahier des charges.

 

Ce premier round permet de comparer les résultats des tests avec les comportements attendus. Les sources d’erreur doivent ensuite être discriminées les unes des autres. Elles peuvent provenir d’une ambiguïté du cahier des charges, de problèmes de codage du modèle dans la phase d’adaptation, des tests au système produit ou enfin du système produit lui-même, ce qui est bien l’information pertinente en dernière instance.

 

Ce schéma général d’organisation des tests fonctionnels peut aisément passer en industrialisation. Les gains pour une entreprise se mesurent en termes de production, d’efficacité et d’amélioration de la qualité.

 

 

Un projet franco-suisse de transfert des compétences

Le Laboratoire d’informatique de l’université de Franche-Comté, en partenariat avec SMARTESTING, vient de terminer un projet du programme Interreg, Test-Indus 1, dont l’objectif était justement de favoriser l’introduction de tests automatisés dans la production. Associés, en Suisse, au groupe mutuel d’assurances GMA qui a sous-traité auprès d’une entreprise, CLIO SA, le développement d’une application internet de souscription en ligne, et au Centre de technologie de l’information de l’État de Genève, les chercheurs ont eu accès à ces deux cas d’étude. Mais charge à eux de développer une chaîne automatique de tests, traquant les bugs des programmes développés avant leurs mises en production.

 

Quant à lui, l’État de Genève doit se doter de tous les outils informatiques de gestion de ses administrations (impôts, aides sociales, créations d’entreprises…). Il a demandé aux partenaires du projet d’appliquer leur démarche avec des logiciels open source. La chaîne applicative outillée ainsi réalisée remplit toutes les fonctions nécessaires à la vérification des logiciels de l’État.

 

À chaque fois, l’application des tests a été probante en ce qu’elle a permis de lever quelques lièvres indécelables « à la main ».

 

Mais le travail du laboratoire ne s’est pas limité à développer des éléments de la chaîne applicative outillée. L’enjeu se situait également dans la formation et la possibilité de transfert de la méthodologie utilisée.

 

 

Enfin, le métier de testeur est reconnu

L’histoire du test informatique, si elle commence il y a quinze ou vingt ans, atteint actuellement une maturité qui implique une évolution au sein même des systèmes de production, et notamment dans la formation des personnels. Les prémices d’une prise de conscience se font sentir depuis cinq ans — ce n’est d’ailleurs que depuis l’été 2009 que les métiers de testeurs apparaissent dans les nomenclatures —, et l’on voit apparaître des cours de formation continue, des modules spécifiques dans les licences et masters des cursus informatiques. Pour aller plus loin, le LIFC a établi un curriculum de formations, définissant les contenus nécessaires soit à des informaticiens testeurs, soit à des personnes ayant les compétences « métier » du champ d’application et se destinant à prendre en charge le test au sein de la production. Sans doute qu’à terme, le métier de testeur passera d’un statut artisanal à un statut plus conceptuel, où le rôle principal des acteurs sera d’exprimer de façon rigoureuse les spécifications du cahier des charges et de mettre en œuvre toute la chaîne du test.

 

Également pour accompagner et faciliter la transition vers une prise en charge industrielle du test, l’équipe a construit et met à disposition un guide méthodologique d’industrialisation du test fonctionnel 2.

 

Un test outillé n’est pas anodin à mettre en place ; pourtant, la complexité, l’interopérabilité, les exigences de sûreté de fonctionnement, de sécurité de l’information et de qualité des produits font qu’il n’est plus possible de shunter cette étape. Des outils sont maintenant disponibles et opérationnels pour aider les entreprises dans cette démarche.

 

 

1. Pour plus d’information http://lifc.univ-fcomte.fr/test_indus/

2. Industrialiser le test fonctionnel chez Dunod ISBN : 978-2-10-051533-2, 288

 

 

Contact : Fabrice Bouquet – Stéphane Debricon

Laboratoire d’informatique de Franche-Comté

Université de Franche-Comté

Tél. (0033/0) 3 81 66 66 64

 

Retour en haut de page

 

 

retour