La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

LSR IMAG 1 Test Structurel de programmes C à l'aide de la programmation logique avec contraintes (PLC) : test dintégration Karim-Cyril Griche LSR/IMAG.

Présentations similaires


Présentation au sujet: "LSR IMAG 1 Test Structurel de programmes C à l'aide de la programmation logique avec contraintes (PLC) : test dintégration Karim-Cyril Griche LSR/IMAG."— Transcription de la présentation:

1 LSR IMAG 1 Test Structurel de programmes C à l'aide de la programmation logique avec contraintes (PLC) : test dintégration Karim-Cyril Griche LSR/IMAG

2 LSR IMAG 2 Plan de la présentation Introduction Choix et objectifs Orientation prise : modélisation de fonctions –Comment modéliser? –Analyse des fonctions appelantes Perspectives

3 LSR IMAG 3 Introduction Projet RNTL Inka en partenariat avec Thalès Systèmes Aéroportés, LIFC, I3S, Axlog Outil Inka : –Issu de la thèse de Arnaud Gotlieb –Test structurel unitaire de programme C en utilisant la PLC Extension de Inka au test dintégration Extension aux flottants (I3S) Extension aux pointeurs (LIFC)

4 LSR IMAG 4 Outil Inka Fonctionnement : –Traduit un programme en un ensemble de clauses prolog (Sicstus) –Réduit cet ensemble de clauses –Génère des tests visant la couverture Programme C Équivalent Prolog Ensemble réduit Cas de test Inka

5 LSR IMAG 5 Test unitaire Test unitaire : on remplace les appels de fonctions par des bouchons int f(int x) {... If (g(y)<0) } But : couverture structurelle de f() - On doit passer dans la branche THEN du if...then...else Condition : résultat de g() négatif - On crée un bouchon bg() qui rend une valeur négative quelle que soit la valeur de y

6 LSR IMAG 6 Extension au test dintégration Intégration : on remplace les bouchons par les véritables fonctions Problème : Les véritables fonctions ne se comportent pas comme les bouchons int f(int x) {... If (g(y)<0) } Int g(int x) { return x*x; } Lintégration de g() pour la couverture structurelle de f() empêche le passage dans la branche THEN du if...then...else -Détecter les nouveaux chemins impossibles au plus tôt -Mauvais bouchons erreurs dexécution potentielles ou masquage derreurs présentes

7 LSR IMAG 7 Étude bibliographique Rares publications Essentiellement des méthodologies dintégration portant sur lordre dintégration des fonctions dans le logiciel

8 LSR IMAG 8 Cadre de lintégration dans Inka Le test dintégration avec Inka seffectue sur un ensemble de fonctions complet formant un sous-système dun logiciel Pas de notion dordre dintégration Objectifs : couverture structurelle f gh g1g2 h1h2... Sous Système Logiciel complet main

9 LSR IMAG 9 Problématique Ce sous-système est représenté sous forme de contraintes –Inka traduit une fonction C en un ensemble de contraintes –Un appel de fonction est traduit en un appel à la clause représentant la fonction Explosion du nombre de contraintes à traiter si le nombre dappel de fonctions est trop grand

10 LSR IMAG 10 Objectifs Trouver un moyen de « passer à léchelle » –Modéliser les fonctions appelées de manière réduite Définir des modèles réalistes : –Moins complexes que les fonctions originales –Équivalents vis à vis des besoins du test (génération de données)

11 LSR IMAG 11 Orientation : Spécialisation de fonctions Modèles de fonctions optimisés : fonctions originales spécialisées pour leur utilisation dans le test Techniques étudiées : –Interprétation abstraite Calcul dinvariants –Slicing intra-procédural Découpe dune fonction –Evaluation partielle Spécialisation de fonctions Approches heuristiques

12 LSR IMAG 12 Construction des modèles 2 critères : Un modèle doit –être plus simple que les fonctions originales –Disposer dun modèle exact de chacune des fonctions 2ème critère nous a amené à une architecture où les approximations se superposent M1M2M complet Ordre dessai des modèles

13 LSR IMAG 13 Plan de la présentation Introduction Choix et objectifs Orientation prise : modélisation de fonctions –Comment modéliser? –Analyse des fonctions appelantes Perspectives

14 LSR IMAG 14 Heuristiques Gestion des appels de fonctions Étude de simplification de fonctions basée sur lélimination de chemins compliqués

