• Aucun résultat trouvé

Deux STPTIO (b) et (c) de TPAIO (a) (sans les localit ´es vers f ail ) (c) est

plus pr ´ecis que (b)

6.6.3/ COUVERTURE DES TESTS

Dans la Sec. 6.3, on a pr ´esent ´e une m ´ethode de calcul d’un RA `a partir d’un STPTIO donn ´e. Notre algorithme qui calcule ce RA a pour crit `ere d’arr ˆet la couverture de toutes les transitions du STPTIO. Il ajoute une nouvelle π−transition (lT, π, lT0) si et seulement si son chemin π couvre au moins une nouvelle transition entre les localit ´es symboliques calcul ´ees lTet lT0par rapport aux autres transitions d ´ej `a calcul ´ees. Les chemins de toutes

les π−transitions qui partent d’une localit ´e initiale symbolique pour atteindre une localit ´e finale du STPTIO sont pris comme cas de test. Mais, on ne peut pas affirmer que tous les cas de tests g ´en ´er ´es sont concr ´etisables. Donc, il n’est pas garanti que tous les cas de tests g ´en ´er ´es concrets couvrent toutes les transitions du STPTIO. Par contre, si tous les cas de tests g ´en ´er ´es sont concr ´etisables, alors, toutes les localit ´es et toutes les transitions du TPAIO sont couvertes. C’est le cas de notre exemple de la Fig. 6.3.

6.7/

C

ONCLUSION

On a pr ´esent ´e dans ce chapitre une m ´ethode de g ´en ´eration de tests `a partir d’un programme r ´ecursif temporis ´e qui est mod ´elis ´e par un automate `a pile tempo- ris ´e d ´eterministe avec sorties seulement. La m ´ethode consiste `a d ´efinir un testeur d ´eterministe STPTIO d’un TPAIO donn ´e en adaptant la m ´ethode de d ´eterminisation de Krichen et Tripakis au cas des TPAIO pour ajouter le verdict f ail et enlever les localit ´es symboliques non atteignables `a cause de contraintes temporelles. Puis, elle calcule un automate d’atteignabilit ´e qui est un automate fini avec des π-transitions prenant en compte les contraintes de la pile o `u π est un chemin du STPTIO. Enfin, la m ´ethode g ´en `ere des cas de tests couvrant les localit ´es et les transitions atteignables du TPAIO.

Le mod `ele utilis ´e dans ce chapitre est un TPAIO d ´eterministe dont toutes les dead- lines sont delayable. On propose une g ´en ´eralisation de cette m ´ethode `a des TPAIO non d ´eterministes avec un choix libre des deadlines dans le chapitre suivant.

TEST DE CONFORMITE´

A PARTIR D`

’UN

TPAIO

AVEC DEADLINES

Sommaire

7.1 Construction d’un STPTIO `a partir d’un TPAIO . . . 110

7.2 G ´en ´eration d’arbres de test . . . 114 7.3 Correction de la m ´ethode . . . 115 7.4 Exp ´erimentation . . . 115 7.5 Incompl ´etude . . . 121 7.6 Conclusion . . . 123

Dans le chapitre pr ´ec ´edent, nous avons propos ´e une m ´ethode de g ´en ´eration de tests `a partir d’un automate `a pile temporis ´e d ´eterministe avec sorties seulement et avec des deadlines delayable seulement. On propose dans ce chapitre une m ´ethode pour un mod `ele qui est un TPAIO non d ´eterministe et avec deadlines quelconques. Il pr ´esente trois caract ´eristiques diff ´erentes par rapport au mod `ele utilis ´e dans le chapitre pr ´ec ´edent : TPAIO non d ´eterministe, prise en compte des deadlines lazy, delayable et eager et prise en compte des actions d’entr ´ee. Les deadlines imposent des conditions de progression au temps dans des localit ´es du TPAIO. On propose une m ´ethode de g ´en ´eration de tests qui tient compte non seulement d’une observation d’une action non sp ´ecifi ´ee ou non autoris ´ee, mais qui d ´etecte aussi les violations des ACV avec n’importe quelle deadline. Cette contribution a donn ´e lieu aux publications [MJMR15d][MJMR15c].

Nous g ´en ´eralisons le processus de g ´en ´eration de tests `a partir d’un TPAIO d ´eterministe avec sorties seulement et deadline delayable au cas des TPAIO non d ´eterministes et avec entr ´ees/sorties et trois types de deadlines. La premi `ere ´etape est la construction d’un STPTIO `a partir d’un TPAIO donn ´e pour r ´esoudre les contraintes d’horloges et les contraintes de pile, d ´eterminiser le TPAIO et aussi ajouter des transitions qui m `enent `a de nouvelles localit ´es f ail et inconc afin de d ´etecter la non conformit ´e. La deuxi `eme ´etape est le calcul d’un automate d’atteignabilit ´e RA `a partir du STPTIO obtenu afin de calculer un ou plusieurs chemins entre deux localit ´es symboliques. Cette ´etape a d ´ej `a ´et ´e pr ´esent ´ee dans la Sec. 6.3 du chapitre pr ´ec ´edent. La troisi `eme ´etape consiste `a g ´en ´erer des cas de tests en utilisant chaque π-transition du RA qui part d’une localit ´e symbolique initiale vers une localit ´e symbolique finale. Les cas de tests sont individualisables et individualis ´es pour v ´erifier si l’une des ex ´ecutions d’un mod `ele d’impl ´ementation conduit `a f ail. Dans le cadre d’une ex ´ecution des tests sur une v ´eritable impl ´ementation, il est pr ´ef ´erable de consid ´erer un arbre de tests afin de poursuivre l’observation le plus loin

possible, selon les sorties de l’impl ´ementation, pour limiter les verdicts inconclusifs. Nous ´evaluons la capacit ´e de notre m ´ethode `a d ´etecter des impl ´ementations non-conformes obtenues par une technique de mutation qui permet de modifier automatiquement un TPAIO donn ´e par l’application d’un op ´erateur de mutation. Nos r ´esultats exp ´erimentaux montrent que la grande majorit ´e des mutants non-conformes sont d ´etect ´es.

