• Aucun résultat trouvé

Testeur (STPTIO) associ ´e au TPAIO de la Fig 7.1

La Fig. 7.2 pr ´esente le STPTIO TT du TPAIO pr ´esent ´e dans la Fig. 7.1. La localit ´e sym-

bolique initiale est lT0 = {(l0, x − y = 0, ⊥)}. Il n’existe aucune transition qui quitte la localit´e

symbolique lT

0 avec l’ ´etiquette time car toutes transitions qui quittent l0 de T sont avec

la deadline lazy et l’ACV de la localit ´e l0 est true. Alors, il n’y a pas de d ´epassement

de temps dans lT0 et le temps peut s’ ´ecouler ind ´efiniment dans la localit ´e l0. La localit ´e

symbolique usucc(dsucc({lT

0}, A)) est ´egale `a l T

1 = {(l1, x − y = 0 ∧ y 6 3, ⊥)} parce que T

n’accepte pas la transition d’ ´ecoulement de temps (l1, x = 0, ⊥) →to `u t > 3 vu qu’il existe

les transitions (l1, a−, x 6 3, delayable, ∅, l2) et (l1, a+, x 6 3, delayable, {x}, l0). Il existe trois

lT1. Puisque l’observation de a− ou de a+ n’est plus autoris ´e apr `es trois unit ´es de temps, alors, la transition ({(l1, x − y = 0 ∧ y 6 3, ⊥)}, ?time, y > 3, lazy, {y}, f ail) est ajout´ee `a ∆T,

selon le cas (III) de la Def.30 des transitions du STPTIO. Il n’y a pas de transition qui quitte la localit ´e symbolique lT1 avec l’ ´etiquette a− et la garde 3 < y 6 4, parce que la transition (lT

1, ?time, y > 3, lazy, {y}, f ail) est dans ∆

T. Comme il n’existe aucune transition

´etiquet ´ee par a+qui quitte l2, alors la transition ({(l2, x − y = 0, [a])}, a+, y > 0, lazy, {y}, f ail)

est ajout ´ee `a ∆T selon le cas (V) de la Def.30 des transitions du STPTIO. La tran-

sition ({(l2, x − y = 0, [a])}, ?othw, y > 0, lazy, {y}, f ail) est dans ∆T selon le cas (I) de

la Def.30 des transitions du STPTIO. Le d ´elai d’attente K est fix ´e arbitrairement `a 5 unit ´es de temps, ce qui est sup ´erieur `a 4 qui est le d ´elai maximum de d ´eclenchement d’une action dans les localit ´es l0, l2 et l3 o `u le temps peut s’ ´ecouler ind ´efiniment.

Pour satisfaire le cas (II) de la Def.30, le STPTIO contient par exemple la transition ({(l0, x − y = 0, [a])}, ?time, y > 5, lazy, {y}, inconc) car le temps peut s’´ecouler ind´efiniment

dans la localit ´e l4.

7.2/

G ´

ENERATION D

´

ARBRES DE TEST

D ´efinition 31 : Cas de test d’un TPAIO non d ´eterministe avec deadline

Soit T = hL, l0, Σout ∪ {τ}, Γ, X, ∆, Fi un TPAIO qui est une sp´ecification,

TT = hLT, lT0, ΣTin, Γ, {y}, ∆T, FTi le STPTIO de T et RA = hLR, lT 0, (∆

T), ∆R, FTi

le RA de TT. Un cas de test d’un chemin de test π = lT0 −−−−−−−→act0,g0,{y} lT1 −−−−−−−→ lact1,g1,{y} T

2...

actn,gn,{y}

−−−−−−−→ lT

n+1 est un TPAIO acyclique et d ´eterministe tc =

