Abstract
Regression testing is indispensable, especially for real-time distributed systems to ensure that existing functionalities are not affected by changes. Despite recent advances, regression testing for distributed systems remains challenging and extremely costly. Existing techniques often require running a failing system several times before detecting a regression. As a result, conventional approaches that use re-execution without considering the inherent non-determinism of distributed systems, and providing no (or low) control over execution are inadequate in many ways. In this paper, we present MRegTest, a replay-based regression testing framework in the context of model-driven development to facilitate deterministic replay of traces for detecting regressions while offering sufficient control for the purpose of testing over the execution of the changed system. The experimental results show that compared to the traditional approaches that annotate traces with timestamps and variable values MRegTest detects almost all regressions while reducing the size of the trace significantly and incurring similar runtime overhead.
Similar content being viewed by others
Notes
These tests haven not entirely been designed for IoT systems.
Referring to an original model whose state machine has not been changed.
Traces collected from executions of an instrumented base model.
A video that demonstrates the tool: https://youtu.be/1PXjmKgadQI
‘x’ is a numerical variable and ‘exp’ is an expression that will be evaluated to a numerical value.
References
Elbaum, S., Rothermel, G., Penix, J.: Techniques for improving regression testing in continuous integration development environments, ser. FSE,: new York, NY, USA: Assoc. Comput. Mach. 2014, 235–245 (2014)
Gabrielova, E.: End-to-end regression testing for distributed systems, ser. Middleware ’17. New York, NY, USA: Association for Computing Machinery, p. 9-12 (2017)
Aumayr, D., Marr, S., Béra, C., Boix, E.G., Mössenböck, H.: Efficient and deterministic record & replay for actor languages, ser. ManLang ’18. New York, NY, USA: Association for Computing Machinery, (2018)
Tveito, L., Johnsen, E.B., Schlatte, R.: Global reproducibility through local control for distributed active objects, In FASE, ser. Lecture Notes in Computer Science, vol. 12076. Springer, pp. 140–160 (2020)
Lanese, I., Palacios, A., Vidal, G.: Causal-consistent replay debugging for message passing programs, In IFIP, ser Lecture Notes in Computer Science, Springer 11535, 167–184 (2019)
Kazuhiro Shibanai, K., Watanabe, T.: Distributed functional reactive programming on actor-based runtime, In SIGPLAN. ACM, pp. 13–22 (2018)
Sen, K., Kalasapur, S., Brutch, T., Gibbs, S.: Jalangi: a selective record-replay and dynamic analysis framework for JavaScript, ser. ESEC/FSE. New York, NY, USA: Association for Computing Machinery, p. 488-498 (2013)
Leshed, G., Haber, E.M., Matthews, T., Lau, T.: Coscripter: Automating & sharing how-to knowledge in the enterprise, In SIGCHI, ser. CHI ’08. New York, NY, USA: association for Computing Machinery, p. 1719-1728 (2008)
QF-Test website, https://www.qfs.de/en.html, retrieved (2021)
Holmes, A., Kellogg, M.: Automating functional tests using selenium, In AGILE’06, (2006)
Smartbear, “TestComplete,” https://smartbear.com/product/testcomplete/overview/, retrieved (2021)
Kresse, A., Kruse, P.M.: Development and maintenance efforts testing graphical user interfaces: a comparison, ser. A-TEST. New York, NY, USA: association for Computing Machinery, p. 52-58 (2016)
Sigelman, B.H., Barroso, L.A., Burrows, M., Stephenson, P., Plakal, M., Beaver, D., Jaspan, S., Shanbhag, C.: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure. Google Inc, Tech. Rep. (2010)
Park, S., Lu, S., Zhou, Y.: Ctrigger: Exposing atomicity violation bugs from their hiding places, ser. ASPLOS XIV. New York, NY, USA: association for Computing Machinery, p. 25-36 (2009)
Babaei, M., Dingel, J.: MRegTest repository, https://github.com/MajidGitHubRepos/MRegTest, retrieved (2021)
Babaei, M., Bagherzadeh, M., Dingel, J.: Efficient reordering and replay of execution traces of distributed reactive systems in the context of model-driven development, In Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, ser. MODELS’20. New York, NY, USA: Association for Computing Machinery, p. 285-296 (2020)
Babaei, M.: Regression testing of distributed real-time embedded systems in the context of model-driven development, PhD dissertation, Kingston, Ontario, Canada, (2021)
Ural, H., Whittier, D.: Distributed testing without encountering controllability and observability problems. Inf. Process. Lett. 88(3), 133–141 (2003)
Hierons, R.M., Merayo, M.G., Nunez, M.: Controllability through nondeterminism in distributed testing. In: Wotawa, F., Nica, M., Kushik, N. (eds.) Testing Software and Systems, pp. 89–105. Springer International Publishing, Cham (2016)
Cacciari, L., Rafiq, O.: Controllability and observability in distributed testing. Inf. Softw. Technol. 41(11), 767–780 (1999)
Terragni, V., Cheung, S., Zhang, C.: Recontest: effective regression testing of concurrent programs,’ In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 1, pp. 246–256 (2015)
Yu, T., Srisa-an, W., Rothermel, G.: SimRT: An automated framework to support regression testing for data races, ser. ICSE. New York, NY, USA: association for Computing Machinery, p. 48-59 (2014)
Joshi, P., Ganai, M., Balakrishnan, G., Gupta, A., Papakonstantinou, N.:“SETSUDundefined: Perturbation-based testing framework for scalable distributed systems, ser. TRIOS. New York, NY, USA: association for Computing Machinery, (2013)
Lima, B.: Automated scenario-based integration testing of time-constrained distributed systems, In 2019 12th IEEE Conference on Software Testing, Validation and Verification (ICST), pp. 486–488 (2019)
Bianchi, F.A., Margara, A., Pezzè, M.: A survey of recent trends in testing concurrent software systems. IEEE Trans. Software Eng. 44(8), 747–783 (2018)
Torens, C., Ebrecht, L.: RemoteTest: a framework for testing distributed systems, pp. 441–446 (2010)
Milka, G., Rzadca, K.: Dfuntest: a testing framework for distributed applications. CoRR, (2018)
Foundation, E.: Eclipse Papyrus for real time (Papyrus-RT), https://www.eclipse.org/papyrus-rt, 2016, retrieved June 5, (2019)
Jahed, Karim: Papyrus-RT Distribution, https://github.com/kjahed/papyrusrt-distribution, retrieved: 2019-8-10 (2019)
Babaei, M., Bagherzadeh, M., Dingel, J.: Mreplayer: a trace replayer of distributed UML-RT models,” ser. MODELS’20. New York, NY, USA: association for Computing Machinery, (2020)
The Object Management Group, UML Superstructure Specification. Version 2.5.1, http://www.omg.org/spec/UML/2.5.1/PDF, 2017, retrieved August 23, (2019)
Stivan, G., Peruffo, A., Haller, P.: Akka.js: towards a portable actor runtime environment, ser. AGERE. New York, NY, USA: Association for Computing Machinery, p. 57-64 (2015)
Bykov, S., Geller, A., Kliot, G., Larus, J.R., Pandya, R., Thelin, J.: Orleans: Cloud computing for everyone, ser. SOCC. New York, NY, USA: Association for Computing Machinery, (2011)
McCaffrey, C.: Building the Halo 4 services with Orleans, 2015, presentation at QCon London
Boer, F.D., Serbanescu, V., Hähnle, R., Henrio, L., Rochas, J., Din, C.C., Johnsen, E.B., Sirjani, M., Khamespanah, E., Fernandez-Reyes, K., Yang, A.M.: A survey of active object languages,” ACM Comput. Surv., 50(5), (2017)
Rothermel, G., Harrold, M.J.: Analyzing regression test selection techniques. IEEE Trans. Software Eng. 22(8), 529–551 (1996)
Hammoudi, M.: Regression testing of web applications using record/replay tools, ser. FSE. New York, NY, USA: Association for Computing Machinery, p. 1079-1081 (2016)
Selic, B., Gullekson, G., Ward, P.T.: Real-Time Object-Oriented Modeling. John Wiley and Sons New York, 2, (1994)
Posse, E., Dingel, J.: An executable formal semantics for UML-RT. Softw. Syst. Model. 15(1), 179–217 (2016)
IBM, IBM RSARTE, https://www.ibm.com/developerworks/community/wikis, 2016, retrieved July 19, (2016)
HCL, RealTime Software Tooling (RTist), https://www.hcltech.com/software/rtist, retrieved (2020)
Eclipse Foundation, Eclipse eTrice Real-Time Modeling Tools, https://www.eclipse.org/etrice, (2020)
Selic, B.: Using UML for modeling complex real-time systems, in Languages, compilers, and tools for embedded systems. Springer, pp. 250–260 (1998)
Bagherzadeh, M.: Model-level debugging in the context of the model driven development, PhD dissertation, Kingston, Ontario, Canada, (2019)
von der Beeck, M.: A formal semantics of UML-RT, In Model Driven Engineering Languages and Systems, O. Nierstrasz, J. Whittle, D. Harel, and G. Reggio, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 768–782 (2006)
Mealy, G.H.: A method for synthesizing sequential circuits. Bell Syst. Tech. J. 34(5), 1045–1079 (1955)
Ahmadi, R.: Testing models of reactive systems, PhD dissertation, Kingston, Ontario, Canada, (2019)
Esmaeilsabzali, S., Day, N., Atlee, J., Niu, J.: Deconstructing the semantics of big-step modelling languages. Requir. Eng. 15(06), 235–265 (2010)
Parr, T.: Antlr (another tool for language recognition), https://www.antlr.org/, 2017, retrieved June 5, (2019)
Milner, R.: A Calculus of Communicating Systems. Springer-Verlag, Berlin, Heidelberg (1982)
Hoare, C.A.R.: Communicating sequential processes, 21(8), 666-677, (1978) [Online]. Available: https://doi.org/10.1145/359576.359585
Kolovos, D.S., Paige, R.F., Polack, F.A.: The Epsilon transformation language, In International Conference on Theory and Practice of Model Transformations. Springer, pp. 46–60 (2008)
Dunfield, J.: Lecture notes in cisc 327 - software quality assurance, Fall (2018)
Rothermel, G., Harrold, M.: Analyzing regression test selection techniques. IEEE Trans. Softw. Eng. 22(8), 529–551 (1996)
Briand, L., Labiche, Y., He, S.: Automating regression test selection based on UML designs. Inf. Softw. Technol. 51(1), 16–30 (2009)
Balasubramanian, J., Tambe, S., Lu, C., Gokhale, A., Gill, C., Schmidt, D.C.: Adaptive failover for real-time middleware with passive replication, In 15th IEEE Symposium on Real-Time and Embedded Technology and Applications. IEEE, pp. 118–127 (2009)
Kahani, N., Hili, N., Cordy, J.R., Dingel, J.: Evaluation of UML-RT and Papyrus-RT for modelling self-adaptive systems, In Proceedings of the 9th International Workshop on Modelling in Software Engineering. IEEE Press, pp. 12–18 (2017)
Swartout, W., Balzer, R.: On the inevitable intertwining of specification and implementation. Commun. ACM 25(7), 438–440 (1982)
Magee, J., Kramer, J.: State Models and Java Programs. Wiley, (1999)
Bagherzadeh, M., Hili, N., Dingel, J.: Model-level, platform-independent debugging in the context of the model-driven development of real-time systems, In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, ser. ESEC/FSE 2017. New York, NY, USA: ACM, pp. 419–430 (2017)
“ATM UML-RT model,” https://github.com/MajidGitHubRepos/atm_umlrt, retrieved (2021)
Ekelund, E.D., Engström, E.: Efficient regression testing based on test history: An industrial evaluation. IEEE Int. Conf. Softw. Maint. Evol. (ICSME) 2015, 449–457 (2015)
Yu, T., Huang, Z., Wang, C.: ConTesa: directed test suite augmentation for concurrent software. IEEE Trans. Software Eng. 46(4), 405–419 (2020)
Chen, Y., Zhang, S., Guo, Q., Li, L., Wu, R., Chen, T.: Deterministic replay: a survey. ACM Comput. Surv. 48(2), 171–1747 (2015)
Hammoudi, M., Rothermel, G., Stocco, A.: WATERFALL: an incremental approach for repairing record-replay tests of web applications, ser. FSE. New York, NY, USA: Association for Computing Machinery, p. 751-762 (2016)
Pal, D., Vain, J.: A systematic approach on modeling refinement and regression testing of real-time distributed systems. IFAC 52(13), 1091–1096 (2019)
Yoo, S., Harman, M.: Regression testing minimization, selection and prioritization: A survey. Softw. Test. Verif. Reliab. 22(2), 67–120 (2012)
Biswas, S., Mall, R., Satpathy, M., Sukumaran, S.: Regression test selection techniques: a survey. Informatica (Slovenia) 35(3), 289–321 (2011)
Engström, E., Runeson, P., Skoglund, M.: A systematic review on regression test selection techniques, 52(1), 14-30 (2010)
Orso, A., Shi, N., Harrold, M.J.: Scaling regression testing to large software systems. SIGSOFT Softw. Eng. Notes 29(6), 241–251 (2004)
Zhang, L., Kim, M., Khurshid, S.: Localizing failure-inducing program edits based on spectrum information, In 2011 27th IEEE International Conference on Software Maintenance (ICSM), pp. 23–32 (2011)
Gligoric, M., Eloussi, L., Marinov, D.: Practical regression test selection with dynamic file dependencies, ser. ISSTA,: New York, NY, USA: Association for Computing. Machinery 2015, 211–222 (2015)
Legunsen, O., Hariri, F., Shi, A., Lu, Y., Zhang, L., Marinov, D.: An extensive study of static regression test selection in modern software evolution, ser. FSE. New York, NY, USA: Association for Computing Machinery, p. 583-594 (2016)
Tools, G.E.: Build in the cloud: How the build system works, http://google-engtools.blogspot.com/2011/08/build-in-cloud-how-build-system-works.html, 2021, retrieved Jan 30, (2021)
Zhang, L.: Hybrid regression test selection, In 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE), pp. 199–209 (2018)
Harrold, M.J., Jones, J. A., Li, T., Liang, D., Orso, A., Pennings, M., Sinha, S., Spoon, S. A., Gujarathi, A.: Regression test selection for java software, In Proceedings of the 16th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, ser. OOPSLA ’01. New York, NY, USA: Association for Computing Machinery, p. 312-326 (2001)
Orso, A., Shi, N., Harrold, M. J.: Scaling regression testing to large software systems, ser. SIGSOFT’04. New York, NY, USA: Association for Computing Machinery, p. 241-251 (2004)
Legunsen, O., Shi, A., Marinov, D.: STARTS:STAtic regression test selection, pp. 949–954 (2017)
Almasri, N., Tahat, L., Korel, B.: Automatically quantifying the impact of a change in systems (journal-first abstract), ser. ASE. New York, NY, USA: Association for Computing Machinery, p. 952 (2018)
Chen, Y., Probert, R. L., Ural, H.: Model-based regression test suite generation using dependence analysis, ser. A-MOST ’07. New York, NY, USA: Association for Computing Machinery, p. 54-62 (2007)
Biswas, S., Mall, R., Satpathy, M., Sukumaran, S.: A model-based regression test selection approach for embedded applications. SIGSOFT Softw. Eng. Notes 34(4), 1–9 (2009)
Panigrahi, C. R., Mall, R.: Model-based regression test case prioritization, In Information Systems, Technology and Management, S. K. Prasad, H. M. Vin, S. Sahni, M. P. Jaiswal, and B. Thipakorn, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 380–385 (2010)
Honfi, D., Molnár, G., Micskei, Z., Majzik, I.: Model-based regression testing of autonomous robots. In: Csöndes, T., Kovács, G., Réthy, G. (eds.) SDL 2017: Model-Driven Engineering for Future Internet, pp. 119–135. Springer International Publishing, Cham (2017)
Biswas, S., Mall, R., Satpathy, M.: A regression test selection technique for embedded software, ACM Trans. Embed. Comput. Syst., 13(3), (2013)
Zech, P., Kalb, P., Felderer, M., Atkinson, C., Breu, R.: Model-based regression testing by OCL. Int. J. Softw. Tools Technol. Transf. 19(1), 115–131 (2017)
Zech, P., Felderer, M., Kalb, P., Breu, R.: A generic platform for model-based regression testing, In Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change, T. Margaria and B. Steffen, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 112–126 (2012)
Pal, D., Vain, J.: Model based approach for testing: distributed real-time systems augmented with online monitors. In: Lupeikiene, A., Vasilecas, O., Dzemyda, G. (eds.) Databases and Information Systems, pp. 142–157. Springer International Publishing, Cham (2018)
Korel, B., Tahat, L. H., Vaysburg, B.: Model based regression test reduction using dependence analysis, in International Conference on Software Maintenance, 2002. Proceedings., pp. 214–223 (2002)
Chen, Y., Probert, R. L., Ural, H.: Regression test suite reduction using extended dependence analysis, ser. SOQUA’07. New York, NY, USA: Association for Computing Machinery, p. 62-69 (2007)
Wu, Ye, Offutt, J.: Maintaining evolving component-based software with UML, In Seventh European Conference on Software Maintenance and Re-engineering, 2003. Proceedings., pp. 133–142 (2003)
Briand, L., Labiche, Y., Soccar, G.: Automating impact analysis and regression test selection based on UML designs, In International Conference on Software Maintenance, 2002. Proceedings., pp. 252–261 (2002)
Farooq, Q.-u.-a., Iqbal, M.Z.Z., Malik, Z. I., Nadeem, A.: An approach for selective state machine based regression testing, ser. A-MOST’07. New York, NY, USA: Association for Computing Machinery, p. 44-52 (2007)
Traon, Y., Jeron, T., Jezequel, J., Morel, P.: Efficient object-oriented integration and regression testing. IEEE Trans. Reliab. 49(1), 12–25 (2000)
Acknowledgements
This work has been supported by Zeligsoft Ltd., Malina Software Corp., Cmind Inc., and the Natural Sciences and Engineering Research Council of Canada (NSERC).
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by Shiva Nejati and Daniel Varro.
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Babaei, M., Dingel, J. Efficient regression testing of distributed real-time reactive systems in the context of model-driven development. Softw Syst Model 22, 1565–1587 (2023). https://doi.org/10.1007/s10270-023-01086-5
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10270-023-01086-5