On applique le m ˆeme processus de g ´en ´eration de tests que celui pr ´esent ´e dans le chapitre pr ´ec ´edent. On pr ´esente seulement les modifications li ´ees aux deadlines sur les deux ´etapes modifi ´ees : construction du STPTIO et g ´en ´eration de tests. La premi `ere ´etape est la construction d’un STPTIO `a partir d’un TPAIO. Elle est pr ´esent ´ee dans la Sec. 7.1. La Sec. 7.2 pr ´esente la derni `ere ´etape qui est la g ´en ´eration de tests. La Sec. 7.3 discute de la correction de notre m ´ethode. Nous d ´efinissons des op ´erateurs de mutation et le produit synchronis ´e qui mod ´elise l’ex ´ecution d’un test sur un mutant utilis ´e comme mod `ele d’impl ´ementation dans la Sec. 7.4. Cette section pr ´esente aussi nos r ´esultats exp ´erimentaux. Enfin, nous concluons en Sec. 7.6.

7.1/

C

ONSTRUCTION D

UN

STPTIO `

A PARTIR D

UN

TPAIO

D ´efinition 29 : Testeur symbolique `a pile temporis ´e d ´eterministe STPTIO

Un STPTIO TT = hLT, lT0, ΣTout∪ΣTin, Γ, {y}, ∆T, FTid’un TPAIO T = hL, l0, Σout∪Σin∪

{τ}, Γ, X, ∆, Fi est un TPAIO `a horloge unique y, qui est diff´erente des horloges de X, o `u :

• lT0 est la localit ´e symbolique initiale,

• LT ⊆ 2(L×CC(X∪{y})×Γ∗)∪ { f ail, inconc} est un ensemble de localit´es symbol- iques,

• ΣTin= Σout∪ {othw} ∪ {time},

• ΣT

out = Σin,

• FT = {lT | ∃(l, v, p).((l, v, p) ∈ lT ∧ l ∈ F)} est un ensemble de localit ´es symboliques finales,

• ∆T ⊆ LT ×ΣT

out ∪Σin ∪Γ+−× Grd({y}) × {y} × LT est un ensemble fini de

transitions.

