Changing Software in a Changing World: How to Test in Presence of Variability, Adaptation and Evolution?

Modern software-intensive and pervasive systems need to be able to manage different requirements of variability, adaptation and evolution. The latter are surely related properties, all bringing uncertainty, but covering different aspects and requiring different approaches. Testing of such systems introduces many challenges: variability would require the test of too many configurations and variants well beyond feasibility; adaptation should be based on context-aware testing over many predictable or even unpredictable scenarios; evolution would entail testing a system for which the reference model has become out-of-date. It is evident how current testing approaches are not adequate for such types of systems. We make a brief overview of testing challenges for changing software in a changing world, and hint at some promising approaches, arguing how these would need to be part of a holistic validation approach that can handle uncertainty.

[1]  Holger Giese,et al.  Living with Uncertainty in the Age of Runtime Models , 2014, Models@run.time@Dagstuhl.

[2]  John S. Gourlay A Mathematical Framework for the Investigation of Testing , 1983, IEEE Transactions on Software Engineering.

[3]  Tingting Yu,et al.  SimEvo: Testing Evolving Multi-process Software Systems , 2017, 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[4]  Tsong Yueh Chen,et al.  Metamorphic Testing: A New Approach for Generating Next Test Cases , 2020, ArXiv.

[5]  Paola Inverardi,et al.  Experimenting with dynamic linking with ADA , 1993, Softw. Pract. Exp..

[6]  Sooyong Park,et al.  Dynamic Software Product Lines , 2008, Computer.

[7]  Ladan Tahvildari,et al.  Self-adaptive software: Landscape and research challenges , 2009, TAAS.

[8]  Ada Diaconescu,et al.  The Notion of Self-aware Computing , 2017, Self-Aware Computing Systems.

[9]  Shin Yoo,et al.  Guiding Deep Learning System Testing Using Surprise Adequacy , 2018, 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).

[10]  Mark Harman,et al.  The Oracle Problem in Software Testing: A Survey , 2015, IEEE Transactions on Software Engineering.

[11]  Éric Piel,et al.  Observation-Based Modeling for Model-Based Testing , 2009 .

[12]  Maurice H. ter Beek,et al.  Formal Description of Variability in Product Families , 2011, 2011 15th International Software Product Line Conference.

[13]  Alessandro Orso,et al.  Regression testing in the presence of non-code changes , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[14]  Stefania Gnesi,et al.  Requirement Engineering of Software Product Lines: Extracting Variability Using NLP , 2018, 2018 IEEE 26th International Requirements Engineering Conference (RE).

[15]  Mahsa Varshosaz,et al.  Basic behavioral models for software product lines: Expressiveness and testing pre-orders , 2016, Sci. Comput. Program..

[16]  Zhendong Su,et al.  Testing mined specifications , 2012, SIGSOFT FSE.

[17]  Fabiano Cutigi Ferrari,et al.  Characterisation of Challenges for Testing of Adaptive Systems , 2016, SAST.

[18]  Silvia Regina Vergilio,et al.  Preference based multi-objective algorithms applied to the variability testing of software product lines , 2019, J. Syst. Softw..

[19]  David Garlan,et al.  Software engineering in an uncertain world , 2010, FoSER '10.

[20]  Gunter Saake,et al.  Effective product-line testing using similarity-based product prioritization , 2016, Software & Systems Modeling.

[21]  Maurice H. ter Beek,et al.  On the expressiveness of modal transition systems with variability constraints , 2019, Sci. Comput. Program..

[22]  Alessandro Orso,et al.  Test-Suite Augmentation for Evolving Software , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[23]  Mahsa Varshosaz,et al.  Basic behavioral models for software product lines: Revisited , 2018, Sci. Comput. Program..

[24]  Paola Inverardi,et al.  The Future of Software: Adaptation and Dependability , 2008, ISSSE.

[25]  John D. McGregor,et al.  On strategies for testing software product lines: A systematic literature review , 2014, Inf. Softw. Technol..

[26]  Gail E. Kaiser,et al.  Code relatives: detecting similarly behaving software , 2016, SIGSOFT FSE.

[27]  Tom Mens,et al.  Evolving Software Systems , 2014, Springer Berlin Heidelberg.

[28]  Huai Liu,et al.  Metamorphic Testing , 2018, ACM Comput. Surv..

[29]  Mats Per Erik Heimdahl,et al.  Programs, tests, and oracles: the foundations of testing revisited , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[30]  Danny Weyns,et al.  Variability in Software Systems—A Systematic Literature Review , 2014, IEEE Transactions on Software Engineering.

[31]  Andrea Polini,et al.  SOA Test Governance: Enabling Service Integration Testing across Organization and Technology Borders , 2009, 2009 International Conference on Software Testing, Verification, and Validation Workshops.

[32]  Betty H. C. Cheng,et al.  Automated Generation of Adaptive Test Plans for Self-Adaptive Systems , 2015, 2015 IEEE/ACM 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems.

[33]  Patrick Mäder,et al.  Software traceability: trends and future directions , 2014, FOSE.

[34]  Mehrdad Sabetzadeh,et al.  Testing the Untestable - Model Testing of Complex Software-Intensive Systems , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[35]  Paola Inverardi,et al.  A hybrid approach for resource-based comparison of adaptable Java applications , 2013, Sci. Comput. Program..

[36]  Rogério de Lemos,et al.  Software Engineering for Self-Adaptive Systems: Research Challenges in the Provision of Assurances , 2013, Software Engineering for Self-Adaptive Systems.

[37]  Andrea Polini,et al.  Enhancing Service Federation Trustworthiness through Online Testing , 2012, Computer.

[38]  Tom Mens,et al.  Challenges in software evolution , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).