Gnration de tests partir de spcifications algbriques : loutil LOFT - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Gnration de tests partir de spcifications algbriques : loutil LOFT

Description:

Programmation logique quationnelle, r criture conditionnelle et m canismes de contr le ... A partir de EqExhSP : admettre des hypoth ses de s lection de fa on ... – PowerPoint PPT presentation

Number of Views:31
Avg rating:3.0/5.0
Slides: 31
Provided by: Bru6199
Category:

less

Transcript and Presenter's Notes

Title: Gnration de tests partir de spcifications algbriques : loutil LOFT


1
Génération de tests à partir de spécifications
algébriques l outil LOFT
Prototypage de spécifications algébriques
conditionnelles positives Automatisation de
stratégies de sélection Programmation logique
équationnelle, réécriture conditionnelle et
mécanismes de contrôle
2
Exemple listes dentiers naturels
  • SPECIF NatList USE Nat Boolean
  • SORTS nlist
  • GENERATORS
  • empty nlist
  • cons _ _ nat nlist nlist
  • OPERATIONS
  • is_empty _ nlist boolean
  • head _ nlist nat
  • tail _ nlist nlist
  • length _ nlist nat
  • sorted _ nlist boolean

3
Exemple listes dentiers naturels (2)
  • VARIABLES
  • Lnlist, A,Bnat
  • AXIOMS
  • is_empty1 is_empty(empty) true
  • is_empty2 is_empty(cons(A,L)) false
  • head1 head(cons(A,L)) A
  • tail1 tail(cons(A,L)) L
  • length1 length(empty) 0
  • length2 length(cons(A,L)) s(length(L))
  • sorted1 sorted(empty) true
  • sorted2 sorted(cons(A,empty)) true
  • sorted3 sorted(cons(A,cons(B,L))) and(
    le(A,B), sorted(cons(B,L)) )

4
Spécifications Algébriques
  • Spécifications structurées hiérarchie de
    modules
  • SP DSP SP0 SP1 ...
  • Module de spécification DSP (S, Ax)
  • signature S sortes (types), noms dopérations
    (générateurs et opérations définies),
    spécifications utilisées
  • ensembles daxiomes Ax équations
    conditionnelles positives entre termes bien
    formés, dont les variables (typées) sont
    quantifiées universellement
  • t1 t'1 ... tn t'n gt t t 