hLtc, lR0, ΣT, Γ, {y}, ∆tc, {pass, f ail, inconc}i o`u : - ∆tc = {lT i acti,gi,{y} −−−−−−−→ lTi+1} dans π pour i ∈ 0 `a n − 1 ∪{lT n actn,gn,{y} −−−−−−−→ pass} ∪∆tcf ail∪∆tcinconco`u :

— ∆tcf ail= {lT −act,g,{y}−−−−−→ f ail | lT −−−−−−act,g,{y}→ f ail ∈∆T}, — ∆tc

inconc = {l

T −−−−−−−→ inconc | l?time,g,{y} T −−−−−−−→ inconc ∈?time,g,{y} T}∪ {lT −−−−−−−→act,g,d,{y}

inconc | ∃lT 0.(lT 0 ∈ LR ∧ lT −−−−−−−−−→ lact,g,lazy,{y} T 0 T ∧ act ∈ Σ ∪ Γ+−

¬∃lT 0.(lT act,g,d,X 0 −−−−−−−→ lT 0∈∆tc)} - Ltc= {lT i | l T

i est dans π pour i ∈ 1..n} ∪{pass, f ail, inconc}

Pour g ´en ´erer des tests couvrant toutes les transitions du STPTIO, donc du TPAIO, nous utilisons tous les chemins qui sont associ ´es `a toutes les π−transitions du RA qui partent d’une localit ´e symbolique initiale et se terminent dans l’une des localit ´es symboliques finales. L’ensemble de chemins de test est d ´efini de mani `ere identique `a celle du chapitre pr ´ec ´edent par la Def. 27.

Pour ´evaluer l’efficacit ´e de la m ´ethode par mutation en utilisant le produit synchronis ´e d’un test et d’un mod `ele d’impl ´ementation, on peut consid ´erer les cas de tests individu- ellement pour v ´erifier si l’une des ex ´ecutions du mod `ele de l’impl ´ementation conduit `a f ail. C’est pour cela que l’on d ´efinit pour chaque chemin de test un cas de test. Notre ensemble de cas de tests T C est d ´efini `a partir de l’ensemble des chemins de test S T

de l’automate d’atteignabilit ´e. On calcule un cas de test tc pour chaque chemin de test dans S T qui est un TPAIO. Ses localit ´es sont des localit ´es symboliques. Les verdicts sont ensuite ajout ´es par remplacement de la localit ´e cible de la derni `ere transition du chemin de test par pass et l’ajout des transitions qui atteignent f ail et inconc `a partir de toutes les localit ´es diff ´erentes de pass. Les transitions qui atteignent f ail et inconc sont obtenues `a partir du STPTIO.

La diff ´erence entre un arbre de test calcul ´e dans le chapitre 6 et dans ce chapitre est qu’on prend en compte l’observation d’une action autoris ´ee dans la sp ´ecification et pas dans le cas de test. Donc, on propose d’arr ˆeter l’ex ´ecution du cas de test en atteignant le verdict inconc. On propose d’ajouter des transitions dans l’arbre de tests qui m `enent `a inconcqui ajoutent des transitions d ´ecrites dans la sp ´ecification et qui n’existent pas dans le cas de test calcul ´e. Ses transitions tiennent compte des contraintes de la pile. On ne peut pas effectuer de transition de d ´epilement qui m `ene `a inconc et qui d ´epile un symbole qui n’existe pas au sommet de la pile.

D ´efinissons d’abord dans la Def. 31 un cas de test `a partir d’un chemin de test donn ´e.

7.3/

C

ORRECTION DE LA METHODE

´

Nous nous int ´eressons au cas du test de conformit ´e pour lequel on souhaite v ´erifier si une impl ´ementation est conforme `a une sp ´ecification donn ´ee. Le th ´eor `eme 7.3.1 formule la correction de notre m ´ethode de test en prouvant que si une ex ´ecution de l’impl ´ementation I aboutit `a une localit ´e f ail, alors c’est une ex ´ecution interdite par sa sp ´ecification T . Donc, l’impl ´ementation I n’est pas conforme `a la sp ´ecification T selon la relation de con- formit ´e t pioco.

