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

Le Test des logiciels Ifsic 1  Yves Le Traon 2002 Le Diagnostic Yves Le Traon.

Présentations similaires


Présentation au sujet: "Le Test des logiciels Ifsic 1  Yves Le Traon 2002 Le Diagnostic Yves Le Traon."— Transcription de la présentation:

1 Le Test des logiciels Ifsic 1  Yves Le Traon 2002 Le Diagnostic Yves Le Traon

2 Le Test des logiciels Ifsic 2  Yves Le Traon 2002 Stratégies de test et diagnostic Stratégie incrémentale Stratégie par recoupements des traces d ’exécution Stratégie par suppression puis réintroduction Slicing du programme Utilisation d ’assertions/programmation par contrats

3 Le Test des logiciels Ifsic 3  Yves Le Traon 2002 Stratégies de test Combinatoires All-Paths Multiple-Clue

4 Le Test des logiciels Ifsic 4  Yves Le Traon 2002 Stratégies de test: Multiple clue

5 Le Test des logiciels Ifsic 5  Yves Le Traon 2002 Stratégies de test: Multiple clue

6 Le Test des logiciels Ifsic 6  Yves Le Traon 2002 Stratégies de test : Start-Small

7 Le Test des logiciels Ifsic 7  Yves Le Traon 2002 Stratégies de test: Start-Small m ij = 1 si l’écoulement E i active le module M j

8 Le Test des logiciels Ifsic 8  Yves Le Traon 2002 Diagnostic: slicing program sumofoddnbr; var n,sum,i:integer; begin sum:=0; i:=1; read(n); while n>0do begin sum:=sum+i; i:=i+2; n:=n-1; end; write(sum); end. 1234567812345678 Slice statique pour n program sumofoddnbr; var n,sum,i:integer; begin sum:=0; i:=1; read(n); while n>0do begin sum:=sum+i; i:=i+2; n:=n-1; end; write(sum); end. 1234567812345678

9 Le Test des logiciels Ifsic 9  Yves Le Traon 2002 Slicing (Weiser) Le slicing consiste à abstraire la partie du programme qui influence les valeurs d’une variable (ou l’exécution d’une instruction) problème indécidable utile en test pour: –analyse statique de chemins (couverture) –sensibilisation dynamique de chemins (Korel & Co.) –débogage/diagnostic autres applications : compilation efficace, parallélisation.

10 Le Test des logiciels Ifsic 10  Yves Le Traon 2002 Slicing Slicing de x, ligne 10 ? read(n) i:=1 sum:=0; while (i<=n) do begin if (i mod 2 = 0) then x:= 17 else x:=18; endif sum:= sum + i; i:= i+1; end; write(x); write(sum); 1 2 3 4 5 6 7 8 9 10 11 Slice statique pour n ? read(n) i:=1 sum:=0; while (i<=n) do begin if (i mod 2 = 0) then x:= 17 else x:=18; endif sum:= sum + i; i:= i+1; end; write(x); write(sum); 1 2 3 4 5 6 7 8 9 10 11

11 Le Test des logiciels Ifsic 11  Yves Le Traon 2002 Slicing dynamique Slice dynamique souvent imprécis: en test on peut disposer de la donnée effective read(n) i:=1 sum:=0; while (i<=n) do begin if (i mod 2 = 0) then x:= 17 else x:=18; endif sum:= sum + i; i:= i+1; end; write(x); write(sum); 1 2 3 4 5 6 7 8 9 10 11 X, ligne 10 n=2

12 Le Test des logiciels Ifsic 12  Yves Le Traon 2002 procedure sum2 (n:integer;var s2:integer); begin s2:=decrement(n) * n div 2 end; procedure sum1(n:integer;var s1:integer); begin s1:=n * increment(n) div 2 end; procedure partialsums (n:integer; var s1,s2:integer); begin sum1(n,s1); sum2(n,s2) end; procedure compute2 (n:integer; var r2:integer); var s1,s2:integer; begin partialsums(n,s1,s2); add(s1,s2,r2) end; procedure square(n:integer; var r1:integer); begin r1:= n * n end; program Main; var isok :boolean; procedure test (r1,r2:integer; var isok:boolean); begin isok:=r1=r2 end; procedure add (s1,s2:integer; var r2:integer); begin r2:=s1+s2 end; function decrement(n:integer):integer; begin decrement:=n+1(*à la place de n-1*) end; function increment(n:integer):integer; begin increment:=n+1 end;

