Moez Krichen
Laboratoire ReDCAD, Université de Sfax, Tunisie
Résumé. Dans ce travail, nous nous intéressons aux tests basés sur des
modèles pour les systèmes en temps réel. L’approche proposée est basée sur l’utilisation du modèle des automates sur domaines temporels (ATD) qui correspond à une extension du modèle classique des automates tem-porisés. En effet, nous proposons une technique de détermination utilisée pour générer des cas de test. Plusieurs extensions possibles du présent travail sont également proposées.
1
Introduction
En général, les tests basés sur des modèles (TBM) (24; 10; 11; 23; 9; 15; 12) consistent à décrire le com-portement du SUT (système testé) en utilisant un forma-lisme adéquat particulier et à générer automatiquement des scénarios de test à partir de la description considérée par rapport à certains critères de couverture en adoptant certaines méthodes de sélec-tion. L’étape suivante consiste à exécuter les études de cas obtenues sur le SUT et à recueillir les verdicts correspondants afin de vérifier si l’implémentation est conforme ou non à sa spécification.
Cet article (17) étend certaines de nos contributions précédentes (14; 13) sur le TBM pour les systèmes en temps réel. Ces travaux ont été principalement construits sur le modèle classique de l’automate temporisé (25; 4; 2; 1; 3). Notre nouvelle approche propo-sée est principalement inspirée de (8; 7). Nous adoptons une nouvelle variante d’au-tomates temporisés appelés automates sur domaines temporisés (ADT). Cette nouvelle variante permet de modéliser une classe beaucoup plus large de systèmes temporisés et elle est équipée d’une technique de détermination qui peut être utilisée pour la génération de tests. Ensuite, dans la section 2, nous proposons quelques dé-finitions liées au formalisme proposé. Dans la section 3, nous donnons des détails sur la procédure de détermination de l’ADT. La section 4 présente le cadre de test adopté. Enfin, la section 5 propose quelques orientations pour les travaux futurs.
2
Définitions
2.1
Domaines Temporels et Mises-à-Jours
Soit N (respectivement R≥ 0) l’ensemble des nombres naturels (respectivement l’en-semble des nombres réels non négatifs). Les Domaines temporels sont introduits pour représenter la progression des entités. Un domaine temporel Domaine est composé d’un ensemble de valeurs notées Valeurs et d’une fonction de transition temporelle notée par codant la progression de ces valeurs lorsque le temps évolue.
Undomaine temporel est un tuple Domaine = hValeurs, i tel que : — Valeurs est l’ensemble des valeurs ;
— : Valeurs × R≥0→ Valeurs est la fonction de transition temporelle telle que
pour toute valeur ∈ Valeurs et tous temps, temps0∈ R≥0 nous avons
( (valeur, temps), temps0) = (valeur, temps + temps0).
Pour simplifier, nous écrirons valeurtemps valeur0 au lieu de (valeur, temps) =
valeur0. De plus, nous considérons le symbole particulier ⊥ qui est affecté à la ressource considérée dès qu’elle devienne inactive et n’évolue plus dans le temps (c’est-à-dire pour chaque t ∈ R≥0 nous avons ⊥
temps ⊥).
Pour les domaines temporels Domaine = hValeurs, Valeursi et Domaine0 =
hValeurs0
, Valeurs0i nous associons le produit
Domaine × Domaine0= hValeursProd, Prodi
tel que
ValeursProd = (Valeurs ∪ {⊥}) × (Valeurs0∪ {⊥})
et pour (valeur, valeur0) ∈ ValeursProd et temps ∈ R≥0 nous avons Prod (valeur, valeur0), temps =
Valeurs(valeur, temps), Valeurs0 (valeur0, temps).
Pour n ∈ N>1, nous définissons le domaine temporel Domainen par induction comme
Domaine1= Domaine
et
Domainen+1= Domaine × Domainen.
De plus, pour Domaine = hValeurs, Valeursi nous définissons le domaine
tempo-rel
P(Domaine) = hValeursP, Pi
tel que
ValeursP = P(Valeurs)
et
Considérons un domaine temporel Domaine = hValeurs, i et un alphabet ∆. Un
Ensemble de Mises à Jour pour Domaine and ∆ est un MAJ ⊆ ∆ × ValeursValeurs. Pour un ensemble de mise à jour MAJ and a symbol δ ∈ ∆, nous définissons l’ensemble
MAJδ = {y ∈ ValeursValeurs| (δ, y) ∈ MAJ }. Un élément de MAJδ est appelé δ-mise-à-jour.1
Soit Domaine et Domaine0 deux domaines temporels. De plus, considérons deux ensemble de mise à jour MAJ (pour Domaine et ∆) et MAJ0 (pour Domaine0 et ∆). Nous définissons ensuite l’ensemble de mise à jour MAJ × MAJ0 par rapport à Domaine × Domaine0 et ∆ tel que
MAJ × MAJ0= δ, (y, y0) | δ ∈ ∆ ∧ (y, y0) ∈ MAJ
δ× MAJ0δ . Pour n ∈ N>1, nous définissons l’ensemble de mise à jour MAJn pour Domainen et ∆ par induction comme
MAJ1= MAJ et
MAJn+1= MAJ × MAJn.
Nous définissons aussi l’ensemble de mise à jour P(MAJ ) par rapport à P(Domaine) et ∆ tel que
P(MAJ )
= δ, Y ∈ ∆ × P(Valeurs)P(Valeurs)|f orallV ⊆ Valeurs · Y(V )
= [
(y,valeur)∈MAJδ×V
{y(valeur)} .
2.2
Automates sur Domaines temporisés (ADT)
Considérons un domaine temporel Domaine = hValeurs, i et un ensemble de mise à jour MAJ pour Domaine par rapport à ∆. Un automate défini par rapport à Domaine et MAJ est un tuple A = hE, eini, valeurini, B, T i tel que :
— E est un ensemble fini d’états ; — eini∈ S est l’état initial ;
— valeurini∈ Valeurs est la valeur initiale ;
— B ⊆ S × Valeurs × MAJ × S est l’ensemble des bords ; — T ⊆ S est l’ensemble des états terminaux.
Pour l’automate sur des domaines temporisés (ADT) A sur Domaine and MAJ , nous considérons l’ensemble CA = E × Valeurs appelé l’ensemble des configurations
de l’automate A. L’ADT A produit un em système de transition étiqueté temporisé (STET)
LA= hCA, ciniA , →Ai
tel que ciniA est la configuration initiale de A tel que
ciniA = (eini, valeurini)
et →A= ( t →A)t∈R≥0] ( δ,y −→A)(δ,y)∈MAJ tel que
— (e, valeur)→tA(e0, valeur0) si et seulement si e = e0 et valeur
t
valeur0; — (e, valeur) −→δ,yA (e0, valeur0) si et seulement si (e, valeur, (δ, y), e0) ∈ B et
valeur0= y(valeur).
De même, l’ADT A définit un système de transition étiqueté temporisé
obser-vable(STETO) OLA= hCA, ciniA , −→→Ai où − →→A= ( t − →→A)t∈R≥0] ( δ − →→A)δ∈∆ tel que
— (e, valeur)−→→t A(e0, valeur0) si et seulement si (e, valeur)
t
→A(e0, valeur0) ;
— (e, valeur)−→δ→A(e0, valeur0) si et seulement si
∃y ∈ ValeursValeurs: (e, valeur)−→δ,yA(e0, valeur0).
Le premier type de transitions est appelé transitions temporisées et le deuxième type transitions discrètes. Pour (s, valeur) ∈ CA and µ ∈ R≥0 ] ∆, nous écrivons
(s, valeur)−→µ→A s’il existe (e0, valeur0) ∈ CAtel que (e, valeur)
µ
−→→A(e0, valeur0).
2.3
ADT Finement Représentable
Un ensemble de gardes est un ensemble G ⊆ P(Valeurs). Pour δ ∈ ∆, une mise à jour protégée par G pour δ est un couple (G, Γ) ∈ G × P(MAJδ). Pour I ⊆ N, considérons ΨI = {(Gi, Γi) | i ∈ I} un ensemble de mises à jour protégées par G pour
δ. Considérez également A = hE, eini, valeurini, B, T i un automate sur Domaine et MAJ . Une paire d’états (e, e0) de A est dite compatible avec ΨI si les deux conditions suivantes sont réunies :
— ∀ i ∈ I. ∀ valeur ∈ Gi. ∀ y ∈ Γi: (e, valeur, (δ, y), e0) ∈ E ; — ∀ (e, valeur, (δ, y), e0) ∈ E. ∃ i ∈ I : valeur ∈ Gi∧ y ∈ Γi .
On dit que l’ADT A est finiment représentable en utilisant G si pour chaque paire d’états (e, e0) de A et pour chaque δ ∈ ∆, il existe un ensemble fini Ψ de G - des mises à jour protégées pour δ, telles que (e, e0) est compatible avec Ψ.
2.4
ADT Déterministe (ADTD)
Considérons l’ADT A = hE, eini, valeurini, B, T i par rapport à Domaine et MAJ . Soit (e, valeur) une configuration possible de A. Une trace temporisée de (e, valeur) est une séquence trt = (ei, valeuri)0≤i≤n telle que :
— (e0, valeur0) = (e, valeur) ;
— ∀1 ≤ i ≤ n. ∃mi ∈ R≥0] ∆ : (ei, valeuri)
mi
La trace temporisée trt est dite produite par le mot temporisé mt = (mi)1≤i≤n.
Dans ce cas, nous écrivons (s, valeur)−−→mt→A. La durée de mt est définie comme suit
Durée(mt) = X 1≤i≤n |mi| où |mi| = ( mi si mi∈ R≥0 0 autrement
c’est-à-dire Durée(mt) représente la quantité totale de temps consommée pendant l’exé-cution du mot temporisé mt. En général, pour un mot temporisé mt ∈ (R≥0]∆)∗,
l’en-semble T rTA((e, valeur), mt) représente l’ensemble des traces temporisées produites
par mt à partir de (s, valeur). L’ADT A est dit déterministe si pour tout mot tempo-risé mt ∈ (R≥0] ∆)∗ la cardinalité de T rTA((eini, valeurini), mt) est inférieur ou égal
à un. Pour un entier positif n, nous disons que le mot temporisé mt ∈ (R≥0] ∆)n est
accepté par l’ADT A s’il y a une trace temporisée trt = (ei, valeuri)0≤i≤n telle que
trt ∈ T rTA((eini, valeurini), mt) et en+1∈ T (c.à.d. en+1est un état terminal de A).
Dans ce cas, toutes les configurations (ei, valeuri) sont dites accessibles. L’ensemble des mots chronométrés acceptés par A est noté Lang(A) et l’ensemble des configurations accessibles est noté Access(A).
3
Détermination d’ADT non déterministes
Considérons l’ADT (éventuellement) non déterministe A = hE, eini, valeurini, B, T i par rapport à D et MAJ et soit ∆ l’alphabet correspondant à l’ensemble de mise à jour MAJ . Pour simplifier, nous supposons que
E = {e1, · · · , ep}
tels que p ∈ N>0 et eini = e1. Pour chaque état e ∈ E, nous d’enotons par indice(e)
l’indice de e. C’est-à-dire si e = ei alors indice(e) = i. Pour chaque 1 ≤ i ≤ p, on considère l’ensemble valeuri⊆ Valeurs qui correspond à l’ensemble des valeurs relieés à l’état ei. Pour V = (Vi)1≤i≤p∈ P(Valeurs)p nous considérons l’ensemble
EV= {e ∈ E | Vindice(e)6= ∅}
qui est le groupe d’états que le système peut occuper lorsque les valeurs des différents états sont données par V.
Pour δ ∈ ∆ et 1 ≤ i ≤ j ≤ p, nous associons l’ensemble
λi→jδ = {(valeur, y) ∈ Valeurs × MAJδ | (ei, valeur, (δ, y), ej) ∈ B}
qui correspond aux différentes manières permettant de passer de l’état ei à l’état ej. Nous définissons également
qui à son tour enregistre toutes les façons qui permettent pour atteindre l’état ej à partir de tout autre état de l’ADT A.
Pour la lettre considérée δ et chaque λi→jδ , nous associons la fonction successeur successeurδ,λi→j
δ
: Valeurs → P(Valeurs) de telle sorte que pour valeur ∈ Valeurs nous avons
successeurδ,λi→j δ
(valeur) = {y(valeur) | (valeur, y) ∈ λi→jδ }
qui recueille toutes les valeurs obtenues possibles de valeur après avoir exécuté les instructions dans λi→jδ .
De manière naturelle, nous étendons successeurδ,λi→j δ
aux éléments de P(Valeurs) et nous définissons la fonction
Successeurδ,λi→j δ
: P(Valeurs) → P(Valeurs) tel que pour V ⊆ Valeurs nous avons
Successeurδ,λi→j δ (V ) = [ valeur∈V successeurδ,λi→j δ (valeur)
qui cette fois recueille les valeurs possibles obtenues de tous les éléments dans V après avoir exécuté les instructions dans λi→jδ .
De plus on définit la fonction Successeurδ,λ→j
δ
: P(Valeurs)p→ P(Valeurs) telle que V = (Vi)1≤i≤p∈ P(Valeurs)p nous avons
Successeurδ,λ→j δ (V) = [ 1≤i≤p Successeurδ,λi→j δ (Vi)
qui agrège les éventuelles valeurs actualisées de V1, · · · , Vp en suivant respectivement les instructions dans δ1→j, · · · , δp→j.
De plus, nous définissons la fonction
Successeurδ,A: P(Valeurs)p→ P(Valeurs)p such that for V ∈ P(Valeurs)p we have
Successeurδ,A(V) = Successeurδ,λ→1
δ (V), · · · , Successeurδ,λ
→p
δ (V)
Lemme : Soit V = (Vi)1≤i≤p∈ P(Valeurs)pet V0= (Vi0)1≤i≤p= Successeurδ,A(V).
Puis pour chaque e0 ∈ E and v0∈ V :
valeur0 ∈ Vindice(e0 0)
⇔
∃(e, valeur, (δ, y), e0) ∈ B s.t. valeur ∈ Vindice(e)et valeur0= y(valeur).
Enfin, nous définissons l’ensemble de mise à jour Pp(MAJ ) par rapport à P(D)p et ∆ tel que
Pp(MAJ ) = {(δ, Successeurδ,A) | δ ∈ ∆}.2
Nous avons maintenant tous les ingrédients pour définir un ADT déterministe (ADTD)
Adet = hEdet, edetini, valeurinidet, Bdet, Tdeti
par rapport à P(D)p et Pp(MAJ ) qui est équivalent à l’ADTND A considéré. Le DADT Adet proposé est défini comme suit :
— Edet= P(E) ; — edet
ini= {eini} ; — valeurdet
ini = {valeurini}, ∅, · · · , ∅ ∈ P(V)p;
— Bdet est l’ensemble des transitions (EV, V, (δ, Successeurδ,A), E0) tel que V ∈
P(Valeurs)p et E0= E
V0 avec V0= Successeurδ,A(V) ;
— Tdet = {E0⊆ E | E0∩ T 6= ∅}.
4
Travaux Futurs
Le travail proposé dans cet article est à ses débuts. À l’avenir, nous devons travailler sur de nombreux aspects :
— Premièrement, nous devons étendre le cadre présenté au cas où la spécification du SUT est donnée comme un produit d’ADT et pas simplement un ADT. De cette façon, nous pouvons traiter des systèmes distribués et multi-composants. Dans ce cas, nous pouvons également combiner les tests de conformité et les tests de charge (22; 20; 19; 21)
— Deuxièmement, nous devons trouver un moyen qui garantisse que les tests tem-porisés générés sont représentables de manière finie afin que nous puissions les stocker et les exécuter plus tard. Pour cela, nous devons utiliser des techniques d’approximation basées sur des techniques de théorie des jeux comme celles proposées dans (6).
— Troisièmement, nous devons utiliser certaines techniques de couverture, de sé-lection et de raffinement (16; 18; 5) qui permettent de réduire la taille des cas de test générés et de traiter efficacement le problème d’explosion d’état généra-lement rencontré lors du suivi d’approches basées sur un modèle.
Références
[1] Rajeev Alur. Timed automata. In International Conference on Computer Aided
Verification, pages 8–22. Springer, 1999.
[2] Rajeev Alur. Timed automata. In Verification of Digital and Hybrid Systems, pages 233–264. Springer, 2000.
[3] Rajeev Alur and David Dill. The theory of timed automata. In J. W. de Bakker, C. Huizing, W. P. de Roever, and G. Rozenberg, editors, Real-Time : Theory in
Practice, pages 45–73, Berlin, Heidelberg, 1992. Springer Berlin Heidelberg.
[4] Rajeev Alur and Parthasarathy Madhusudan. Decision problems for timed auto-mata : A survey. In Formal Methods for the Design of Real-Time Systems, pages 1–24. Springer, 2004.
[5] Saddek Bensalem, Moez Krichen, Lotfi Majdoub, Riadh Robbana, and Stavros Tripakis. A simplified approach for testing real-time systems based on action refinement. In ISoLA, pages 191–202, 2007.
[6] Nathalie Bertrand, Amélie Stainer, Thierry Jéron, and Moez Krichen. A game approach to determinize timed automata. Formal Methods in System Design,
46(1) :42–80, 2015.
[7] Mikołaj Bojańczyk and Sławomir Lasota. A machine-independent characteriza-tion of timed languages. In Artur Czumaj, Kurt Mehlhorn, Andrew Pitts, and Roger Wattenhofer, editors, Automata, Languages, and Programming, pages 92– 103, Berlin, Heidelberg, 2012. Springer Berlin Heidelberg.
[8] Patricia Bouyer, Samy Jaziri, and Nicolas Markey. On the determinization of timed systems. In FORMATS, volume 10419 of Lecture Notes in Computer Science, pages 25–41. Springer, 2017.
[9] Manfred Broy, Bengt Jonsson, J-P Katoen, Martin Leucker, and Alexander Pret-schner. Model-based testing of reactive systems. In Volume 3472 of Springer
LNCS. Springer, 2005.
[10] Arilo C Dias Neto, Rajesh Subramanyan, Marlon Vieira, and Guilherme H Tra-vassos. A survey on model-based testing approaches : a systematic review. In
Proceedings of the 1st ACM international workshop on Empirical assessment of software engineering languages and technologies : held in conjunction with the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE) 2007, pages 31–36, 2007.
[11] Lars Frantzen, Jan Tretmans, and Tim AC Willemse. A symbolic framework for model-based testing. In Formal approaches to software testing and runtime
verification, pages 40–54. Springer, 2006.
[12] Moez Krichen. Model-Based Testing for Real-Time Systems. PhD thesis, PhD thesis, Universit Joseph Fourier (December 2007), 2007.
[13] Moez Krichen. A formal framework for conformance testing of distributed real-time systems. In OPODIS, volume 6490 of Lecture Notes in Computer Science, pages 139–142. Springer, 2010.
[14] Moez Krichen. A formal framework for black-box conformance testing of distri-buted real-time systems. International Journal Critical Computer Based Systems, 3(1/2) :26–43, January 2012.
[15] Moez Krichen. Contributions to Model-Based Testing of Dynamic and Distributed
Real-Time Systems. PhD thesis, École Nationale d’Ingénieurs de Sfax (Tunisie),
2018.
[16] Moez Krichen. Improving formal verification and testing techniques for internet of things and smart cities. Mobile Networks and Applications, pages 1–12, 2019. [17] Moez Krichen. Testing real-time systems using determinization techniques for
automata over timed domains. In International Colloquium on Theoretical Aspects
of Computing, pages 124–133. Springer, Cham, 2019.
[18] Mariam Lahami, Moez Krichen, Hajer Barhoumi, and Mohamed Jmaiel. Selective test generation approach for testing dynamic behavioral adaptations. In IFIP
In-ternational Conference on Testing Software and Systems, pages 224–239. Springer,
Cham, 2015.
[19] Afef Jmal Maâlej and Moez Krichen. Study on the limitations of ws-bpel compo-sitions under load conditions. The Computer Journal, 58(3) :385–402, 2015. [20] Afef Jmal Maâlej and Moez Krichen. A model based approach to combine load
and functional tests for service oriented architectures. In VECoS, pages 123–140, 2016.
[21] Afef Jmal Maâlej, Moez Krichen, and Mohamed Jmaïel. Conformance testing of ws-bpel compositions under various load conditions. In 2012 IEEE 36th Annual
Computer Software and Applications Conference, pages 371–371. IEEE, 2012.
[22] Afef Jmal Maâlej, Mariam Lahami, Moez Krichen, and Mohamed Jmaïel. Dis-tributed and resource-aware load testing of ws-bpel compositions. In ICEIS (2), pages 29–38, 2018.
[23] Alexander Pretschner. Model-based testing. In Proceedings. 27th International
Conference on Software Engineering, 2005. ICSE 2005., pages 722–723. IEEE,
2005.
[24] Jan Tretmans. Model based testing with labelled transition systems. In Formal
methods and testing, pages 1–38. Springer, 2008.
[25] Md Tawhid Bin Waez, Juergen Dingel, and Karen Rudie. A survey of timed automata for the development of real-time systems. Computer Science Review, 9 :1–26, 2013.