On propose d’adapter la m ´ethode de [KT09] d ´efinie pour les TAIO non d ´eterministes avec deadlines pour calculer un testeur `a partir d’un TPAIO non d ´eterministe avec deadlines. Le testeur calcul ´e est appel ´e STPTIO ( pour Symbolic Timed Pushdown Tester with Inputs and Outputs) qui est un observateur des impl ´ementations test ´ees. Il int `egre des localit ´es symboliques, des nouvelles localit ´es f ail et inconc et des transitions qui les atteignent `a partir d’une autre localit ´e symbolique. C’est un TPAIO avec une seule horloge qui se remet `a z ´ero `a chaque franchissement d’une action, et dont toutes les transitions ont la deadline lazy. N’ayant qu’une seule horloge, toutes les gardes de ce testeur sont satisfiables. Afin de d ´etecter la non-conformit ´e entre une impl ´ementation et un TPAIO, les actions d’entr ´ees du STPTIO sont les actions de sorties (Σout) du

TPAIO, les actions de sorties du STPTIO sont les actions d’entr ´ees (Σin) du TPAIO,

et les actions de la pile sont celles de la pile (Γ) du TPAIO. Nous notons othw un nom d’action quelconque diff ´erent de chaque nom de Σout, de Γ+− et de τ et time une action

couples (localit ´e du TPAIO, contraintes). Les contraintes portent sur les horloges du TPAIO et sur la nouvelle horloge y du STPTIO.

Un STPTIO est formellement d ´efini dans la Def. 29.

Les localit ´es sont dites symboliques car elles repr ´esentent un ensemble de localit ´es pour l’ensemble des valeurs d’horloges qui satisfont la contrainte. La localit ´e f ail est atteignable selon l’une de ces trois possibilit ´es :

• observation d’une action de la pile (Γ+−) ou de sortie (Σout) non sp ´ecifi ´ee ou arrivant

plus t ˆot ou plus tard que sp ´ecifi ´ee,

• observation d’un instant ne satisfaisant pas l’ACV dans l’ ´etat courant,

• observation d’une action non autoris ´ee dans T , mais qui peut ˆetre ex ´ecut ´ee par l’impl ´ementation.

Le syst `eme est parfois autoris ´e `a laisser le temps s’ ´ecouler ind ´efiniment, par exemple dans les localit ´es o `u les deadlines de toutes les transitions sortantes sont lazy. On propose dans ce cas d’ajouter des transitions qui m `enent `a inconc afin d’ ´eviter l’attente infinie et le blocage de l’observation dans une localit ´e. La localit ´e inconc est atteignable en cas de non observation d’une action de sortie ou de la pile au cours d’un d ´elai arbi- trairement fix ´e pour l’arriv ´ee des actions de la pile et de sortie dans la localit ´e courante. Ce cas de figure est inconclusif car ´etant dans une localit ´e o `u le temps peut s’ ´ecouler ind ´efiniment, pass ´e le d ´elai o `u des actions peuvent se produire, s’il n’est pas arriv ´e d’action, on ne sait pas s’il n’en arrivera jamais (cas pass) o `u s’il y en arrivera une plus tard (cas f ail). Donc, un d ´elai maximum d’observation de l’impl ´ementation est choisi arbi- trairement, mais, il doit ˆetre sup ´erieur au plus grand d ´elai d’arriv ´ee d’une action autoris ´ee.

Avant de pr ´esenter les d ´efinitions des transitions d’un STPTIO `a partir d’un TPAIO, on a besoin de red ´efinir les notations suivantes pour le cas des STPTIO :

• usucc(lT) = {lT 0 | ∃(l, v, p).((l, v, p) ∈ lT ∧ ∃ρ.(ρ ∈ RT ({τ}) ∧ (l, v, p) →ρ (l0, v0, p) ∧ (l0, v0, p) ∈ lT 0))}. C’est l’ensemble des localit ´es symboliques atteignables `a partir de la localit ´e symbolique lT par une s ´equence d’actions non observables.

• dsucc(lT, a) = {lT 0 | ∃(l, v, p).((l, v, p) ∈ lT ∧ (l, v, p) →a (l0, v0, p0) ∧ (l0, v0, p0) ∈ lT 0)}. C’est l’ensemble de localit ´es symboliques atteignables `a partir de lT par l’action a.

On a besoin aussi de d ´efinir la notation suivante :

• tsucc(lT, u) = {lT 0| ∃(l, v, p).((l, v, p) ∈ lT∧ (l, v, p) →u (l, v+ u, p) ∧ (l, v + u, p) ∈ lT 0)} est l’ensemble de localit ´es symboliques atteignables `a partir de lT par l’ ´ecoulement de

temps avec un intervalle u.

Formalisons maintenant la notion de transition du STPTIO dans la Def. 30.

La localit ´e symbolique initiale lX∪{y}0 est ´egale `a usucc(lT0) o `u toutes les horloges de T et l’horloge y sont initialis ´ees `a z ´ero. Le principe de calcul des localit ´es symboliques, des transitions entre localit ´es symboliques et des transitions du STPTIO et de r ´ep ´eter les ´etapes suivantes : s ´election d’une localit ´e qui n’est pas encore ajout ´ee dans LT et puis

application de l’une de ces possibilit ´es pour ajouter des nouvelles transitions `a∆T :

1. La transition (lT, ?othw, y > 0, {y}, f ail) est ajout´ee `a ∆T.