13 Le Test des logiciels Ifsic 13  Yves Le Traon 2002 procedure compute1 (n:integer; var r1:integer); begin square(n,r1) end; procedure computes (n:integer; var r1,r2:integer); begin compute1(n,r1); compute2(n,r2) end; procedure sqrtest (n:integer; var isok:boolean); var r1,r2:integer; begin computes(n,r1,r2); test(r1,r2,isok) end; (* Programme principal *) begin sqrtest(3,isok) end. cas de test in=3 résultat attendu : out=isok=true résultat obtenu : out=isok=false "test" dépend de "computes" et la procédure "computes" de "computes1" et de "computes2" Graphe d’appel

14 Le Test des logiciels Ifsic 14  Yves Le Traon 2002 Main sqrtest in=3 out:isok=false test computes out:r1=9 in=3 compute2 compute1 in=3 out:r1=9 square in=3 out:r1=9 partialsums in=3 out:s1=6 add in:s1=6 out:r2=12 sum1 sum2 out:s2=6 in=3 out:s1=6 increment decrement in=3 out=4 in=3 out=4 s2=6 r2=12 in=3 out:r2=12 in:r1=9 r2=12 out:isok=false s2=6 graphe d'appel. dépendances de données à l'appel. Interprocedural slicing

15 Le Test des logiciels Ifsic 15  Yves Le Traon 2002 program sumofoddnbr (input,output); var n,sum,i,s:integer; procedure init (var sum,i,n:integer); begin sum:=0; i:=1; read(input,n) end; procedure add (var a:integer;b:integer); begin a:=a+b end; procedure increment2 (var c:integer); begin c:=c+2 end; procedure decrement1 (var d:integer); begin d:=d-1 end; procedure summation (var s,i,n:integer); begin add(s,i); increment2(i); decrement1(n) end; begin (*main*) init(s,i,n); while n>0 do summation(s,i,n); sum:=s; write(output,sum) end.

16 Le Test des logiciels Ifsic 16  Yves Le Traon 2002 –Chaque noeud représente une procédure (ou une instruction) telle que les variables d’entrée sont des utilisation (uses(n)) et les variables de sortie sont des définitions (defs(n)) d'une instruction. –Les arcs entre les procédures représentent les dépendances des données et les dépendances de contrôle. –Les flèches des (uses(n)) aux (defs(n)) pour une variable représentent les relations (defs-uses).

17 Le Test des logiciels Ifsic 17  Yves Le Traon 2002 Slicing le cas de test considéré (n=1)Couv.={d1u3, d2u4, d3u2, d4u7}. Une faute a été détectée à la sortie de p8 (u7)

18 Le Test des logiciels Ifsic 18  Yves Le Traon 2002 (d1) (d2) (u1)(d3) (u2) u7)d7) (u3)(u4) d4 (u5)(d5) (u6)(d6) sumofoddnbr (( p1 p2 p3 p4 p5 p6 p7 p8 graphe d'appel les relations uses-defs

19 Le Test des logiciels Ifsic 19  Yves Le Traon 2002 (d1) (d2) (u1)(d3) (u2) u7)d7) (u3)(u4) d4 sumofoddnbr (( p1 p2 p3 p4 p5 p8 graphe d'appel les relations uses-defs 1

20 Le Test des logiciels Ifsic 20  Yves Le Traon 2002 Dicing

21 Le Test des logiciels Ifsic 21  Yves Le Traon 2002 Slicing : avantages 1) Les coupes sont obtenues automatiquement 2) Une coupe est une sous-partie du programme pouvant être exécutée indépendamment 3) L'analyse permet une localisation très précise de la faute

22 Le Test des logiciels Ifsic 22  Yves Le Traon 2002 Slicing : inconvénients 1) Les coupes à analyser sont en général très nombreuses 2) Une coupe n'a, en général, pas de signification fonctionnelle simple 3) L'analyse de chaque slice implique la mise en place d'un oracle (permettant de déterminer si l'exécution est correcte ou non), et (en raison du point 2) nécessite l'intervention humaine. 4) Étant donné le nombre de coupes qu'il faut, en général, analyser ainsi que le fait que cette analyse n'est pas complètement automatisée, le coût de l'application de cette technique est très important.


Télécharger ppt "Le Test des logiciels Ifsic 1  Yves Le Traon 2002 Le Diagnostic Yves Le Traon."

Présentations similaires


Annonces Google