5
Test, soumission et oracle
  • Test instance close dun axiome de SP, t1 t'1
    ... tn t'n Þ t t'
  • ex head(cons(3,empty)) 3
  • Soumission évaluation de valeurs concrètes par
    P
  • evalP(t1), evalP(t'1), ... evalP(t), evalP(t')
  • Oracle quand evalP(t1) P evalP(t'1) et ...
    et evalP(tn) P evalP(t'n) alors
    evalP(t) P evalP(t')
  • ( P égalité abstraite entre
    valeurs )
  • s est une sorte observable P (ou le langage de
    programmation) fournit un prédicat dégalité (eqs
    )

6
Jeux de test exhaustifs
  • ExhaustSP s f f Î Ax, s substitution close
  • Hypothèse minimale (TestableP) MP est une
    S-algèbre finiment générée, pour toute sorte
    observable s, eqs est une congruence
  • Oracle partiel égalités sur les sortes
    observables
  • A partir de là on ignore les problèmes
    dobservabilité
  • Remarques
  • Les tests conditionnels dont les prémisses sont
    fausses ne peuvent pas mettre en échec un
    programme
  • Les prémisses qui sont vraies sont testées
    ailleurs
  • EqExhSP s t s t (t1 t'1 ... tn
    t'n Þ t t' ) Î Ax,
  • s substitution close,
  • SP ¾ ( s t1 s t'1 ... s tn s t'n )

7
Sélection de tests
  • A partir de EqExhSP admettre des hypothèses de
    sélection de façon à pouvoir se restreindre à un
    sous-ensemble fini T de taille raisonnable
    (compromis coût / couverture de la spécification)
  • A partir dun objectif de test toute formule
    conditionnelle positive conséquence de la
    spécification
  • Critères de couverture un jeu de tests par
    axiome (ou objectif), instances closes (de la
    conclusion) des axiomes (conditionnels)
  • satisfaisant les prémisses des axiomes
    conditionnels
  • en exploitant les sous-domaines induits par les
    utilisations dopérations définies (sous-cas
    correspondant aux axiomes)
  • Méthode analyse par cas (dépliage des opérations
    définies) pour caractériser des sous-domaines,
    hypothèses de sélection et stratégies associées

8
Hypothèses de régularité
  • Si la formule f est vraie pour toute
    substitution de la variable X, de "taille" a
    bornée par n, alors f est vraie pour toute
    substitution de X
  • ( "t Î TW ) ( a(t) n Þ Mp ú f(t) ) Þ (
    "t Î TS )( Mp ú f(t) )
  • Exemple
  • f sorted( cons(A,cons(B,L)) ) and( le(A,B),
    sorted(cons(B,L)) ),
  • variable L de sorte nlist, a length, n 1,
  • Stratégie sélection des substitutions telles
    que length(L) 1
  • L empty
  • L cons(C,empty)

9
Hypothèses duniformité sur une sorte
  • Si la formule f est vraie pour une substitution
    t0 de la variable X, alors f est vraie pour toute
    substitution de X
  • ( "t0 Î TW ) ( Mp ú f(t0) Þ ( "t Î TS )( Mp
    ú f(t) ) )
  • Exemple uniformité pour A, B et C de sorte nat
    dans les substitutions sélectionnées par
    régularité (choix dune valeur quelconque pour A,
    B et C)
  • length(L) 0 A 3, B 1
  • sorted( cons(3,cons(1,empty)) )
  • and( le(3,1), sorted(cons(1,empty)) )
  • length(L) 1 A 0, B 5, C 2
  • sorted( cons(0,cons(5,cons(2,empty))) )
  • and( le(0,5),sorted(cons(5,cons(2,empty)))) )

10
Décomposition en sous-domaines dépliage des
opérations définies
  • Caractériser des sous-domaines du domaine de
    validité dune formule en exploitant les cas de
    définition donnés par les axiomes
  • sorted(cons(A,cons(B,L))) and(le(A,B),
    sorted(cons(B,L)))
  • Remplacement dégal à égal en utilisant les
    axiomes définissant "and", puis ceux définissant
     "le"

and1 and( true, true ) true and2 and(
false, true ) false and3 and( true, false )
false and4 and( false, false ) false
  • le1 A B Þ le( A, B ) true
  • le2 lt( A, B ) true Þ le( A, B ) true
  • le3 lt( B, A ) true Þ le( A, B ) false

11
Décomposition en sous-domaines (2)
  • and1 le(A,B) true sorted(cons(B,L))
    true
  • le1 A B sorted(cons(B,L)) true
  • le2 lt(A,B) true sorted(cons(B,L))
    true
  • and2 le(A,B) false sorted(cons(B,L))
    true
  • le3 lt(B,A) true sorted(cons(B,L))
    true
  • and3 le(A,B) true sorted(cons(B,L))
    false
  • le1 A B sorted(cons(B,L)) false
  • le2 lt(A,B) true sorted(cons(B,L))
    false
  • and4 le(A,B) false sorted(cons(B,L))
    false
  • le3 lt(B,A) true sorted(cons(B,L))
    false
  • On peut continuer en dépliant sorted ...

12
Décomposition en sous-domaines (3) influence de
laxiomatisation, prise en compte des axiomes
effaçants
  • Axiomatisation dun and  séquentiel 
  • and-seq1 and( true, Bool ) Bool
  • and-seq2 and( false, X ) false
  • la valeur du second argument est inutile lorsque
    le premier vaut false on ne déplie pas dans le
    terme correspondant (réduction de la
    combinatoire)
  • and-seq1 le(A,B) true sorted(cons(B,L))
    Bool
  • le1 A B sorted(cons(B,L)) Bool
  • le2 lt(A,B) true sorted(cons(B,L))
    Bool
  • and-seq2 le(A,B) false sorted(cons(B,L))
    X
  • le3 lt(B,A) true sorted(cons(B,L)) X

13
Uniformité sur un sous-domaine D
  • Si la formule f est vraie pour une substitution
    (t1, ... tn) dans D des variables (X1, ... Xn),
    alors f est vraie pour toute substitution de (X1,
    ... Xn) dans D
  • ( "(t1, ... tn) Î D (t1, ... tn) Î TWn
    ) ( Mp ú f(t1, ... tn) Þ ( "(t1, ... tn)
    Î D )( Mp ú f(t1, ... tn) ) )
  • Remarque ces sous-domaines sont des conjonctions
    déquations
  • solutions de problèmes équationnels dans la
    théorie définie par les axiomes unification dans
    la théorie équationnelle de SP

14
Usage du dépliage et des hypothèses de sélection
  • Dépliage si la formule contient des occurrences
    dopérations définies (membre droit ou prémisses)
    permettant de caractériser des sous-cas
     intéressants 
  • sorted(cons(A,cons(B,L))) and(le(A,B),
    sorted(cons(B,L)))
  • Uniformité
  • sur un domaine sous-domaine obtenu par dépliage
  • sur une sorte pour une sorte importée (définie
    dans un module de spécification utilisé et déjà
    testé), pour des variables dont la valeur nest
    pas  contrainte 
  • tail(cons(A,L)) L
  • Régularité pour une variable dune sorte
    dintérêt (en cours de définition) si on ne peut
    pas faire de dépliage  intéressant 
  • tail(cons(A,L)) L

15
LOFT (LOgic for Functions and Testing)
  • Stratégies de sélection et dépliage résolution
    contrôlée de problèmes équationnels
  • Surréduction conditionnelle (conditional
    narrowing) (RAP, SLOG) procédure de résolution
    équationnelle dans la théorie dune spécification
    conditionnelle positive (modèle initial)
  • simulation par résolution de clauses de Horn
  • mécanismes de contrôle inspirés des langages de
    programmation logique avec contraintes (PROLOG
    II, Mu-Prolog, Eclipse) méta-clauses "wait"
    , "do_not_unfold"

16
Simulation de la surréduction conditionnelle
  • Spécifications avec constructeurs
  • définitions inductives par rapport à des
    générateurs libres
  • en orientant les axiomes de gauche à droite, on
    obtient un système de règles de réécriture
    confluent et noethérien sur les termes clos
  • opérations complètement définies par rapport aux
    générateurs (complétude uniquement pour les
    termes complètement définis)
  • head(empty) ltgt head(empty)
  • Traduction en clauses de Horn
  • à chaque opération darité n est associé un nom
    de prédicat darité n 1
  • les occurrences internes dopérations définies
    sont remplacées par des variables résultats selon
    un parcours en profondeur du terme (à gauche
    dabord)

17
Traduction en clauses de Horn exemple
  • Clauses définissant lopération length
  • length( empty, 0 ).
  • length( cons(A, L), s(N) ) -
  • length( L, N ).
  • Clauses définissant lopération sorted
  • sorted( empty, true ).
  • sorted( cons(A, empty), true ).
  • sorted( cons(A, cons(B, L)), Bool ) -
  • le( A, B, Bool1 ),
  • sorted( cons(B, L), Bool2 ),
  • and( Bool1, Bool2, Bool ).

18
Mécanismes de contrôle sélection
  • Dépliage résolution équationnelle contrôlée,
    les réponses sont des paires substitution,contr
    aintes
  • unfold_std( directives , eq1, ... eqn)
    (requête)
  • dépliage des opérations de eq1 ... eqn selon
    directives
  • do_not_unfold( f(...) t ) (module de
    contrôle)
  • méta-clauses interdisant la résolution des
    sous-buts filtrés par f(...) t
  • Uniformité
  • random_choice choix aléatoire de laxiome à
    appliquer (backtrack si échec)
  • ?( contraintes ) première solution de
    contraintes (cut de Prolog)
  • ground_instances instanciation close des
    variables (choix aléatoire des générateurs)

19
Dépliage de and(lt(A,B),sorted(cons(B,L)))
résolution contrôlée
20
Mécanismes de contrôle résolution
  • Stratégie de résolution choix du sous-but
    sunifiant avec le minimum de têtes de clauses
  • wait( f(...) t ) (module de contrôle)
  • méta-clauses retardant la résolution du sous-but
    filtré
  • init_iter, max_depth (paramètres)
  • profondeur itérative bornée
  • rewrite (paramètre, requête)
  • réécriture entre les étapes de résolution
  • Module de simplification
  • règles de réécriture complémentaires (e.g.
    and(true, B) B )
  • factorize factorisation de sous-buts
  • and(A,B) Bool, and(A,B) false
  • Þ and(A,B) false avec Bool false

21
Panneau de contrôle
22
(No Transcript)
23
Exemple de requête
  • Dépliage des opérations and, le (au plus une
    fois),
  • puis, pour chaque paire substitution,
    contraintes calculée par dépliage, première
    solution avec stratégie aléatoire,
  • enfin, instanciation close des variables.
  • unfold_std( ( lt, 0), (sorted, 0) ,
  • and( le(A, B), sorted(cons(B, L))) Bool ),
  • random_choice, ?,
  • ground_instances.

24
Solutions de la requête
Boolboolean false, Anat sucf(3), Bnat
sucf(2), Lnlist empty Boolboolean false,
Anat sucf(2), Bnat sucf(1), Lnlist
cons(0, empty), Boolboolean true, Anat
sucf(1), Bnat sucf(1), Lnlist cons(sucf(3),
cons(sucf(3), cons(sucf(5), empty))) Boolboolean
false, Anat sucf(1), Bnat
sucf(1), Lnlist cons(sucf(2), cons(sucf(2),
cons(0,empty))) Boolboolean true, Anat
0, Bnat sucf(9), Lnlist cons(sucf(10),
cons(sucf(10), cons(sucf(13), empty))) Boolboole
an false, Anat sucf(1), Bnat
sucf(3), Lnlist cons(0, empty)
25
Objectifs de test
  • Propriétés conséquences de la spécification que
    lon voudrait tester
  • dans le programme sous test (vérification)
  • dans la spécification ? (validation)
  • i0 insert(A, empty) cons(A,empty)
  • i1 le(A,B) true gt
  • insert(A, cons(B, L)) cons(A,cons(B,L))
  • i2 le(A,B) false gt
  • insert(A, cons(B, L)) cons(B,insert(A,L))
  • Objectif de test pour insert et sorted
  • sorted(insert(A,L)) sorted(L)

26
Mise à lépreuve de la spécification pour
lobjectif (1)
  • Dépliage du membre gauche
  • ??- unfold_std(('ltnat,nat-gtboolean',0),
  • ('sortednlist-gtboolean',2),
  • ('insertnat,nlist-gtnlist',2),
  • sorted(insert(A,L))B),
  • random_choice,?,
  • nodisplay.
  • NUMBER OF SOLUTIONS 38

Confrontation des cas au membre droit ??-
unfold_std(('ltnat,nat-gtboolean',0),
('sortednlist-gtboolean',2),
('insertnat,nlist-gtnlist',2), sorted(insert(A
,L))B), random_choice,?,
ground_instances, ?(sorted(L)B),
nodisplay. NUMBER OF SOLUTIONS 38
27
Mise à lépreuve de la spécification pour
lobjectif (2)
  • Dépliage du membre droit
  • ??- unfold_std(('ltnat,nat-gtboolean',0),
  • ('sortednlist-gtboolean',2),
  • sorted(L)B),
  • random_choice,?,
  • nodisplay.
  • NUMBER OF SOLUTIONS 23

Confrontation au membre gauche ??-
unfold_std(('ltnat,nat-gtboolean',0),
('sortednlist-gtboolean',2), sorted(L)B),
random_choice,?, ground_instances,
?(sorted(insert(A,L))B), nodisplay. NUMBER
OF SOLUTIONS 23
Puis sélection des cas de test par dépliage et
uniformité
28
Résultats expérimentaux métro MAGGALY
  • Définition des conditions dalarme des portes
    selon la localisation du train, le numéro du
    segment, la position, la vitesse
  • Stratégie de dépliage standard opérations
    booléennes, comparaison de vitesses
  • 254 tests pour les 4 axiomes définissant
    lalarme, dont 230 tests pour le cas darrêt
    durgence
  • Mutations sur une version Modula-2 du programme
    (académique) détection de tout les mutant
    erronés et dune vraie faute
  • Autres utilisations de LOFT animation de
    spécifications et test dos-à-dos des versions
    successives de la spécification

29
Comparaison avec le test statistique(collaboratio
n avec le LAAS)
  • Analyse de mutations sur un programme C
    (contrôle/commande de centrale électrique)
  • 1345 mutants
  • 5 jeux de tests différents pour chaque méthode de
    sélection (mesure de stabilité)
  • LAAS couverture statistique du critère tous
    les chemins 19 chemins, 405 entrées
  • LRI stratégie de dépliage standard à partir
    dune spécification algébrique, 282 entrées (47
    flots de 6 entrées consécutives)

30
Comparaison avec le test statistique (2)
  • Score parfait pour le LAAS (détection de tous les
    mutants erronés)
  • Score presque parfait pour le LRI (de 0.98 à 1)
    2 mutants erronés ne sont pas systématiquement
    détectés (uniformités trop fortes)
  • Les deux méthodes ont des résultats meilleurs et
    plus stables que les approches classiques
  • tous les chemins de 0.79 à 0.84
  • Test aléatoire uniforme de 0.56 à 0.84
Write a Comment
User Comments (0)
About PowerShow.com