Les systèmes mécaniques et électroniques ― souvent pilotés par voie logicielle et développés pour augmenter, dans un même produit, les services offerts à lutilisateur ― se complexifient. La téléphonie mobile en est une excellente illustration puisque le téléphone est devenu console de jeux, agenda, calculatrice, appareil photographique… En cinq ans, toutes industries confondues, le nombre moyen de fonctions pour un système a été multiplié par cent. Cet accroissement de complexité saccompagne dun enjeu stratégique fort : la réduction du délai de mise sur le marché. Les processus de développement des systèmes doivent donc être agencés pour pouvoir répondre à ces nouvelles exigences, tout en garantissant une excellente fiabilité des produits et des services. Disposer dun outil logiciel rapide et efficace pour juger de cette fiabilité constitue alors un atout important. Pour cela, une des principales approches disponibles, avec la relecture du code informatique et la recherche de preuves, est celle du test.
• Sa pratique actuelle, parce quelle est essentiellement empirique, ne peut répondre aux besoins des systèmes complexes, ce qui engendre des non-conformités vis-à-vis des spécifications des systèmes et un manque de fiabilité, avec des conséquences souvent fâcheuses. Une solution à cette problématique réside en partie dans la génération automatique de tests à partir des spécifications. Des techniques utiles à cette approche permettent de répondre efficacement aux différentes questions posées à lingénieur responsable de la validation, à savoir comment spécifier les tests, retenir les plus pertinents, gérer les changements fonctionnels, automatiser le contrôle des résultats, maîtriser la combinatoire, optimiser la couverture des jeux de tests, limiter lempirisme, pouvoir exécuter les tests fréquemment…
• Le laboratoire dInformatique de luniversité de Franche-Comté (LIFC), associé au CNRS et à lINRIA ― Institut national de la recherche en informatique et automatique ― développe une technologie originale de génération automatique de tests fonctionnels. Intitulé BZ-testing-tools, cet outil permet dengendrer automatiquement, à partir des spécifications du système écrites à laide des notations de modélisation les plus répandues (comme B, StateCharts ou UML), les séquences de tests fonctionnels ainsi que les verdicts qui y sont associés. La génération sappuie sur un moteur de calcul puissant qui utilise des techniques de programmation en logique avec contraintes (alias PPC) permettant lévaluation des spécifications. Lidée directrice est de maximiser la détection de problèmes avec le minimum de tests, une des difficultés résidant dans la grande combinatoire de cas possibles. Dans un premier temps, le générateur de tests calcule tous les comportements possibles du système. Ensuite, lingénieur responsable de la validation pilote la génération en sélectionnant tout ou partie de ces comportements. Il peut, par exemple, nengendrer que les séquences de tests activant une opération précise ou un état particulier. La sélection permet donc un pilotage fin de la génération ; bien entendu, cette dernière peut aussi être complètement automatisée. Les techniques de calcul mises en ¶uvre assurent une parfaite maîtrise de lexplosion combinatoire, car nest engendré quun sous-ensemble de tous les états possibles en calculant les états aux limites du système, pour lesquels le risque de dysfonctionnement est le plus souvent important.
• Par ailleurs, loutil propose à lutilisateur un ensemble de critères de couverture de tests par rapport aux états et aux comportements du système. Ces derniers sont regroupés par type homogène et chaque classe de comportements peut être testée. Dautres critères peuvent être définis par lutilisateur. Ils permettent ainsi de mesurer objectivement la qualité des tests produits et de garantir une meilleure fiabilité du système en permettant de répondre aux questions essentielles (à quel moment arrêter les opérations ? Y a t-il eu un oubli éventuel de comportements ?…). Un avantage important de la technique utilisée réside dans sa capacité à évaluer les impacts dune évolution du système à tester, en engendrant uniquement les tests pour les comportements modifiés. De plus, les dossiers de tests étant sauvegardés en vue dune nouvelle exécution éventuelle, il est possible deffectuer de façon automatisée les tests de non-régression. Un compte rendu est créé à la fin de la génération pour permettre une analyse précise et rapide des régressions éventuelles. Les séquences de test obtenues avec cet outil peuvent alimenter des bancs de test au travers dinterfaces pour leur pilotage, ce qui conduit alors à une automatisation complète du test des systèmes.
• Les travaux de recherche, dont est issu le moteur de calcul au c¶ur de loutil BZ-testing-tools, ont débuté en 1995 au laboratoire dInformatique de luniversité de Franche-Comté*. Ils permettent, en résumé, un gain de productivité important dans les opérations de validation et une réduction de leurs coûts et délais tout en garantissant, au travers dune augmentation et dune meilleure pertinence de la couverture des tests, une meilleure fiabilité des produits mis sur le marché.
Bruno Legeard
Laboratoire dinformatique (FRE CNRS 2661 – INRIA)
Université de Franche-Comté
Tél. 03 81 66 66 63
Fax 03 81 66 64 50
legeard@lifc.univ-fcomte.fr