Th ´eor `eme 7.3.1. π = lT 0 a0,g0,{y} −−−−−−→ lT1 −−−−−−→a1,g1,{y} ...lTn−1 −−−−−−−−−→ lan−1,gn−1,{y} Tn an,gn,{y} −−−−−−→ f ail un chemin d’un cas de test d’une sp ´ecification T = hL, l0, Σ ∪ {τ}, Γ, X, ∆, Fi o`u lTi ∈ 2(L×CC(X∪{y})×Γ

),

gi ∈ Grd({y}), ai ∈Σ ∪ Γ+−∪ {othw}pour chaque 0 6 i 6 n. Si le verdict f ail est observ ´e en

ex ´ecutant l’impl ´ementation I, alors I n’est pas conforme `a la sp ´ecification T .

D ´emonstration. Soit ρ= δ0a0δ1a1δ2...δn−1an−1δnan ∈ RT (Σ ∪ Γ+−∪ {othw}) une trace d’une

ex ´ecution du chemin π. lT

n est la localit ´e symbolique courante apr `es l’ex ´ecution de la trace

δ0a0δ1a1δ2...δn−1an−1δnet gnest la grande partition calcul ´ee. Atteindre f ail est d ˆu `a un des

trois cas qui sont expliqu ´es dans la Sec. 6.6 sauf que les notations usucc, dsucc et∆a(lT, u)

sont d ´efinies dans ce chapitre pour un ensemble des localit ´es symboliques 

Donc, pour chaque non conformit ´e d ´etect ´ee par un cas de test, il y a une non-conformit ´e entre l’impl ´ementation et la sp ´ecification.

7.4/

E

XPERIMENTATION

´

Nous pr ´esentons dans cette section une m ´ethode pour ´evaluer les capacit ´es de notre m ´ethode `a d ´etecter des impl ´ementations non-conformes. Pour cela, nous appliquons une approche de mutation qui proc `ede par l’obtention d’un mod `ele d’une impl ´ementation I en appliquant un op ´erateur de mutation `a une sp ´ecification donn ´ee T . Ensuite, nous

essayons de d ´etecter si l’impl ´ementation I est conforme ou non `a T en calculant le pro- duit synchronis ´e de I et des cas de tests engendr ´es `a partir de T . Nous ´evaluons le nombre de mutants non-conformes d ´etect ´es par notre m ´ethode. Le rapport entre le nom- bre de mutants non-conformes d ´etect ´es et le nombre de mutants non conformes ´evalue l’efficacit ´e de notre m ´ethode de g ´en ´eration de tests.

Dans la partie 7.4.1, nous d ´efinissons des op ´erateurs de mutation permettant de g ´en ´erer des mutants `a partir d’une sp ´ecification donn ´ee. Nous d ´efinissons le produit synchronis ´e d’un cas de test et d’un mutant dans la partie 7.4.2. Ensuite, nous ´evaluons les capacit ´es de notre m ´ethode `a d ´etecter la non conformit ´e dans la partie 7.4.3.

7.4.1/ OPERATEURS DE MUTATION D´ ’UNTPAIO

Soit T = hL, l0, Σin∪Σout∪ {τ}, Γ, X, ∆, Fi un TPAIO, les mutants sont d´efinis en appliquant

un des op ´erateurs suivants :

Changer action : cet op ´erateur change une seule transition de ∆ par remplace-

ment de son label par un autre. Le changement est op ´er ´e soit sur une action de sortie, soit sur une action de la pile. Le mutant obtenu est M = (L, l0, Σin∪Σout∪

{τ}, Γ, X, ∆ \ {t} ∪ {tM}, F), sachant que t = (l, a, g, d, X0, l0) ∈ ∆, tM = (l, b, g, d, X0, l0),

b ∈Σout∪Γ+− et a , b.

Changer garde : cet op ´erateur change une seule transition de T par remplace-

ment d’un op ´erateur relationnel dans sa garde. Le mutant obtenu est M =

(L, l0, Σin ∪Σout ∪ {τ}, Γ, X, ∆ \ {t} ∪ {tM}, F), sachant que t = (l, a, g, d, X0, l0) ∈ ∆,

tM= (l, a, gm, d, X0, l0) o `u a ∈Σout∪Γ+−, g= Vi xi]i ni∧ x] n , gm= Vi xi ]ini ∧ x]m

