Abstract
Software testing is an efficient way to guarantee the reliability and accuracy of parallel programs. Communication plays a substantial role in parallel program testing. The huge scale of communication within parallel programs poses a great challenge to coverage testing. How to reasonably select the communication to be tested and effectively generate test data to meet the requirements of coverage is a pressing problem. In this paper, a critical communication testing method based on branch transformation is proposed, which can reasonably select part of program communication and generate test data. To be specific, firstly, this paper analyzes the features which easily lead to defects in communication, and then proposes the evaluation method of critical communication based on the above features. Next, we select the critical communication and convert the communication coverage to the coverage of the branch where the communication statement resides. Finally, a method based on genetic algorithm is used to solve the communication coverage problem in different scenarios. The proposed method is applied to the testing of several representative parallel programs. Experimental results show that compared with other methods, this proposed method can effectively reduce the quantity of communication, significantly improve the coverage rate of communication coverage testing and increase the efficiency of test data generation.
Similar content being viewed by others
Data availability
Data sharing not applicable to this article as no datasets were generated or analysed during the current study.
References
Souza SRS, Vergilio SR, Souza PSL, Simao AS, Hausen AC (2008) Structural testing criteria for message-passing parallel programs. Concurr Comput Pract Exp 20(16):1893–1916. https://doi.org/10.1002/cpe.1297
Diaz SMD, Souza PSL, Souza SRS (2021) Structural testing for communication events into loops of message-passing parallel programs. Concurr Comput Pract Exp 33(18):6082. https://doi.org/10.1002/cpe.6082
Rodrigues DS, Delamaro ME, Corrêa CG, Nunes FLS (2018) Using genetic algorithms in test data generation: a critical systematic mapping. ACM Comput Surv 51(2):1–23. https://doi.org/10.1145/3182659
Derezińska A, Rudnik M (2017) Evaluation of mutant sampling criteria in object-oriented mutation testing. In: 2017 Federated Conference on Computer Science and Information Systems (FedCSIS), pp 1315–1324. https://doi.org/10.15439/2017F375
Zhang C, Tian T, Yang XT, Gong DW (2021) Communication coverage reduction method of parallel programs based on dominant relation. J Comput Appl 41(6):1741–1747. https://doi.org/10.11772/j.issn.1001-9081.2020091369
Sun CA, Fu A, Guo XL, Chen TY (2022) ReMuSSE: a redundant mutant identification technique based on selective symbolic execution. IEEE Trans Reliab 71(1):415–428. https://doi.org/10.1109/TR.2020.3011423
Garg A, Ojdanic M, Degiovanni R, Chekam TT, Papadakis M, Le Traon Y (2023) Cerebro: static subsuming mutant selection. IEEE Trans Software Eng 49(1):24–43. https://doi.org/10.1109/TSE.2022.3140510
Gao JX, Lumetta SS (2018) Loop path reduction by state pruning. In: 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE), pp 838–843 https://doi.org/10.1145/3238147.3240731
Kaufman SJ, Featherman R, Alvin J, Kurtz B, Ammann P, Just R (2022) Prioritizing mutants to guide mutation testing. In: Proceedings of the 44th International Conference on Software Engineering, pp 1743–1754. Association for Computing Machinery, New York, NY, USA (2022) https://doi.org/10.1145/3510003.3510187
Jammalamadaka K, Parveen N (2022) Equivalent mutant identification using hybrid wavelet convolutional rain optimization. Softw Pract Exp 52(2):576–593. https://doi.org/10.1002/spe.3038
Chin KC, Tsay RS, Wu HI (2020) A heuristic region-based concurrency bug testing approach. In: 2020 IEEE International Conference on Parallel & Distributed Processing with Applications, Big Data & Cloud Computing, Sustainable Computing & Communications, Social Computing & Networking (ISPA/BDCloud/SocialCom/SustainCom), pp 1126–1135 (2020). IEEE
Bosch J, Lvarez C, Jiménez-González D, Martorell X, Ayguadé E (2020) Asynchronous runtime with distributed manager for task-based programming models. Parallel Comput. https://doi.org/10.1016/j.parco.2020.102664
Shen YY, Peng MM, Wang SL, Wu Q (2021) Towards parallelism detection of sequential programs with graph neural network. Futur Gener Comput Syst 125:515–525. https://doi.org/10.1016/j.future.2021.07.001
Wei HM, Gao J, Qing P, Yu K, Fang YF, Li ML (2020) MPIRCDD: a framework for MPI runtime communication deadlock detection. J Comput Sci Technol 35(2):395–411. https://doi.org/10.1007/s11390-020-9701-4
Ouyang K, Si M, Hori A, Chen ZZ, Balaji P (2021) Daps: a dynamic asynchronous progress stealing model for MPI communication. In: 2021 IEEE International Conference on Cluster Computing (CLUSTER), pp 516–527 https://doi.org/10.1109/Cluster48925.2021.00027
Alghamdi A, Alghamdi AM, Eassa FE, Khemakhem MA (2020) ACC_TEST: hybrid testing techniques for mpi-based programs. IEEE Access 8:91488–91500. https://doi.org/10.1109/ACCESS.2020.2994172
Wang Z, Xu C, Agrawal K, Li J (2022) Adaptive scheduling of multiprogrammed dynamic-multithreading applications. J Parallel Distrib Comput 162:76–88. https://doi.org/10.1016/j.jpdc.2022.01.009
Miwa S, Laguna I, Schultz M (2020) PredCom: a predictive approach to collecting approximated communication traces. IEEE Trans Parallel Distrib Syst 32(1):45–58. https://doi.org/10.1109/TPDS.2020.3011121
Esnaashari M, Damia AH (2021) Automation of software test data generation using genetic algorithm and reinforcement learning. Expert Syst Appl 183(5):115446. https://doi.org/10.1016/j.eswa.2021.115446
Sun BC, Wang JX, Gong DW, Tian T (2019) Scheduling sequence selection for generating test data to cover paths of MPI programs. Inf Softw Technol 114:190–203. https://doi.org/10.1016/j.infsof.2019.07.002
Wang W, Wu S, Li Z, Zhao R (2023) Parallel evolutionary test case generation for web applications. Inf Softw Technol 155:107113. https://doi.org/10.1016/j.infsof.2022.107113
Jaffari A, Yoo CJ, Lee J (2020) Automatic test data generation using the activity diagram and search-based technique. Appl Sci 10(10):3397. https://doi.org/10.3390/app10103397
Mustafa S, Mohamad R, Deris S (2020) Optimal path test data generation based on hybrid negative selection algorithm and genetic algorithm. PLoS One. https://doi.org/10.1371/journal.pone.0242812
Wang R, Sato Y, Liu SY (2021) Mutated specification-based test data generation with a genetic algorithm. Mathematics 9(4):331. https://doi.org/10.3390/math9040331
Bansal A, Jain A, Anand A, Annk S (2021) Proposal of iterative genetic algorithm for test suite generation. Int J Inf Syst Modeling Des (IJISMD) 12(1):111–130. https://doi.org/10.4018/IJISMD.2021010106
Sahoo RK, Derbali M, Jerbi H, Thang DV, Kumar PP, Sahoo S (2021) Test case generation from uml-diagrams using genetic algorithm. Cmc Tech Sci Press 67(2):2321–2336. https://doi.org/10.32604/CMC.2021.013014
Block RJ, Sarukkai S, Mehra P (1995) Automated performance prediction of message-passing parallel programs. In: Proceedings of the 1995 ACM/IEEE Conference on Supercomputing, p 31
MPI Forum. https://www.mpi-forum.org/
Ramirez A, Romero JR, Simons C (2018) A systematic review of interaction in search-based software engineering. IEEE Trans Softw Eng 45(8):760–781. https://doi.org/10.1109/TSE.2018.2803055
Rahmanian M, Nassiri R, Mohsenzadeh M, Ravanmehr R (2023) Test case generation for enterprise business services based on enterprise architecture design. J Supercomput 79(2):1877–1907. https://doi.org/10.1007/s11227-022-04742-7
McMinn P (2004) Search-based software test data generation: a survey. Softw Test Verif Reliab 14(2):105–156. https://doi.org/10.1002/stvr.294
Gupta A, Jalote P (2006) An experimental comparison of the effectiveness of control flow based testing approaches on seeded faults. IEEE Trans Softw Eng 15(8):977–993. https://doi.org/10.1007/11691372_24
Wang XJ, Gan LS, Liu SL (2020) Research on intelligence analysis technology of financial industry data based on genetic algorithm. J Supercomput 76:3391–3401. https://doi.org/10.1007/s11227-018-2584-2
Liao MX, Fan ZH (2008) Deadlock detection in basic models of mpi synchronization communication programs. ACTA Electonica Sinica 36(2):402. https://doi.org/10.1109/ROSE.2011.6058539
Gong DW, Yao XJ (2010) Automatic detection of infeasible paths in software testing. IET Softw 4(5):361–370. https://doi.org/10.1049/iet-sen.2009.0092
Fu X, Chen Z, Zhang Y, Huang C, Dong W, Wang J (2015) MPISE: symbolic execution of MPI programs. In: Proceedings of the IEEE 16th International Symposium on High Assurance Systems Engineering (HASE), pp 181–188 https://doi.org/10.1109/HASE.2015.35
Gong DW, Zhang C, Tian T, Li Z (2016) Reducing scheduling sequences of message-passing parallel programs. Inf Softw Technol 80:217–230. https://doi.org/10.1016/j.infsof.2016.09.003
Gong DW, Pan F, Tian T, Yang S, Meng FL (2020) A feedback-directed method of evolutionary test data generation for parallel programs. Inf Softw Technol 124(2):106138. https://doi.org/10.1016/j.infsof.2020.106318
MPI Exercise. https://computing.llnl.gov/tutorials/mpi/
CORAL benchmarks. https://asc.llnl.gov/coral-2-benchmarks
Sun BC, Gong DW, Tian T, Yao XJ (2020) Integrating an ensemble surrogate model’s estimation into test data generation. IEEE Trans Softw Eng 48(4):1336–1350. https://doi.org/10.1109/TSE.2020.3019406
Gu H, Zhang J, Chen M, Wei T, Lei L, Xie F (2020) Specification-driven conformance checking for virtual/silicon devices using mutation testing. IEEE Trans Comput 70(3):400–413. https://doi.org/10.1109/TC.2020.2988906
Silva RA, Souza SRS, Souza PSL (2012) Mutation operators for concurrent programs in MPI. In: Proceedings of the Latin American Test Workshop-Latw, pp 1–6
Funding
This article is jointly supported by Natural Science Foundation of Shandong Province, China with Grant No. ZR2020MF084, National Natural Science Foundation of China with Grant Nos. 61503220 and 61773384.
Author information
Authors and Affiliations
Contributions
TT contributed significantly to the conception of the study; AW performed the experiment and wrote the manuscript; XY performed the result analyses; DG and TH contributed significantly to analysis and manuscript preparation; XY helped perform the analysis with constructive discussions.
Corresponding author
Ethics declarations
Conflict of interest
No potential competing interests were reported by the authors.
Ethical approval
Ethical Approval not applicable to this article.
Additional information
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
Tian, T., Wang, A., Yang, X. et al. Parallel program testing based on critical communication and branch transformation. J Supercomput 80, 519–548 (2024). https://doi.org/10.1007/s11227-023-05460-4
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-023-05460-4