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 TESTD ´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 de∆M 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