230 likes | 316 Views
« About two instances of Coverage-Based Statistical Testing » Frédéric Voisin. Deux exemples de travaux sur ce thème. test statistique « structurel », orienté vers la satisfaction de « critères de couverture » Applicable à différents types de formalismes
E N D
« About two instances of Coverage-Based Statistical Testing » Frédéric Voisin
Deux exemples de travaux sur ce thème • test statistique « structurel », orienté vers la satisfaction de « critères de couverture » • Applicable à différents types de formalismes • AUGUSTE: Graphe de flot de contrôle / flot de données pour du test unitaire (programmes C-like) • SALLUSTE: description LUSTRE Exposé Fortesse
Principes de base Classique: test aléatoire (uniforme ou non) sur les données • Avantages: automatisation test intensif possible Intéressant si on connaît la distribution opérationnelle des données • Inconvénient: faible couverture de cas « rares », pas de relation avec des critères de couverture (qualité) lié à la réalisation de l’objet sous test, La couverture réelle des tests ne s’améliore pas forcément si on accroît la taille du jeu de test Exposé Fortesse
Plus novateur: test statistique structurel ! • La « complexité » de la réalisation est prise en compte à travers des « critères de couverture » • On introduit un « biais » par rapport à une distribution uniforme des données de manière à ne pas sous-représenter les cas rares. Idées : • Plutôt que de faire des tirages uniformes sur des données, on fait du tirage uniforme sur des chemins dans une représentation en graphe (par ex. Chemins d’exécution dans le graphe de flot de contrôle) • On pondère les différents éléments du graphe pour aboutir à une uniformité sur les chemins (de longueur donnée) • Il existe un outil pratique pour cela: les structures combinatoires Exposé Fortesse
Les « structures combinatoires » • Structure combinatoire ? • un objet atomique • ou obtenu en appliquant un opérateur à des objets combinatoires… • Objets « décomposables » construits de manière unique à partir d’objets plus petits • Problème de base: étant donné un ensemble d’objets combinatoires et un entier n, engendrer aléatoirement un ou une séquence d’objets de taille n dans cet ensemble. Exposé Fortesse
Les « spécifications combinatoires » • Un ensemble particulier de règles de constructions: • Des objets « vide » de taille 0 (noté 1, ou ) • Des « atomes » de taille 1 • Un ensemble d’opérateurs: + : union disjointe X : produit Séquence(A): suite finie d’éléments de A – la séquence peut être bornée ou de longueur donnée. Set(A): l’ensemble des ensembles finis d’éléments de A Cycle(A): cycles finis d’éléments de A • Exemples: si F est un atome: • A = F + A x A -- arbres binaires complets dont les feuilles sont des atomes • A = S + S x A x A – les sommets sont les atomes Exposé Fortesse
Les spécifications combinatoires sont mises sous forme « standard », équivalente à une famille d’ équations aux langages. • Les algos de tirage se décomposent en deux étapes: • Dénombrement des objets de taille n (ou ≤ n) • Étape de tirage basée sur le dénombrement précédent… • Il existe des algo très efficaces de génération quand la spécification combinatoire correspond à un langage algébrique ou rationnel • Dans la suite on ne garde que +, x, et * (lang. rationnel !) • On peut ajouter une extension « syntaxique » seq (n) ou seq (≤ n), n étant fixé, sans sortir du cadre rationnel. Exposé Fortesse
S4 aS3 bbS2 aaS2 abbS1 bbaS1 bbbbS0 aaaS1 aabbS0 abbaS0 bbaaS0 bbbb aaaaS0 aabb abba bbaa aaaa Un exemple de génération uniforme • Langage de Fibonacci : L = (a+bb)* • S aS | bbS | • Une instance de taille 4: S aS aaS aabbS • Toutes les instances: Exposé Fortesse
2/5 3/5 2/3 1/3 1/2 1/2 1/2 1/2 S4 aS3 bbS2 aaS2 abbS1 bbaS bbbbS0 aaaS1 aabbS0 abbaS0 bbaaS0 bbbb aaaaS0 aabb abba bbaa aaaa Counting and randomising: Counting: S aS | bbS | S(0) = 1 ; S(1) = 1 ; S(n) = S(n-1) + S(n-2) (n≥2) Exposé Fortesse
v INIT v I0 e0 C1 e5 e1 e3 I2 B3 I4 e4 e6 e2 I5 e7 EXIT Structures combinatoires et graphe de flot de contrôle Atomes= arcs Sequence d’arcs= chemins Structure Combinatoire : S= v.S + v.e0.C.e7 C= e1.e2 + e3.B.e6 B= e4.I + ε I= e5.B S C Exposé Fortesse
Là où ça coince…. • Si on se base sur la description (le graphe) • Tous les chemins ne correspondent pas à des chemins réels • Il est indécidable de savoir si un chemin est exécutable • On se repose sur la résolution de contraintes pour tester si le chemin est faisable et déterminer des valeurs d’entrée Comment éviter de tirer des chemins infaisables ? Comment détecter qu’un chemin est infaisable ? Que fait-on des chemins infaisables (on retire ?) • Que fait-on si le critère de couverture ne se traduit pas facilement en termes de tirage de chemins ? Exposé Fortesse
SALLUSTE Optimisations adaptées à LUSTRE: Dépendances entre données Dépendances entre cycles temporels consécutifs Heuristiques de résolution de contraintes Traduction de la spécification Lustre en structures combinatoires Génération basée sur le dépliage d’opérateurs Lustre Exposé Fortesse
AUGUSTE Test unitaire de programmes impératifs: techniques de compilation (traduction optimisée) critères de couvertures classiques benchmark de la méthode Exposé Fortesse
Auguste: principe général n Critère Programme N Compilateur en une (ou plusieurs) spécifications de structures Combinatoires Si besoin, calcul de la distribution sur les éléments du critère Tirages de N chemins (précédé, si besoin, du tirages de N éléments du critère) Construction des prédicats des N chemins Résolution Échec(s) de résolution? N données de test Exposé Fortesse
AUGUSTE – V0: architecture logicielle Programme C-like, N, Nb, critère Dénombrement Resolution de Systèmes Linéaires Tirage Génération de code C Calcul d’automates (Ce,e’) Analyse syntaxique Transformation(s) S.C. Génération de S.C. ensemble de chemins Tirage Construction des prédicats De cheminement Résolution de contraintes Prédicat de chemin * Valeurs d’entrée / Échec(s) Jeu de N tests Exposé Fortesse
AUGUSTE – V1: architecture logicielle Programme C-like, N, Nb, critère Dénombrement Resolution de Systèmes Linéaires Tirage Génération de code C Calcul d’automates (Ce,e’) CIL S.C. Génération de S.C. ensemble de chemins Tirage Construction des prédicats De cheminement Résolution de contraintes Prédicat de chemin * Valeurs d’entrée / Échec(s) Jeu de N tests Exposé Fortesse
FCT4 Choix de n ? n ≥ 6 + 12 x 19 => n ≥ 234 > 1030 chemins à considérer, bcp de chemins infaisables Exposé Fortesse
Transformation de la structure combinatoire Deux sous-graphes indépendants mauvaise couverture Exposé Fortesse
All-vertices and all-edges • First naive approach: • Draw uniformly N elements e1, …, eN among those to be covered • For each ek, generate a path among those traversing ek, of length ≤ n • Let S be the set of elements to be covered (statements, branches, …); eS, the probability of e to be activated is where is the nb of paths traversing e and is the nb of paths traversing both e and e’
Test Quality • What does it mean to “satisfy” a coverage criteria in a randomised framework? The test qualityqN is the weakest probability that any element of S has to be covered when N tests are exercised qN =1-(1- pmin)N where pmin = min{p(e), eS}
How to increase mineS p(e) ? • By drawing non uniformly from S: • let S = {e1, …, em}, and p(ei) the probability of ei • let , then • Given the ci,j, the problem of finding the values {p(e1) , …, p(em)} such that: • min{p(ei), i = 1, …, m} is maximum • and p(e1) + …+ p(em) = 1 is a classical one in combinatorial optimisation
PB : Maximise pmin under these constraints This optimisation problem is solved by a Simplex algorithm. The p1(ei) give the distribution for drawing from S
Extensions à Auguste • « Industrialisation » du prototype • Test de différents solveurs de contraintes • Passage à un sous-ensemble de vrai C • Extensions « syntaxiques » • Extensions « sémantiques » • Annotations intelligentes de programmes C • Apprentissage des chemins infaisables • Traduction plus « fine » en structures combinatoires • Transformations de la structure combinatoire • Analyse statique et évaluation symbolique • Program slicing • Autres méthodes de tirage aléatoires (cas non rationnels) Exposé Fortesse