Sujet : Techniques de spécification et de test pour les composants logiciels de communication

Responsable : Richard Castanet, Patrick Félix
Téléphone : 05 40 00 69 01, 05 40 00 69 15
e-mail : castanet@labri.fr, felix@labri.fr
Site Web : http://www.labri.fr
Equipe : MVTsi

Présentation du sujet :


Ce sujet s'inscrit dans le cadre d'Action Spécifique du CNRS dans laquelle sont associés plusieurs grands laboratoires de recherche français, ainsi que dans un projet européen TAROT (avec de grands laboratoires étrangers).

Ces dernières années un net progrès s’est produit dans le développement des méthodes et techniques pour le test des logiciels de communication distribués. En particulier, l’automatisation de la procédure de génération de tests à partir d’une description formelle d’un système a atteint une certaine maturité. Cependant, l’avancement de ces techniques concerne les méthodes de test classiques (i.e. dont la spécification décrit un système global d’une taille raisonnable à partir de laquelle on produit les tests par l’application d’algorithmes de génération). Mais, quand ces méthodes sont appliquées au test de composants imbriqués dans un système complexe (test dans le contexte) ou au test d’interoperabilité, elles se révèlent alors inadaptées ainsi que les architectures proposées pour effectuer les tests.
Les méthodes de test classiques sont basées sur un contrôle total des interfaces entre le testeur et l’implantation sous test, tandis que dans le cas du test de composants il existe des interfaces qu’on ne peut pas contrôler complètement (semi-contrôlables). Ceci exige la définition de nouvelles architectures de test qui tiennent compte de ces problèmes (en introduisant par exemple des points de contrôle et des points d’observation). De plus, les méthodes classiques de génération se sont révélées également inadéquates, car l’idée directrice du test de composants est d’éviter les tests redondants (i.e. d’éviter de tester des parties du système considérées comme étant libres d’erreurs ou déjà testées). Aussi, il faut introduire de nouvelles stratégies de test aptes à minimiser la redondance de tests, qui tiennent compte des messages échangés entre les interfaces semi-contrôlables des composants, et qui puissent s’adapter aux nouvelles architectures.

Ces problèmes se posent également pour les techniques formelles qui spécifient ces systèmes. Une réflexion est nécessaire pour mieux adapter ces techniques afin d’apporter des solutions aux problèmes que l’on veut résoudre (par exemple, en termes de spécification des composants ou de spécification mieux adaptée à la génération de tests).

Les sujets suivants seront étudiés :

Techniques formelles de spécification adaptées à la description et au test de composants

Les techniques formelles de spécification sont utilisées pour modéliser des logiciels de communication distribués, car elles ont été conçues pour décrire des systèmes distribués composés par des processus qui ‘exécutent en parallèle, se synchronisent et communiquent par messages. Elles spécifient les propriétés fonctionnelles d’un système vis à vis de son environnement. Certaines des ces techniques ont été normalisés par l’ISO et l’ITU pour décrire des systèmes informatiques hétérogènes et des systèmes de commutation téléphonique.
L’étude de ces techniques doit se poursuivre afin d’obtenir des abstractions mieux adaptées à la spécification des nouveaux logiciels de communication et qui prennent en compte tous les aspects relatifs à la spécification des composants et au test (architectures, génération de test, etc.).


Techniques de test active et passive (monitoring)

L’objectif du test de conformité est de vérifier si une implantation présente le même comportement que celui de la spécification du système implanté. La plupart des méthodes de test sont basées sur l’approche dit active. De manière intuitive, le test actif veut dire qu’un testeur envoie une donnée d’entrée, dite input à l’implantation et attend une donnée de sortie, dite output. Si le testeur constate que l’output appartient à l’ensemble des outputs attendus selon la spécification, alors le processus continue, sinon une erreur a été détectée dans l’implantation. Ce type de test est appelé actif parce que le testeur a un contrôle total sur les inputs envoyés à l’implantation sous test. Au contraire, le test passif ne suppose pas la présence d’un testeur actif. Dans le test passif l’implantation sous test s’exécute de manière autonome sans aucune interaction avec le testeur. Cependant, la trace que l’implantation exécute est observée pour être analysée. Dans cette dernière appr oche, un ensemble d’invariants (qui représentent les propriétés attendues de l’implantation) sont évaluées sur les traces.
La définition d’un modèle de fautes est complémentaire de l’utilisation de ces techniques et facilite la définition des critères de couverture aussi bien que la détection des erreurs et leur localisation.

Test de composants, test d’intégration et test d’interoperabilité

Les systèmes étudiés sont faits de composants qui peuvent être de taille variable et de différents niveaux de granularité. Ceci peut aller des petites procédures à un ensemble de composants ou jusqu’au système tout entier. Nous envisageons d’étudier des méthodes permettant de tester un composant comme une unité mais aussi comme une partie du système complet. Il s’agit donc d’étudier des méthodes pour le test de composants. Ceci suppose également d’étudier comment ces composants sont intégrés dans le système, nous allons donc également étudier des méthodes pour le test d’intégration. Ces composants doivent interagir avec des composants d’autres systèmes (avec différentes configurations), rendant nécessaire de tester leur intéroperabilité.
On s'intéressera aussi aux logiciels de communication ayant des contraintes temporelles.




Application à des cas d’étude réels

Les techniques et architectures seront appliquées à des cas d’étude proposés par les industriels , en particulier Francetelecom, participant à l'action spécifique du CNRS. On s'intéressera en particulier au cas du protocole PGM assuant un service de multicast.




Références :

Spécification formelle, test, composants logiciels, protocoles de communication, architectures de test, techniques d'abstraction