15 LSR IMAG 15 Gestion des appels de fonctions Un appel de fonction : clause représentant la fonction –+ : les appels de fonctions sont traités naturellement –- : Mise à plat du système sous test lors de lintégration Idée : Opérateur de gestion des appels de fonctions –Limitation de la profondeur de mise à plat –Développé et en cours dévaluation/calibrage

16 LSR IMAG 16 Gestion des appels de fonctions f g h k i j Dg(x) Di(x)

17 LSR IMAG 17 Heuristique : poids sur les branches Idée : éliminer les branches définies comme complexes Définir un poids pour chaque opération/fonction et pondérer les branches/chemins dune fonction Introduire un mécanisme de préférence des branches à faible poids –Quand cest possible, utiliser la branche avec le poids le plus faible

18 LSR IMAG 18 Poids sur les branches Int g(int x) … if Cond … else y=h(w); … Poids faible Poids très fort f g … h

19 LSR IMAG 19 Plan de la présentation Introduction Choix et objectifs Orientation prise : modélisation de fonctions –Comment modéliser? –Analyse des fonctions appelantes Perspectives

20 LSR IMAG 20 Analyse des fonctions appelantes 3 possibilités : 1. Un modèle par fonction. 2. Un modèle par fonction et par fonction appelante. 3. Un modèle par fonction appelée et par appel dans la fonction appelante.

21 LSR IMAG 21 Un modèle par fonction On remplace tous les appels du sous-système par un appel au modèle –+ : rapidité de construction –- : modèles moins optimisés

22 LSR IMAG 22 Un modèle par fonction et par fonction appelante On remplace tous les appels à g() dans f() par des appels à mg() –+ : existe un contexte du modèle –- : modèle général f(x) :... If (z>5)... y = g(z)... w = g(x*x)... g(x) : if (x>0) return x else return -x mg(x) : return x Contexte élimine les chemins inutiles f(x) :... If (z>5)... y = mg(z)... w = mg(x*x)...

23 LSR IMAG 23 Un modèle par fonction appelée et par appel dans la fonction appelante Chaque appel de fonction est remplacé par un appel au modèle de la fonction pour cet appel. –+ : modèles plus optimisés, contexte précis –- : nombre de modèles

24 LSR IMAG 24 Un modèle par fonction appelée et par appel dans la fonction appelante f(x) :... If (z>5) y = g(z) else y = 2... w = g(x)... g(x) : if (x>0) return x else return -x mg1(x) : return x mg2(x) : g(x) C1 C2 f(x) :... If (z>5) y = mg1(z) else y = 2... w = mg2(x)...

25 LSR IMAG 25 Contexte dutilisation Besoin dinformation : Contexte dutilisation –Contexte dun appel de fonction donné par la fonction appelante Contexte dutilisation défini en 2 parties : –Contexte dappel : Information sur les domaines des variables dentrée de la fonction –Objectifs de génération : Information sur lutilisation faite des résultats de lappel à la fonction et notamment des branchements qui en dépendent

26 LSR IMAG 26 Un contexte dappel Int f(int x) {... If (x>0) y=g(x);... } Contexte = g() appelé uniquement avec des valeurs positives Un contexte dappel est formé par lensemble des chemins depuis le début de f() jusqu à lappel à g() Il peut être représenté par un ensemble de contraintes

27 LSR IMAG 27 Un objectif de génération Int f(int x) {... If (g(y)>=2)... else... } Obj. Gen. = Notre modèle doit pouvoir produire des sorties <2 et dautres >=2 si cest possible

28 LSR IMAG 28 Perspectives Le contexte dappel : –Point de départ au calcul dun invariant sur domaines de sortie –Utiliser une technique inspirée de lévaluation partielle pour éliminer certaines parties dune fonction Les objectifs de génération : –Envisager le « slice » dune fonction connaissant lutilisation qui doit en être faite

29 LSR IMAG 29 Travaux en cours et perspectives Premières expérimentations concluantes Définition des poids des heuristiques délimination de chemins compliqués et évaluation Prototype implémentant les différentes méthodes pour évaluer leurs résultats


Télécharger ppt "LSR IMAG 1 Test Structurel de programmes C à l'aide de la programmation logique avec contraintes (PLC) : test dintégration Karim-Cyril Griche LSR/IMAG."

Présentations similaires


Annonces Google