2. La transition (lT, ?time, y > K, {y}, inconc) est ajout´ee `a ∆T dans le cas o `u le temps

peut s’ ´ecouler ind ´efiniment dans la localit ´e symbolique lT et o `u K est la dur ´ee max- imale d’observation qui est choisie arbitrairement par l’ing ´enieur de test comme

´etant sup ´erieure `a toutes les valeurs qui apparaissent dans les gardes de son TPAIO.

3. La transition (lT, ?time, u, {y}, f ail) est ajout´ee dans ∆T dans le cas d’un d ´epassement

de temps dans la localit ´e de lT d ˆu `a la violation d’ACV si ∀(l, v, p) ∈ lT.(ACV

l(v,p,v+

u)= f alse), c’est `a dire que le temps ne peut pas s’´ecouler au del`a de l’intervalle de temps u dans chaque (l, v, p) ∈ lT

4. Pour chaque grande partition u calcul ´ee, on applique les pas suivants :

• actions d’entr ´ees : pour chaque action d’entr ´ee A ∈Σinsi usucc(dsucc(lT∩ u, A) ,

∅, alors la transition (lT, A, u, {y}, usucc(dsucc(lT∩ u, A))) est ajout´ee `a ∆T;

• actions de sorties ou de pile : pour chaque action a ∈Σout∪Γ+−, si usucc(dsucc(lT∩

u, a)) = ∅, alors la transition (lT, a, u, {y}, f ail) est ajout´ee `a ∆T. Sinon, la transition (lT, a, u, {y}, usucc(dsucc(lT ∩ u, a))) est ajout´ee `a ∆T.

D ´efinition 30 : Transitions du Testeur `a pile temporis ´e STPTIO

Soit K un d ´elai d’observation des impl ´ementations qui soit sup ´erieur au plus grand d ´elai de d ´eclenchement d’une action quelconque quand le temps peut s’ ´ecouler ind ´efiniment. Un STPTIO TT = hLT, lT

0, Σ T

out ∪ΣTin, Γ, {y}, ∆

T, FTi d’un

TPAIO T = hL, l0, Σout ∪Σin ∪ {τ}, Γ, X, ∆, Fi non d´eterministe est un TPAIO. Les

transitions de∆T sont d ´efinies comme suit :

(I) (lT, ?othw, y > 0, {y}, f ail) ∈ ∆T.

(II) (lT, ?time, y > K, lazy, {y}, inconc) ∈ ∆T si tsucc(lT, y > 0) , ∅.

(III) (lT, ?time, u, {y}, f ail) ∈ ∆T si tsucc(lT, u) = ∅.

(IV) (lT, act, u, {y}, usucc(dsucc(lT∩ u, act))) ∈ ∆T si usucc(dsucc(lT∩ u, act)) , ∅ et

act ∈Σin∪Σout∪Γ+−,

(V) (lT, act, u, {y}, f ail) ∈ ∆T si usucc(dsucc(lT∩ u, act)) = ∅ et act ∈ Σ

out∪Γ+−.

L’application r ´ep ´etitive du cas (IV) de la Def. 30 peut produire un nombre infini de transi- tions et de localit ´es. On propose d’utiliser comme dans le chapitre pr ´ec ´edent une variable afin de limiter le nombre d’empilement possible. Les diff ´erences entre la m ´ethode de cal- cul du testeur dans le chapitre pr ´ec ´edent et dans ce chapitre sont :

• une localit ´e symbolique est un ensemble de triplets (l, v, p) au lieu d’un seul triplet au chapitre 6 o `u l est une localit ´e, v est une valuation d’horloges p le contenu de la pile.

• le testeur de ce chapitre peut avoir des transitions ´etiquet ´ees par une action de sortie, ce qui n’est pas le cas dans le chapitre 6 qui calcule un testeur avec des transitions ´etiquet ´ees par une action d’entr ´ee seulement ;

• le calcul de successeur de chaque localit ´e symbolique tient compte non seulement de la deadline delayable mais ´egalement des deadlines lazy et eager.

`

A partir du STPTIO engendr ´e par cette ´etape, un RA est calcul ´e comme au chapitre pr ´ec ´edent (voir Sec. 6.3)

Exemple 7.1.1. La Fig. 7.1 pr ´esente un exemple d’un TPAIO non d ´eterministe T o `u

l0 l1 l2 l3 ?A, x 6 2, lazy, {x} a+, x 6 3, delayable, {x} a−, x 6 3, delayable, {x} a−, 1 6 x 6 4, lazy, {x}