n, ], ]i, ]m∈ {<, ≤, >, ≥, =} et ]m, ].

Nier garde : cet op ´erateur change une seule transition de T par remplacement de

sa garde par sa n ´egation. Le mutant obtenu est M = (L, l0, Σin∪Σout ∪ {τ}, Γ, X, ∆ \

{t} ∪ {tM}, F), o`u t = (l, a, g, d, X0, l0) ∈∆, tM = (l, a, ¬g, d, X0, l0) et a ∈Σout∪Γ+−.

Changer source : cet op ´erateur change seulement une transition avec une ac-

tion de sortie ou de la pile de T par remplacement de sa localit ´e source par une autre. Le mutant obtenu est M = (L, l0, Σin ∪Σout ∪ {τ}, Γ, X, ∆ \ {t} ∪ {tM}, F), o`u

t= (l, a, g, d, X0, l0) ∈∆, tM = (lm, a, g, d, X0, l0), l , lmet a ∈Σout∪Γ+−.

Changer cible : cet op ´erateur change une seule transition de∆ par remplacement

de sa localit ´e cible par une autre. Le mutant obtenu est M = (L, l0, Σin ∪Σout ∪

{τ}, Γ, X, ∆ \ {t} ∪ {tM}, F), sachant que t = (l, a, g, d, X0, l0) ∈∆, tM= (l, a, g, d, X0, l0m) et

l0, l0m.

Changer deadline : cet op ´erateur change une seule transition avec une action

de sortie ou de pile de ∆ par remplacement de sa deadline par une autre. Le mutant obtenu est M = (L, l0, Σin ∪Σout ∪ {τ}, Γ, X, ∆ \ {t} ∪ {tM}, F), sachant que

t = (l, a, g, d, X0, l0) ∈ ∆, tM = (l, a, g, d0, X0, l0), d0 ∈ {lazy, delayable, eager}, d , d0 et

7.4.2/ PRODUIT SYNCHRONISE D´ ’UNE IMPLEMENTATION´ I ET D’UN CAS DE TEST

Une impl ´ementation I n’est pas conforme `a une sp ´ecification si elle ex ´ecute un chemin d’un cas de test qui atteint f ail. Pour chaque cas de test tc de T C, la non conformit ´e d’une impl ´ementation I avec une sp ´ecification T peut ˆetre d ´etect ´ee par le calcul du pro- duit synchronis ´e de I et du cas de test tc. Le produit synchronis ´e d ´efinit l’intersection des langages de tc et de I. Soit L(tc(T )) l’ensemble des ex ´ecutions de tc(T ) atteignant le ver- dict pass ou f ail, L(I) l’ensemble des ex ´ecutions de I. Alors, l’intersection L(tc(T ))T L(I) d ´efinit l’ensemble des ex ´ecutions communes entre tc et I. Si l’une des ex ´ecutions atteint le verdict f ail, alors l’impl ´ementation I n’est pas conforme `a sa sp ´ecification T . Le mod `ele d’impl ´ementation I est d ´efini dans la Def. 32.

D ´efinition 32 : Mod `ele d’impl ´ementation

Soit TM = hLM, lM0, ΣMout ∪ ΣinM, Γ, {z}, ∆M, FMi un STPTIO d’un TPAIO M = hL, l0, Σin ∪ Σout ∪ {τ}, Γ, X, ∆, Fi. Une impl´ementation mod´elis´ee par M est

