Abstract
Symbolic models for testing real-time systems that abstract both data and time have been investigated. The goal is to address the state space explosion problem that may occur during test case generation. In this context, testing is often investigated by abstracting the structure of the system under test and by observing traces of expected outputs. However, since real-time systems are usually composed of a number of communicating subsystems, the next challenge is to take into account how the composition of subsystems is specified, developed and possibly tested separately or as a whole system. This paper addresses this challenge by providing a sequential and a parallel operator for composing symbolic models of real-time systems and an integration testing strategy that makes use of them. Also, we present a case study from the avionics domain and discuss barriers regarding the considered conformance relation.
Similar content being viewed by others
Notes
\(G^D\) is assumed to be expressed in a theory in which satisfiability is decidable.
Let set(j) be the function that converts the tuple j in a set.
A complete presentation of test purposes and test cases with accept and inconclusive paths generated using the SYMBOLRT tool as well as an implementation of the compositional operators are available at https://sites.google.com/site/compositionaltioco/.
References
Andrade, W.L., Almeida, D.R., Cândido, J.B., Machado, P.D.L.: SYMBOLRT: a tool for symbolic model-based test case generation for real-time systems. In: 19th tools session of the 3rd Brazilian conference on software: theory and practice (CBSoft 2012), Best Tool Award, pp. 31–37 (2012). https://sites.google.com/a/computacao.ufcg.edu.br/symbolrt
Andrade, W.L., Machado, P.D.: Generating test cases for real-time systems based on symbolic models. IEEE Trans. Softw. Eng. 39(9), 1216–1229 (2013). doi:10.1109/TSE.2013.13
Android developers. http://developer.android.com/. Accessed 04 June, 2014
Bengtsson, J., Yi, W.: Timed automata: semantics, algorithms and tools. In: Lectures on concurrency and petri nets, pp. 87–124. Springer, Berlin (2004)
Bertrand, N., Jéron, T., Stainer, A., Krichen, M.: Off-line test selection with test purposes for non-deterministic timed automata. In: Proceedings of TACAS’11/ETAPS’11, pp. 96–111. Springer, Berlin (2011). http://dl.acm.org/citation.cfm?id=1987389.1987402
Bijl, M., Rensink, A., Tretmans, J.: Compositional testing with ioco. In: Petrenko, A., Ulrich, A. (eds.) Formal Approaches to Software Testing, LNCS, vol. 2931, pp. 86–100. Springer, Berlin Heidelberg (2004). doi:10.1007/978-3-540-24617-6_7
Binder, R.: Testing Object-Oriented Software Testing: Models, Patterns, and Tools. Addison-Wesley Professional, Boston (2000)
Bozga, M., Graf, S., Mounier, L.: If-2.0: a validation environment for component-based real-time systems. In: Computer aided verification, pp. 343–348. Springer, Berlin (2002)
Daca, P., Henzinger, T.A., Krenn, W., Ničković, D.: Compositional specifications for ioco testing. In: Proceedings of IEEE international conference on software testing, verification and validation IEEE , vol. 7, pp. 373–382 (2014)
Damasceno, A., Machado, P.D.L., Andrade, W.L.: Symbolic test case generation of compositional real-time systems driven by interruptions. In: 18th international symposium on real-time distributed computing, pp. 228–235. IEEE Computer Society, Auckland-NZ (2015). doi:10.1109/ISORC.2015.38
Damasceno, A.C.: Testing real-time systems from compositional symbolic specifications (2015). Technical report SPLAB-2015-003. https://goo.gl/nH7BQ5
Flight Navigator Handbook. United States Government Printing Office. U.S. Department of Transportation, Federal Aviation Transportation (2011). http://www.faa.gov/
Hessel, A., Larsen, K.G., Mikucionis, M., Nielsen, B., Pettersson, P., Skou, A.: Testing real-time systems using UPPAAL. In: Hierons, R.M., Bowen, J.P., Harman, M. (eds.) Formal Methods and Testing, LNCS, vol. 4949, pp. 77–117. Springer, Berlin (2008)
Jard, C., Jéron, T.: TGV: theory, principles and algorithms. Int. J. Softw. Tools Technol. Transf. 7(4), 297–315 (2005)
Java platform, standard edition 8 api specification. http://docs.oracle.com/javase/8/docs/api/. Accessed 04 June, 2014
Krichen, M., Tripakis, S.: Interesting properties of the real-time conformance relation tioco. Theor. Asp. Comput. ICTAC 2006, 317–331 (2006)
Lacomme, P., Marchais, J.C., Hardange, J.P., Normant, E.: Air and Spaceborne Radar Systems: An Introduction. William Andrew, New York (2001)
Laplante, P.: Real-Time Systems Design and Analysis. Wiley, India (2009)
Locke, D., Lucas, L., Goodenough, J.: Generic avionics software specification (cmu/sei-90-tr-008) (1990). http://resources.sei.cmu.edu/library/asset-view.cfm?AssetID=11181
Pacheco, P.: An Introduction to Parallel Programming. Elsevier, Amsterdam (2011)
Peleska, J., Honisch, A., Lapschies, F., Löding, H., Schmid, H., Smuda, P., Vorobev, E., Zahlten, C.: A real-world benchmark model for testing concurrent real-time systems in the automotive domain. In: Wolff, B., Zaïdi, F. (eds.) Testing Software and Systems, LNCS, vol. 7019, pp. 146–161. Springer, Berlin Heidelberg (2011). doi:10.1007/978-3-642-24580-0_11
Sampaio, A., Nogueira, S., Mota, A.: Compositional verification of input-output conformance via csp refinement checking. Formal Methods Softw. Eng., pp. 20–48 (2009)
Scarlett–Scalable and Reconfigurable Eletronics Platforms and Tools. http://www.scarlettproject.eu. Accessed 04 June, 2014
Timo, O.N., Rollet, A.: Test selection for data-flow reactive systems based on observations. In: 2011 IEEE fourth international conference on software testing, verification and validation workshops (ICSTW), 7th workshop on advances in model based testing (A-MOST 2011), pp. 1–8, IEEE Computer Society (2011). doi:10.1109/ICSTW.2011.71
Tretmans, J.: Testing concurrent systems: a formal approach. In: CONCUR’99 Concurrency Theory, pp. 46–65. Springer, Berlin (1999)
Utting, M., Legeard, B.: Practical Model Based Testing: A Tools Approach. Elsevier, Amsterdam (2007)
Van Der Bijl, M., Rensink, A., Tretmans, J.: Compositional testing with ioco. In: Formal Approaches to Software Testing, pp. 86–100. Springer, Berlin (2004)
von Styp, S., Bohnenkamp, H., Schmaltz, J.: A conformance testing relation for symbolic timed automata. In: Chatterjee, K., Henzinger, T. (eds.) Formal Modeling and Analysis of Timed Systems, LNCS, vol. 6246, pp. 243–255. Springer, Berlin/Heidelberg (2010). doi:10.1007/978-3-642-15297-9_19
Author information
Authors and Affiliations
Corresponding author
Additional information
This work is supported by CNPq grants 484643/2011-8, 560014/2010-4 and Federal University of Campina Grande (UFCG). We thank reviewers for their helpful comments on how to improve this paper.
Appendix: proofs
Appendix: proofs
Theorem 1
(tioco Sequential composition) Let \(\mathcal {S}_1\) and \(\mathcal {S}_2\) be specifications and \(\mathcal {I}_1\), \(\mathcal {I}_2\) be implementations modeled by TIOSTSs that meet Definition 6. If \(\mathcal {I}_{1}\) tioco \(\mathcal {S}_1 \wedge \mathcal {I}_2\) tioco \(\mathcal {S}_2\) then \( \mathcal {I}_1;_{a_{c1}}\mathcal {I}_2\) tioco \(\mathcal {S}_1;_{a_{c1}} \mathcal {S}_2\).
Proof
According to Definition 4, we need to prove that
\(\forall \sigma _1 \in \) Traces(\(\mathcal {S}_1\)): Out(\(\mathcal {I}_1\) after \(\sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_1\) after \(\sigma _1\)) \(\wedge \)
\(\forall \sigma _2 \in \) Traces(\(\mathcal {S}_2\)): Out(\(\mathcal {I}_2\) after \(\sigma _2\)) \(\subseteq \) Out(\(\mathcal {S}_2\) after \(\sigma _2\)) \(\Rightarrow \)
\(\forall \sigma \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\sigma \)) \(\subseteq \) Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma \))
To correspond TIOLTS states (Definition 2) used by Tra-ces to TIOSTS locations (Definition 1) used by the sequential operator and improve this proof readability, let TIOLTS \( [\![\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2]\!] = \langle S, S^0, Act, T \rangle \) and \(S_{(l^0_{c1}, l^0_2)} = \{ \langle l, \nu , \psi \rangle | \langle l, \nu , \psi \rangle \in S \wedge \langle l, \nu , \psi \rangle \mathop {\longrightarrow }\limits ^{\langle a, \gamma \rangle } \langle (l^0_{c1}, l^0_2), \nu ^{\prime }, \psi ^{\prime } \rangle \}\). In addition, \(\sigma , \rho \in \) Traces (\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)) and \(\sigma = \rho \cdot a\). By Definition 3, \(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2 \mathop {\rightarrow }\limits ^{\rho \cdot a}\) and \(\rho \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)). From Definition 6, \(\sigma \) is fivefold:
-
(1)
\(\sigma = \epsilon \)
We replace \(\sigma \) by \(\epsilon \) in Definition 4, resulting in Out(\(\mathcal {I}_1\) after \(\sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_1\) after \(\sigma _1\)) \(\wedge \) Out(\(\mathcal {I}_2\) after \(\sigma _2\)) \(\subseteq \) Out(\(\mathcal {S}_2\) after \(\sigma _2\)) \(\Rightarrow \) Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\epsilon \)) \(\subseteq \) Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\epsilon \)). Since \(\epsilon \) belongs to any set of traces, this trivially holds.
-
(2)
\(\sigma = \rho \cdot a\) with \(a \in \varSigma _1 \; \wedge s \not \in S_{(l^0_{c1}, l^0_2)}\)
We use (1) from Definition 6, resulting in \(\rho = \sigma _1\) and \(\sigma _1 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)). Because we assume that \(\forall \sigma _1 \in \) Traces(\(\mathcal {S}_1\)): Out(\(\mathcal {I}_1\) after \(\sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_1\) after \(\sigma _1\)), we have \(\forall \sigma _1 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\sigma _1 \cdot a\)) \(\subseteq \) Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma _1 \cdot a\)) and, by Definition 4, \(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) tioco \(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\).
-
(3)
\(\sigma = \rho \cdot a\) with \(a \in \varSigma _1 \; \wedge s \in S_{(l^0_{c1}, l^0_2)}\)
We use (3) from Definition 6, resulting in \(\rho = \sigma _1\), \(a \ne a_{c1}\) and \(\sigma _1 \cdot a \in \) Traces( \(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)). Since we assume \(\forall \sigma _1 \in \) Traces(\(\mathcal {S}_1\)): Out(\(\mathcal {I}_1\) after \(\sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_1\) after \(\sigma _1\)) and \(\mathcal {S}_1\) and \(\mathcal {S}_2\) follow SC normal form from Definition 5, we have \(\forall \sigma _1 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): (\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma _1 \cdot a\)) = \(\{ \langle l, \nu , \psi \rangle | l = (l^0_{c1}, l^0_2)\}\). Thus, \(\forall \; \sigma _1 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma _1 \cdot a\)) = \(\{ \langle a, \gamma \rangle | a = a_{c1})\}\).
In addition, assuming that \(\mathcal {I}_1\) and \(\mathcal {I}_2\) follow SC normal form from Definition 5 and \(\forall \sigma _1 \in \) Traces(\(\mathcal {S}_1\)): Out(\(\mathcal {I}_1\) after \(\sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_1\) after \(\sigma _1\)), we have \(\forall \sigma _1 \cdot a \in \) Traces(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\sigma _1 \cdot a\)) = \(\{ \langle a, \gamma \rangle | a = a_{c1})\}\). Finally, \(\forall \sigma _1 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\sigma _1 \cdot a\)) = Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma _1 \cdot a\)). Hence, \(\forall \sigma _1 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\sigma _1 \cdot a\)) \(\subseteq \) Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma _1 \cdot a\)) and, by Definition 4, \(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) tioco \(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\).
-
(4)
\(\sigma = \rho \cdot a\) with \(a = a_{c1}\)
We use (5) from Definition 6, resulting in \(\rho = \sigma _1\) and \(\sigma _1 \cdot a_{c1} \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)). Since we assume \(\forall \sigma _1 \in \) Traces(\(\mathcal {S}_2\)): Out(\(\mathcal {I}_2\) after \( \sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_2\) after \( \sigma _1\)) and \(\mathcal {S}_1\) and \(\mathcal {S}_2\) follow Definition 5, \(\forall \sigma _1 \cdot a_{c1} \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): (\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \( \sigma _1 \cdot a_{c1}\)) = \(\{ \langle l, \nu , \psi \rangle | l = (l_{c1}, l^{0\prime }_2)\}\). Because we use (4) and (5) from Definition 6, \(\forall \sigma _1 \cdot a_{c1} \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \( \sigma _1 \cdot a_{c1}\)) = Out (\(\mathcal {S}_2\) after \(\overline{a_{c1}}\)).
Moreover, assuming that Out(\(\mathcal {I}_2\) after \( \sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_2\) after \( \sigma _1\)) and \(\mathcal {I}_1\) and \(\mathcal {I}_2\) follow Definition 5, we have Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \( \sigma _1 \cdot a_{c1}\)) = Out (\(\mathcal {S}_2\) after \(\overline{a_{c1}}\)). Thus, \(\forall \sigma _1 \cdot a_{c1} \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \( \sigma _1 \cdot a_{c1}\)) = Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \( \sigma _1 \cdot a_{c1}\)) and \(\forall \sigma _1 \cdot a_{c1} \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \( \sigma _1 \cdot a_{c1}\)) \(\subseteq \) Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \( \sigma _1 \cdot a_{c1}\)). By Definition 4, \(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) tioco \(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\).
-
(5)
\(\sigma = \rho \cdot a\) with \(a \in \varSigma _2 \backslash \{\overline{a_{c1}}\}\)
We use (2) from Definition 6, resulting in \(\rho = \sigma _1 \cdot a_{c1} \cdot \sigma _2\) and \(\sigma _1 \cdot a_{c1} \cdot \sigma _2 \cdot a \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)). Because we assume that \(\forall \sigma _1 \in \) Traces(\(\mathcal {S}_1\)): Out(\(\mathcal {I}_1\) after \(\sigma _1\)) \(\subseteq \) Out(\(\mathcal {S}_1\) after \(\sigma _1\)), \(\forall \sigma _2 \in \) Traces(\(\mathcal {S}_2\)): Out(\(\mathcal {I}_2\) after \(\sigma _2\)) \(\subseteq \) Out(\(\mathcal {S}_2\) after \(\sigma _2\)) and Definition 5 constrains clocks from \(C_2\) to restart from the transition that contains the \(a_{c1}\) action, we have \(\forall \sigma _1 \cdot a_{c1} \cdot \sigma _2 \cdot a \; \in \) Traces(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\)): Out(\(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) after \(\sigma _1 \cdot a_{c1} \cdot \sigma _2 \cdot a\)) \(\subseteq \) Out(\(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\) after \(\sigma _1 \cdot a_{c1} \cdot \sigma _2 \cdot a\)) and, by Definition 4, \(\mathcal {I}_1 ;_{a_{c1}} \mathcal {I}_2\) tioco \(\mathcal {S}_1 ;_{a_{c1}} \mathcal {S}_2\).
Lemma 1
If \(\mathcal {S}_1\) and \(\mathcal {S}_2\) are two input-complete TIOSTS, \(\mathcal {S}_1 \parallel \mathcal {S}_2\) is also input-complete.
Proof
A location l of \(\mathcal {S}_1 \parallel \mathcal {S}_2\) is a pair \((l_1, l_2)\) where \(l_1 \in L_1\) and \(l_2 \in L_2\). By assumption, \(\mathcal {S}_1\) and \(\mathcal {S}_2\) are input-complete with relation to \(\varSigma ^{?}_1\) and \(\varSigma ^{?}_2\) in this sequence. Thus, \(\forall \; a_i \in \varSigma ^{?}_i\), \(l_i\mathop {\rightarrow }\limits ^{a}\) with \(i = 1, 2\). From this point, we identify two cases:
-
(1)
\((a \not \in \varSigma _2) \vee (a \not \in \varSigma _1)\)
For each \(((l_1, l_2), a, G, A, d, (l^{\prime }_1, l^{\prime }_2)) \in \mathcal {T}\), \(a = a_1\) or \(a = a_2\). Hence, \(a \in \mathcal {S}_1 \parallel \mathcal {S}_2\) and \(l\mathop {\rightarrow }\limits ^{a}\) holds.
-
(2)
\((a \in \; \varSigma \mathop {_1}\limits ^{?} \cap \varSigma \mathop {_2}\limits ^{!}) \vee (a \in \varSigma \mathop {_1}\limits ^{!} \cap \varSigma \mathop {_2}\limits ^{?})\)
For each \(((l_1, l_2), a, G, A, d, (l^{\prime }_1, l^{\prime }_2)) \in \mathcal {T}\), \(a \not \in \varSigma ^{?}_1 \cap \varSigma ^{?}_2\). Hence, this trivially holds.
Lemma 2
Let \(\mathcal {I}\) and \(\mathcal {S}\) be two input-complete TIOSTS such that \(\varSigma _\mathcal {I} = \varSigma _\mathcal {S}\). Thus
\(\mathcal {I}\) tioco \(\mathcal {S} \Leftrightarrow \) Traces(\(\mathcal {I}\)) \(\subseteq \) Traces(\(\mathcal {S}\)).
Proof
The proof of this theorem follows a similar line of reasoning as the one presented by Krichen and Tripakis [16] for the parallel synchronization operator in the scope of TAIO models. Accordingly, considering Lemma 2, we need to prove that
-
Traces(\(\mathcal {I}_1\)) \(\subseteq \) Traces(\(\mathcal {S}_1\)) \(\wedge \)
-
Traces(\(\mathcal {I}_2\)) \(\subseteq \) Traces(\(\mathcal {S}_2\)) \(\Rightarrow \)
-
Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)) \(\subseteq \) Traces(\(\mathcal {S}_1 \parallel \mathcal {S}_2\)).
Let \(\sigma , \rho \in \) Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)). From Definition 7, \(\sigma \) can be fourfold:
-
i)
\(\sigma = \epsilon \) \(\epsilon \in \) Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)) and hence \(\mathcal {I}_1 \parallel \mathcal {I}_2 \mathop {\rightarrow }\limits ^{\epsilon } \mathcal {I}^{\prime }_1 \parallel \mathcal {I}^{\prime }_2\) by (8). Since \(\epsilon \in \) Traces(\(\mathcal {S}_1 \parallel \mathcal {S}_2\)) by the definition of a general set, this trivially holds.
-
ii)
\(\sigma = \rho \cdot a\) with \(a \not \in \varSigma _2\). Because \(a \not \in \varSigma _2\), we can apply (6), which results \(\rho \cdot a \in \) Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)). Since we assume that Traces(\(\mathcal {I}_1\)) \(\subseteq \) Traces(\(\mathcal {S}_1\)) and \(\varSigma _{\mathcal {I}_1} = \varSigma _{\mathcal {S}_1}\), \(\mathcal {S}_1 \parallel \mathcal {S}_2 \mathop {\longrightarrow }\limits ^{\rho \cdot a}\), which implies that \(\rho \cdot a \in \) Traces(\(\mathcal {S}_1 \parallel \mathcal {S}_2\)). Consequently, Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)) \(\subseteq \) Traces(\(\mathcal {S}_1 \parallel \mathcal {S}_2\)).
-
iii)
\(\sigma = \rho \cdot a\) with \(a \not \in \varSigma _1\). Analogous to ii).
-
iv)
\(\sigma = \rho \cdot a\) with \((a \in \varSigma ^{?}_{1} \cap \varSigma ^{!}_{2}) \vee (a \in \varSigma ^{!}_{1} \cap \varSigma ^{?}_{2})\). Because \((a \in \varSigma ^{?}_{1} \cup \varSigma ^{!}_{2}) \vee (a \in \varSigma ^{!}_{1} \cup \varSigma ^{?}_{2})\), we can apply (8), which results \(\rho \cdot a \in \) Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)). Since Traces(\(\mathcal {I}_1\)) \(\subseteq \) Traces(\(\mathcal {S}_1\)) \(\wedge \) Traces(\(\mathcal {I}_2\)) \(\subseteq \) Traces(\(\mathcal {S}_2\)), a is synchronizable in \(\mathcal {I}_1 \parallel \mathcal {I}_2\) and \(a \; \in \varSigma ^{!}_{1} \cup \varSigma ^{!}_{2}\). In addition, \(\mathcal {I}_1\) and \(\mathcal {I}_2\) are input-complete, so \(\mathcal {I}_1 \parallel \mathcal {I}_2\) is input-complete by Lemma 1. Similarly, \(\mathcal {S}_1 \parallel \mathcal {S}_2\) is input-complete. By the input-completeness and synchronization of \(\mathcal {S}_1 \parallel \mathcal {S}_2\), \(\mathcal {S}_1 \parallel \mathcal {S}_2\mathop {\longrightarrow }\limits ^{\rho \cdot a}\) holds and Traces(\(\mathcal {I}_1 \parallel \mathcal {I}_2\)) \(\subseteq \) Traces(\(\mathcal {S}_1 \parallel \mathcal {S}_2\)). \(\square \)
Rights and permissions
About this article
Cite this article
Damasceno, A.C., Machado, P.D.L. & Andrade, W.L. Testing real-time systems from compositional symbolic specifications. Int J Softw Tools Technol Transfer 19, 53–71 (2017). https://doi.org/10.1007/s10009-015-0390-1
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-015-0390-1