TGV : un outil de génération automatique
de tests de conformité
Participants : Thierry Jéron,
Pierre Morel, Séverine Simon, César Viho, Claude Jard, Vlad
Rusu.
Mots clés : test de conformité, TGV,
ObjectGéode, CADP, SDL, Lotos, TTCN .
Résumé :
TGV (Test Generation with Verification
technology) est un prototype de générateur automatique de
tests de conformité à partir de spécifications formelles
(SDL ou Lotos). Son originalité tient dans
son algorithmique à la volée adaptée du domaine de la
vérification par modèle (Model Checking).
TGV est issu d'un projet commun avec le
laboratoire Verimag Grenoble. Il utilise des bibliothèques
de la boîte à outils CADP de Vérimag et de
l'Inria RhÔne-Alpes. TGV a été déposé par
l'Inria à l'Agence de Protection des Programmes en 97.
TGV est distribué gratuitement dans la boîte
à outils CADP. Il est déjà utilisé par les
membres du projet sur plusieurs études de cas et aussi par
quelques utilisateurs extérieurs. Un effort important a été
fourni pour le transfert industriel des algorithmes de
TGV dans l'outil ObjectGéode de
Telelogic.
Une première version de TGV a vu le jour en
95 lors d'un contrat financé par le STEI
regroupant Vérilog, Cap Sesa Région Rennes, le Cnet Lannion
et le Celar de Bruz, Vérimag et Pampa. Cette première version
développée par Vérimag et Pampa était utilisable sur les
graphes d'états de spécifications SDL produits
par Géode.
Depuis cette première version, TGV a été
constamment amélioré du point de vue algorithmique mais aussi
par l'interfaÇage avec de nouveaux environnements.
TGV génère des tests à la volée (sans
construire complètement le graphe d'état de la
spécification), à la fois sur des spécifications
SDL grâce à sa connexion à ObjectGéode, et sur
des spécifications Lotos grâce à sa connexion à
l'environnement CADP. TGV peut
aussi fonctionner sur des graphes explicites décrits au
format Aldébaran ou dans le format compressé
BCG. En sortie, TGV construit
un cas de test dans un format général (Aldébaran ou
BCG) qui peut être traduit dans le langage
TTCN, langage de description de tests standard
de fait dans le monde des télécoms.
TGV est donc relativement indépendant des
langages de spécification. Cette indépendance est obtenue par
son architecture en couches par l'intermédiaire d'Api
fournissant les fonctions de parcours de systèmes de
transitions intermédiaires. D'autre part, ces différentes
couches utilisent des bibliothèques de stockage de graphes de
CADP. La première couche, la seule qui soit
spécifique au langage d'entrée, permet de connecter
TGV soit à l'Api du simulateur ObjectGéode
pour SDL, soit à l'Api fournie par le
compilateur Lotos Caesar de la boîte à outils
CADP, soit encore aux Api de parcours de
graphes explicites. Cette couche fournit une Api de parcours
du graphe d'état de la spécification S. Une deuxième couche
utilise cette Api et un objectif de test pour fournir l'Api
du produit synchrone
PS = TP×S par
étiquetage des états de la spécification par les états
correspondants de l'objectif (en particulier les états
accepteurs de l'objectif). La troisième couche permet le
renommage et le masquage d'actions internes fournissant une
Api sur l'IOLTS PSabs dans lequel toutes les
actions internes sont indifférenciées par
. La quatrième effectue
une réduction des actions internes et une déterminisation et
fournit les primitives de parcours du système de transition
résultant PSvis
ainsi que ses états accepteurs. Enfin la dernière couche
implante l'algorithme central qui effectue un parcours de
PSvis et
synthétise un cas de test TC. Ce dernier algorithme peut être vu
comme une extension d'un algorithme de model checking qui
synthétise le sous-graphe de tous (ou seulement une partie
contrÔlable) les comportements menant aux états accepteurs de
PSvis, i.e. les
témoins de la validité de la propriété exprimée par
l'objectif.
En 99, TGV a bénéficié d'un lifting complet
en vue de sa distribution. L'architecture de
TGV a été repensée complètement pour
correspondre à la découpe fonctionnelle et permettre une plus
grande modularité. Les fonctionnalités ont été améliorées, en
particulier pour permettre une plus grande expressivité des
objectifs de tests, des fichiers de masquage et de renommage,
en généralisant l'utilisation des expressions régulières. Le
calcul des temporisateurs a été simplifié et incorporé au
coeur de TGV. Le calcul des postambules a été
affiné par la notion d'état stable. L'outil prend maintenant
en compte le format de graphe BCG à la fois en
entrée et en sortie. Un nouveau module appelé
VTS et pouvant se substituer au module
principal de TGV permet maintenant de vérifier
et corriger à la volée des cas de tests. Ceci peut servir à
la correction de tests manuels mais sert aussi à tester
TGV par la vérification des cas de tests
produits. Enfin en plus de la version Solaris, il existe
maintenant une version Linux et une version
NT.
Une opération de transfert industriel de
TGV avec la société Telelogic et le soutien de
France Telecom s'est terminée courant 99. Les algorithmes de
TGV et son architecture ont été implantés dans
l'outil ObjectGéode. Une bonne part des développements
relatifs à TGV ont été effectués dans le
projet. La version commerciale est vendue sous le nom Test
Composer.
Les différentes études de cas dans lesquelles
TGV est utilisé nous permettent constamment
d'enrichir et d'améliorer TGV sur différents
aspects : l'expression des objectifs de test, de
l'architecture de test, l'algorithmique de génération de
test, de vérification de tests, la connexion avec d'autres
outils. L'année 2000 a vu se développer la connexion
UMLAUT/TGV avec le soutien d'Alcatel et de Gemplus.