le TPAIO I = hLM \ { f ail}, lM 0 , Σin ∪ Σout ∪ {time}, Γ, {z}, ∆ I, FMi sachant que ∆I = (∆M \ M → f ail) ∪ ∆ I time o `u ∆ M → f ail = {(l

M, act, g, lazy, {z}, f ail) ∈ ∆M}

et ∆I

time = {(l

M, !time, ¬g, lazy, {z}, lM) | (lM, ?time, g, lazy, {z}, f ail) ∈ ∆M} ∪

{(lM, !time, true, lazy, {z}, lM) | ∃g.(lM, ?time, g, lazy, {z}, f ail) ∈ ∆M}.

Une transition (ltc, ?time, g, {y}, fail) dans tc mod´elise une violation de l’ACV lorsque la val-

uation d’horloges satisfait la garde g. Mais, si on suppose qu’un TPAIO M = hL, l0, Σin∪

Σout ∪ {τ}, Γ, X, ∆, Fi est un mutant d’une sp´ecification, il ne poss`ede pas de transition

(ltc, !time, g, {y}, fail) ´etiquet´ee par !time pouvant se synchroniser avec un cas de test.

Autrement dit, le temps pourrait s’ ´ecouler ind ´efiniment dans une localit ´e l de M sans ˆetre d ´etect ´e, bien que, ce ne soit pas autoris ´e dans tc `a cause des transitions avec deadlines eager ou delayable qui quittent l. Pour rem ´edier `a cette situation, nous proposons dans la Def. 32 de calculer une impl ´ementation `a partir d’un mutant dans le but de mod ´eliser une ACV sp ´ecifiant comment le temps peut s’ ´ecouler dans n’importe quelle localit ´e. Soit M = hL, l0, Σin ∪Σout ∪ {τ}, Γ, X, ∆, Fi un mutant et TM = hLM, l0M, ΣoutM ∪Σ

M

in, Γ, {z}, ∆ M, FMi

son STPTIO. L’impl ´ementation I de M est un TPAIO o `u LM \ { f ail} est son ensemble

de localit ´es, lM

0 est sa localit ´e initiale,Σout est ses actions de sorties,Σin est ses actions

d’entr ´ees ,Γ est son alphabet de pile, z est une nouvelle horloge (z < X) et ses transitions ∆M sont les transitions deM l’exclusion des transitions de M qui atteignent la localit ´e

f ail et l’inclusion de transitions r ´eflexives ´etiquet ´ees par !time qui mod ´elisent la condi- tion d’ ´ecoulement du temps dans chaque localit ´e. Une transition (lM, ?time, g, lazy, {y}, fail) dans ∆M signifie que le temps ne peut pas s’ ´ecouler dans lM si la garde g est satisfi-

able. Le temps ne peut s’ ´ecouler dans lM que si ¬g la n ´egation de la garde est satis-

fiable. La condition ¬g repr ´esente la condition d’ ´ecoulement de temps dans la localit ´e symbolique lM. Donc, si la transition (lM, ?time, g, lazy, {z}, fail) est ajout´ee `a ∆M, alors, la

transition (lM, !time, ¬g, lazy, {z}, lM) est ajout ´ee `a I. Mais, s’il n’existe aucune transition

´etiquet ´ee avec time qui part de la localit ´e initiale lM dans M, cela signifie que le temps

peut s’ ´ecouler ind ´efiniment dans lM, alors, la transition (lM, !time, true, lazy, {z}, lM) est dans

∆I.

Exemple 7.4.1. La Fig. 7.3.(b) pr ´esente le STPTIO d’un exemple d’un mutant pr ´esent ´e

dans la Fig. 7.3.(a) o `u z est une nouvelle horloge et v0, .., vnsont des valuations d’horloges.

La Fig. 7.3.(c) pr ´esente l’impl ´ementation du mutant pr ´esent ´e dans la Fig. 7.3.(a). Par exemple, le temps ne peut pas s’ ´ecouler au del `a de 3 unit ´es de temps dans la localit ´e l1

du mutant. C’est pourquoi nous trouvons la transition ({(l1, v1, ⊥)}, ?time, z > 3, lazy, {z}, f ail)

