Abstract
Self-adaptive systems have to implement adaptation policies described by sets of rules that express how the components are reconfigured within the system, the priority of a given reconfiguration to happen, when a given (sequence of) event(s) occurs, and when specific conditions on the system state are satisfied. However, when this priority is given by a fuzzy value (e.g., high, medium, low) depending on external and internal events, it has to be implemented inside the software with particular implementation choices made. This paper is dedicated to the validation of adaptation policies, using a model-based testing approach and a verdict establishment that is based on both the runtime verification of temporal properties, and the detection of inconsistencies between the adaptation policy and the reconfigurations implemented in the self-adaptive system. We propose means to establish a test verdict based on the respect of the adaptation policy by the implementation, along with coverage measures of the rules. This provides interesting feedback on the adaptation policy rules, allowing to detect reconfigurations that should not have occurred, high-priority reconfigurations that are never triggered, or low-priority reconfigurations that are too frequently executed, potential inconsistencies in the rules, or wrong interpretation of priorities. The test verdict is made based on the analysis of the execution traces of the system, which is stimulated using a usage model that describes the probabilities of external events to occur. An experiment, performed on a vehicular ad-hoc network of autonomous vehicles, illustrates the interest of the approach.
Similar content being viewed by others
Notes
Notably \(\mathbb {B}_{4} = \{ \top , \top ^{p}, \bot ^{p}, \bot \}\) and \(\mathbb {B}_{2} = \{ \top , \bot \}\) where ⊤ (resp. ⊥) stands for true (resp. false) and ⊤p (resp. ⊥p) stands for potentially true (resp. potentially false).
FTPL stands for TPL (temporal pattern language) prefixed by “F” to denote its relation to fractal-like components and to first-order consistency constraints over them.
We assume that if an event does not label an outgoing transition of the current state, its probability is 0.
References
Baille, G., Garnier, P., Mathieu, H., Pissard-Gibollet, R. (1999). Le cycab de l’INRIA Rhône-Alpes. Rapport technique RT-0229, INRIA.
Basu, A., Bozga, M., Sifakis, J. (2006). Modeling heterogeneous real-time components in BIP. In Proc. of the fourth IEEE int. conf. on software engineering and formal methods, SEFM ’06, pages 3–12, Washington, DC, USA: IEEE Computer Society.
Beizer, B. (1995). Black-box testing: techniques for functional testing of software and systems. New York: Wiley.
Binder, R.V., Legeard, B., Kramer, A. (2014). Model-based testing: where does it stand? ACM Queue, 13(1), 40–48.
Bruneton, E., Coupaye, T., Leclercq, M., Quéma, V., Stefani, J.-B. (2006). The Fractal component model and its support in java: experiences with auto-adaptive and reconfigurable systems. Software: Practice and Experience, 36(11-12), 1257–1284.
Chauvel, F., Barais, O., Plouzeau, N., Borne, I., Jézéquel, J.-M. (2008). Expression qualitative de politiques d’adaptation pour Fractal. In Aït Ameur, Y. (Ed.) 2ème Conf. sur les Architectures Logicielles (CAL 2008), 3-7 Mars 2008, Montréal, Québec, Canada, volume RNTI-l-2 of Revue des Nouvelles Technologies de l’Information, page 119. Cepaduès Editions.
Chockler, H., Kupferman, O., Vardi, M.Y. (2006). Coverage metrics for temporal logic model checking. Formal Methods in System Design, 28(3), 189–212.
Dadeau, F., Cabrera Castillos, K., Julliand, J. (2014). Coverage criteria for model-based testing using property patterns. In Petrenko, A.K., & Schlingloff, H. (Eds.) MBT 2014, 9th workshop on model-based testing, join to ETAPS 2014, volume 141 of EPTCS, pages 29–43, Grenoble, France.
De Lemos, R., Giese, H., Müller, H.A., Shaw, M., Andersson, J., Litoiu, M., Schmerl, B., Tamura, G., Villegas, N.M., Vogel, T., et al. (2013). Software engineering for self-adaptive systems: a second research roadmap. In Software engineering for self-adaptive systems II (pp. 1–32): Springer.
Dormoy, J., & Kouchnarenko, O. (2010). Event-based adaptation policies for Fractal components. In AICCSA ACS/IEEE int. conf. on computer systems and applications. Hammamet, Tunisia, May 2010 (pp. 1–8).
Dormoy, J., Kouchnarenko, O., Lanoix, A. (2012). Using temporal logic for dynamic reconfigurations of components. In Barbosa, L., & Lumpe, M. (Eds.) FACS, vol. 6921 of LNCS (pp. 200–217). Berlin: Springer.
Eberhardinger, B., Seebach, H., Klumpp, D., Reif, W. (2017). Test case selection strategy for self-organization mechanisms. In Winter, M., Spillner, A., Pietschker, A. (Eds.) Test, analyse und verifikation von software – gestern, heute, morgen. Dpunkt Verlag.
Eberhardinger, B., Seebach, H., Knapp, A., Reif, W. (2014). Towards testing self-organizing, adaptive systems. In Merayo, M.G., & de Oca, E.M. (Eds.) Testing software and systems (pp. 180–185). Berlin: Springer.
Filieri, A., Ghezzi, C., Tamburrelli, G. (2012). A formal approach to adaptive software: continuous assurance of non-functional requirements. Formal Asp. Comput., 24(2), 163–186.
Filieri, A., Tamburrelli, G., Ghezzi, C. (2016). Supporting self-adaptation via quantitative verification and sensitivity analysis at run time. IEEE Transactions on Software Engineering, 42(1), 75–99.
Guériau, M., Dafflon, B., Gechter, F. (2017). VIPS: a simulator for platoon system evaluation. Simulation Modelling Practice and Theory, 77, 157–176.
Huebscher, M.C., & McCann, J.A. (2008). A survey of autonomic computing - degrees, models, and applications. ACM Comput. Surv., 40(3), 7:1–7:28.
Hutchison, C., Zizyte, M., Lanigan, P.E., Guttendorf, D., Wagner, M.D., Le Goues, C., Koopman, P. (2018). Robustness testing of autonomy software. In Proceedings of the 40th international conference on software engineering: software engineering in practice, ICSE (SEIP) 2018 (pp. 276–285): Gothenburg.
Jahier, E., Djoko-Djoko, S., Maiza, C., Lafont, E. (2014). Environment-model based testing of control systems: case studies. In Ábrahám, E., & Havelund, K. (Eds.) Tools and algorithms for the construction and analysis of systems (pp. 636–650). Berlin: Springer.
Jia, D., Lu, K., Wang, J., Zhang, X., Shen, X. (2016). A survey on platoon-based vehicular cyber-physical systems. IEEE Communications Surveys Tutorials, 18(1), 263–284.
Kim, M., Lee, I., Shin, J., Sokolsky, O., et al. (2002). Monitoring, checking, and steering of real-time systems. ENTCS, 70(4), 95–111.
Kouchnarenko, O., & Weber, J.-F. (2014). Adapting component-based systems at runtime via policies with temporal patterns. In Fiadeiro, J.L., Liu, Z., Xue, J. (Eds.) FACS, 10th int. symp. on formal aspects of component software, vol. 8348 of LNCS (pp. 234–253): Springer.
Kouchnarenko, O., & Weber, J.-F. (2015). Decentralised evaluation of temporal patterns over component-based systems at runtime. In Lanese, I., & Madelaine, E. (Eds.) Formal aspects of component software, vol. 8997 of LNCS (pp. 108–126). Bertinoro: Springer.
Kouchnarenko, O., & Weber, J.-F. (2015). Practical analysis framework for component systems with dynamic reconfigurations. In Butler, M., Conchon, S., Zaïdi, F. (Eds.) ICFEM’15, 17th int. conf. on formal engineering methods, (Vol. 9407 pp. 287–303): Springer.
Utting, M. (2011). How to design extended finite state machine test models in Java. In Model-based testing for embedded systems, series on computational analysis, synthesis, and design of dynamic systems (pp. 147–170): CRC Press.
Mayeda, M. (2019). Evaluating software testing techniques: a systematic mapping study. PhD thesis, University of Denver, Colorado.
Poladian, V., Garlan, D., Shaw, M., Satyanarayanan, M., Schmerl, B.R., Pedro Sousa, J. (2007). Leveraging resource prediction for anticipatory dynamic configuration. In Proceedings of the first international conference on self-adaptive and self-organizing systems, SASO 2007, Boston, MA, USA, July 9-11, 2007 (pp. 214–223).
Rajkumar, R., Lee, I., Sha, L., Stankovic, J.A. (2010). Cyber-physical systems: the next computing revolution. In Proceedings of the 47th design automation conference, DAC 2010, Anaheim, California, USA, July 13-18, 2010 (pp. 731–736).
Schneider, M, Grossmann, J., Tcholtchev, N., Schieferdecker, I., Pietschker, A. (2013). Behavioral fuzzing operators for UML sequence diagrams. In Proceedings of the 7th international conference on system analysis and modeling: theory and practice, SAM’12 (pp. 88–104). Berlin: Springer.
Sinclair, A. (1993). Algorithms for random generation and counting: a Markov chain approach. Birkhauser Verlag, Basel, Switzerland.
Sotiropoulos, T., Waeselynck, H., Guiochet, J., Ingrand, F. (2017). Can robot navigation bugs be found in simulation? an exploratory study. In 2017 IEEE international conference on software quality, reliability and security, QRS 2017, Prague, Czech Republic, July 25-29, 2017 (pp. 150–159).
Steinbauer, G., & Wotawa, F. (2013). Model-based reasoning for self-adaptive systems - theory and practice. In Cámara, J., de Lemos, R., Ghezzi, C., Lopes, A. (Eds.) Assurances for self-adaptive systems - principles, models, and techniques, volume 7740 of Lecture Notes in Computer Science, pp 187–213. Springer.
Szyperski, C. (1995). Component software: beyond object-oriented programming. 1998. Harlow, England, Addison-Wesley.
Taha, S., Julliand, J., Dadeau, F., Cabrera Castillos, K., Kanso, B. (2015). A compositional automata-based semantics and preserving transformation rules for testing property patterns. Formal Aspects of Computing, 27(4), 641–664.
Takanen, A., DeMott, J., Miller, C. (2008). Fuzzing for software security testing and quality assurance. Artech House, Inc., Norwood, MA, USA 1 edition.
Utting, M., & Legeard, B. (2006). Practical model-based testing - a tools approach, (p. 550). Amsterdam: Elsevier. ISBN 0-12-372501-1.
Villegas, N.M., Müller, H.A., Tamura, G., Duchien, L., Casallas, R. (2011). A framework for evaluating quality-driven self-adaptive software systems. In 2011 ICSE symposium on software engineering for adaptive and self-managing systems, SEAMS 2011, Waikiki, Honolulu, HI, USA, May 23-24, 2011 (pp. 80–89).
Weber, J.-F. (2016). Tool support for fuzz testing of component-based system adaptation policies. In 13th international conference on formal aspects of component software, volume 10231 of LNCS (pp. 231–237).
Whittaker, J.A., & Thomason, M.G. (1994). A Markov chain model for statistical software testing. IEEE Transactions on Software Engineering, 20(10), 812–824.
Wotawa, F. (2016). Testing self-adaptive systems using fault injection and combinatorial testing. In 2016 IEEE international conference on software quality, reliability and security, QRS 2016, Companion, Vienna, Austria, August 1-3, 2016 (pp. 305–310): IEEE.
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher’s note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Dadeau, F., Gros, JP. & Kouchnarenko, O. Testing adaptation policies for software components. Software Qual J 28, 1347–1378 (2020). https://doi.org/10.1007/s11219-019-09487-w
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11219-019-09487-w