Le Projet GENETTA (GÉNÉration automatique de Tests sTatistiques pour jAva embarqué) vise à générer automatiquement et statistiquement
des jeux de test afin de s'assurer une certaine confiance dans la fiabilité de programmes Java embarqué (JavaCard, J2ME).
Ce projet est financé par la région
Bretagne dans le cadre d'un programme de renouvellement des compétences
Le projet GENETTA s'effectue à l'IRISA, unité mixte de recherche de l'INRIA, dans l'équipe
LANDE.
Nous avons recueilli, pour ce projet, les témoignages d'intérêts de trois partenaires industriels :
Alliance Qualité Logiciel,
France Télécom Recherche & Développement et
Oberthur Card Systems.
Mot clés liés au projet : Test Logiciel, Test Statistique, Probabilités, Statistiques, J2ME, Javacard
La promesse du déploiement massif de terminaux mobiles intégrant des capacités d'exécutions d'applications embarquées est désormais une réalité (téléphones mobiles Java, smartphone, PDA). Ces terminaux, munis d'une carte à puce ouverte (SIM), s'appuient le plus souvent sur des versions spécialisées de la plateforme Java telles que J2ME. Les applications logicielles exécutables sur ces terminaux mobiles, nommées midlets, doivent être validées et certifiées par les opérateurs afin d'offrir des garanties de sécurité et de sûreté de fonctionnement. Ces phases de validation et de certification sont aujourd'hui reconnues comme essentielles mais très coûteuses. En effet, elles reposent sur des techniques de test et d'analyse statique qui sont encore très artisanales. En particulier, les scenarii de test qui visent à détecter des comportements dangereux du terminal ou des défaillances, sont crées manuellement. Un des enjeux économiques des années à venir dans ce domaine consiste à mettre au point des techniques de tests permettant la validation et la certification la plus automatisée possible de ces applications.
Ce projet GENETTA vise à développer la technique du test logiciel statistique pour la validation et la certification de programmes Java embarqués, qui s'exécutent sur les terminaux mobiles (J2ME) et les cartes à puce (JavaCard). Le test de ces programmes doit être guidé par une sélection judicieuse des scenarii face à des objectifs de test tels que la détection de comportements dangereux ou de défaillance. Cette sélection peut-être effectuée soit en choisissant une seul scenario face à un objectif de test (test déterministe), soit en générant de manière aléatoire les scenarii (test statistique). Dans ce dernier cas, l'automatisation du procédé est aisée puisqu'elle repose simplement sur l'utilisation de générateurs de données pseudo-aléatoires largement disponibles. L'approche la plus directe pour le test statistique consiste à construire un générateur uniforme sur le domaine d'entrée des programmes mais cette démarche souffre de plusieurs faiblesses, en particulier de son caractère aveugle de génération. Par exemple, certains comportements dangereux (ou volontairement cachés) ayant une probabilité très faible mais non nulle d'apparaître ne seront sans doute jamais exercés durant une telle phase de test. Pour répondre à ce problème, une approche possible est la construction d'un générateur non uniforme sur le domaine d'entrée qui a pour but de tester avec autant d'efficacité les comportements les moins probables que les comportements nominaux des applications sous test. Cette approche permet de plus, par rapport à une génération uniforme, la minimisation du nombre de scenarii à générer face à un objectif de test, ce qui diminue le coût de fabrication de l'oracle de test. Ce projet GENETTA a pour ambition d'introduire dans notre équipe cette nouvelle problématique, la validation et la certification de programmes Java embarqués par le test logiciel statistique, puisque nous ne nous étions intéressés jusqu'à présent qu'aux approches de test déterministe. Il vise à développer la technique de test statistique des programmes qui s'exécutent sur les terminaux mobiles (J2ME) et les cartes à puce (JavaCard) et à démonter la faisabilité d'une telle approche d'un bout à l'autre, c'est-à-dire en incluant la phase de génération automatique des scenarii, la phase d'exécution des tests et la phase d'analyse des verdicts de test. Le projet GENETTA a une durée de 3 ans.
Les résultats attendus du projet GENETTA concernent la définition de techniques de génération automatique de tests statistiques pour Java embarqué, par résolution de systèmes de contraintes probabilistes, ainsi que la réalisation d'un prototype qui supporte cette approche. La pertinence des tests générés sera évaluée en test croisé. Au delà de ces résultats directs au terme du projet, nous nous attendons à l'ouverture d'un nouveau champ d'investigation autour du test logiciel statistique pour la validation et la certification des programmes Java embarqués. En effet, le test logiciel statistique repose sur l'observation de nombreuses exécutions des programmes sous test, or ce n'est qu'assez récemment que les capacités d'exécution des plateformes de test sont devenues suffisantes pour autoriser une telle démarche. Cette approche vise ainsi à faire passer, dans une certaine mesure, le développement d'applications Java pour terminaux mobiles et cartes à puce d'un stade artisanal à un stade plus industriel.
Dernières modifications : Décembre 2004