dans le STPTIO et ({(l1, v1, ⊥)}, !time, z 6 3, lazy, {z}, {(l1, v1, ⊥)}) dans l’impl´ementation.

(a) l0 !A, x 6 2, lazy, {x} l1 l2 l3 l4

a+, x 6 3, delayable, {x} !B, 1 6 x 6 2, lazy{x} a−, x = 1, eager, {x}

{(l0, v0, ⊥)} {(l1, v1, ⊥)} (l2, v2, [a])} (l3, v3, [a])} (l4, v4, ⊥)} (b) ?A, z 6 2, lazy, {z} a+, z 6 3, lazy, {z} ?B, 1 6 z 6 2, lazy, {z} a−, z = 1, lazy, {z} f ail ?B | a +|?othw, z> 0, lazy, {z} ?A, z > 2, lazy, {z}

f ail ?A |?B |?othw, z> 0, lazy, {z} a+, z > 3, lazy, {z} ?time, z > 3, lazy, {z} f ail ?A | a +| a− |?othw, z> 0, lazy, {z} ?B, z < 1 ∨ z > 2, lazy, {z} f ail ?A |?B | a +|?othw, z> 0, lazy, {z} a−, z > 1, lazy, {z} ?time, z > 1, lazy, {z} f ail ?A |?B | a +|?othw, z> 0, lazy, {z} {(l0, v0, ⊥)} {(l1, v1, ⊥)} (l2, v2, [a])} (l3, v3, [a])} (l4, v4, ⊥)} (c) !A, z 6 2, lazy, {z} a+, z 6 3, lazy, {z} !B, 1 6 z 6 2, lazy, {z} a−, z = 1, lazy, {z}

!time, true, lazy

!time, z 6 3, lazy

!time, true, lazy

!time, z 6 1, lazy

!time, true, lazy

FIGURE 7.3 – ((b). le STPTIO et (c). l’impl ´ementation du TPAIO present ´e dans la

Fig. 7.3.(a)

Soit T = hL, l0, Σin ∪ Σout ∪ {τ}, ΓI, XI, ∆I, FIi une sp ´ecification, I = hLI, lI0, ΣIin ∪ ΣoutI ∪

{τ}, ΓI, XI, ∆I, FIi une impl ´ementation et tc = hLtc, ltc 0, Σ

tc in ∪Σ

tc

out, Γtc, Xtc, ∆tc, Ftciun cas de

test de T compatible avec I. On note S P= I k tc le produit synchronis´e de I et tc. Le pro- duit synchronis ´e synchronise `a la fois le temps et les actions communes de pile, d’entr ´ee et de sortie. Ainsi, il synchronise les actions communes deΣI→tc∪Σtc→I∪ (Γtc+−∩ΓI+−).

Il est inspir ´e de la composition parall `ele de deux TAIO qui est d ´efinie dans la Def. 3. Il tient compte seulement des r `egles qui synchronisent les actions communes pour calculer les chemins en commun entre l’impl ´ementation et le cas de test. On n’a pas besoin des transitions o `u l’impl ´ementation ou le cas de test ´evoluent ind ´ependamment. Donc, une transition est ajout ´ee dans le produit synchronis ´e pour chacune des deux possibilit ´es suivantes :

(i). les transitions ´etiquet ´ees avec othw dans tc se synchronisent avec les transitions d’une impl ´ementation ´etiquet ´ees avec une action qui est une action de sortie ou une action de la pile dans I et qui n’est pas une action d’entr ´ee ou une action de la pile dans tc.

action commune d’entr ´ee ou de sortie (ΣI→tc∪Σtc→I) ou une action commune de la

pile (Γtc+−ΓI+−).

Nous d ´efinissons le produit synchronis ´e d’une impl ´ementation I et d’un cas de test tc dans la Def. 33.

D ´efinition 33 : Produit synchronis ´e d’une impl ´ementation I et d’un cas de test tc Soit I = hLI, lI 0, Σ I in∪Σ I

out∪ {τ}, ΓI, XI, ∆I, FIiune impl ´ementation o `uΣtc→I ⊆ ΣIin et

ΣI→tc ⊆ ΣIout, et tc = hL tc, ltc 0, Σ tc in∪Σ tc out, Γ

tc, Xtc, ∆tc, Ftciun cas de test compatible

avec I o `uΣI→tc ⊆ Σtcin etΣtc→I ⊆ Σtcout, le produit synchronis ´e I k tc est un TPAIO

hLI× Ltc, (l0I, ltc0),ΣIin∪ΣoutI , ΓI∪Γtc, XI∪ Xtc, ∆, FI× Ftcio `u∆ est la relation d´efinie ainsi :

(i). ((lI, ltc), act, gI∧gtc, lazy, XI∪{y}, (lI0, f ail)) ∈ ∆ si (lI, act, gI, lazy, XI, lI0) ∈I

et (ltc, othw, gtc, {y}, lazy, f ail) ∈ ∆tc et act ∈ (ΣI

out\Σtcin) ou act ∈ (Γ

I+−\Γtc+−),

(ii). ((lI, ltc), act, gI∧ gtc, lazy, XI∪ {y}, (lI, ltc0

)) ∈∆ si (lI, act, gI, lazy, XI, lI0) ∈∆I et (ltc, act, gtc, {y}, lazy, ltc0) ∈∆tcet act ∈ΣI−→tc∪Σtc−→I∪ (Γtc+−∩ΓI+−).

L’impl ´ementation I n’est pas conforme `a la sp ´ecification T si une localit ´e (lI, f ail) est

atteignable dans l’un des produits synchronis ´es S P de f= I k tc o`u lI ∈ LI pour chaque cas

de test tc de l’ensemble de cas de test T C.

7.4.3/ R ´ESULTATS EXPERIMENTAUX´

Nous avons d ´evelopp ´e un prototype pour g ´en ´erer des cas de tests `a partir d’un TPAIO non d ´eterministe. Il est d ´evelopp ´e en java. Nous avons aussi impl ´ement ´e les op ´erateurs de mutation de TPAIO qui sont pr ´esent ´es dans la Sec. 7.4.1 afin de g ´en ´erer des impl ´ementations par mutation et d ´etecter les mutants non conformes.

L’exp ´erimentation a ´et ´e r ´ealis ´ee sur l’exemple du TPAIO de la Fig. 7.4 qui mod ´elise un syst `eme de d ´etection d’action de n clics (n > 1). Ce TPAIO compte le nombre de clics qui ont eu lieu dans une unit ´e de temps apr `es le premier clic en utilisant une pile. Il est d ´ecrit dans la section 4.1.

Nous avons obtenu 183 mutants en appliquant les sept op ´erateurs de mutation pr ´esent ´es dans la Sec. 7.4.1. Les r ´esultats de l’ex ´ecution des tests g ´en ´er ´es `a partir du TPAIO sont pr ´esent ´es dans le tableau 7.1. La premi `ere colonne indique l’op ´erateur de muta- tion appliqu ´e. La deuxi `eme colonne indique le nombre de mutants obtenus par l’applica- tion de l’op ´erateur de mutation. La troisi `eme colonne indique le nombre de mutants non conformes `a la sp ´ecification pour chaque op ´erateur de mutation. La quatri `eme colonne donne le nombre de mutants non-conformes et non d ´etect ´es par notre m ´ethode, alors que la cinqui `eme colonne indique le nombre de mutants tu ´es, dont une non-conformit ´e est prononc ´ee en appliquant notre m ´ethode.

l0 l1 l2

l3

l4

l5 l6

?clic, lazy, {x} clic+1, eager clic−1, x = 1, eager, {x} ?clic, x < 1, lazy clic+n, eager clic−n, x = 1, eager ?clic, x < 1, lazy clic+n, eager clic−1, 1 6 x 6 2, delayable, {x} clic−n, 1 6 x 6 2, delayable