Abstract
Employing genetic algorithms to generate test data for path coverage has been an important method in software testing. Previous work, however, is suitable mainly for serial programs. Automatic test data generation for path coverage of message-passing parallel programs without non-determinacy is investigated in this study by using co-evolutionary genetic algorithms. This problem is first formulated as a single-objective optimization problem, and then a novel co-evolutionary genetic algorithm is proposed to tackle the formulated optimization problem. This method employs the alternate co-evolution of two kinds of populations to generate test data that meet path coverage. The proposed method is applied to seven parallel programs, and compared with the other three methods. The experimental results show that the proposed method has the best success rate and the least number of evaluated individuals and time consumption.
Similar content being viewed by others
References
Ahmed, M.A., Hermadi, I.: GA-based multiple paths test data generator. Comput. Oper. Res. 35(10), 3107–3127 (2008)
Alba, E., Chicano, F., Ferreira, M., Gomez-Pulido, J.: Finding deadlocks in large concurrent java programs using genetic algorithms. Proceedings of 10th Annual Conference on Genetic and Evolutionary Computation. ACM, pp. 1735–1742 (2008)
Arcuri, A., Yao, X.: Coevolving programs and unit tests from their specification. Proceedings of 22nd IEEE/ACM International Conference on Automated Software Engineering. ACM, pp. 397–400 (2007)
Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. Proceedings of IEEE Congress on Evolutionary Computation, pp. 162–168 (2008)
Arcuri, A., Yao, X.: Co-evolutionary automatic programming for software development. Inf. Sci. 259, 412–432 (2014)
Arcuri, A., White, D.R., Clark, J., Yao, X.: Multi-Objective Improvement of Software Using Co-evolution and Smart Seeding. Simulated Evolution and Learning, pp. 61–70. Springer, Berlin (2008)
Bueno, P., Jino, M.: Automatic test data generation for program path using genetic algorithms. Int. J. Softw. Eng. Knowl. Eng. 12(6), 691–709 (2002)
Chen, G.L.: Parallel Computing: Structures, Algorithms, Programming, 1st edn. Higher Education Press, Beijing (2003)
Chen, G.L., An, H., Chen, L., Zheng, Q., Shan, J.L.: Parallel Algorithm Practice, pp. 59–60. Higher Education Press, Beijing (2004)
Chen, T.Y., Kuo, F.C., Merkel, R.G.: Adaptive random testing: the ART of test case diversity. J. Syst. Softw. 83(1), 60–66 (2010)
Ding, Z., Zhang, K., Hu, J.: Test case generation of concurrent programs based on event graph. Proceedings of 23rd International Technical Conference on Circuits/Systems, Computers and Communications, pp. 1117–1120 (2008)
Dominguez-Jimenez, J., Estero-Botaro, A., Garcia-Domnguez, A., Medina-Bulo, I.: Evolutionary mutation testing. Inf. Softw. Technol. 53(10), 1108–1123 (2011)
Edelstein, O., Farchi, E., Nir, Y., Ratsaby, G., Ur, S.: Multithreaded java program test generation. IBM Syst. J. 41(1), 111–125 (2002)
Eytani, Y.: Concurrent Java test generation as a search problem. Electron. Notes Theor. Comput. Sci. 144(4), 57–72 (2006)
Ferguson, R., Korel, B.: Generating test data for distributed software using the chaining approach. Inf. Softw. Technol. 38(5), 343–353 (1996)
Geist, G.A., Kohl, J.A., Papadopoulos, P.M., Scott, S.L.: Beyond PVM 3.4: what we’ve learned, what’s next, and why. Lect. Notes Comput. Sci. 1332, 116–126 (1997)
Godefroid, P., Khurshid, S.: Exploring very large state spaces using genetic algorithms. Int. J. Softw. Tools Technol. Transf. 6(2), 117–127 (2004)
Gong, D.W., Yao, X.J.: Automatic detection of infeasible paths in software testing. IET Softw. 4(5), 361–370 (2010)
Gong, D.W., Zhang, Y.: Novel evolutionary generation approach of test data for multiple paths. Acta Electron. Sin. 38(6), 1299–1304 (2010)
Gong, D.W., Zhang, W.Q., Yao, X.J.: Evolutionary generation of test data for many paths coverage based on grouping. J. Syst. Softw. 84(12), 2222–2233 (2011)
Gupta, A.: Verifying concurrent programs: tutorial talk. Proceedings of the Formal Methods in Computer-Aided Design, pp. 1–1 (2011)
Gupta, N., Mathur, A.P., Soffa, M.L.: Automated test data generation using an iterative relaxation method. ACM SIGSOFT Softw. Eng. Notes 23, 231–244 (1998)
Hruba, V., Krena, B., Letko, Z., Ur, S., Vojnar, T.: Testing of Concurrent Programs Using Genetic Algorithms,Search Based Software Engineering. Springer, Berlin (2012)
Husband, P., Mill, F.: Simulated co-evolution as the mechanism for emergent planning and scheduling. Proceedings of 4th International Conference on Genetic Algorithms, pp. 264–270 (1991)
Katayama, T., Furukawa, Z., Ushijima, K.: A test-case generation method for concurrent programs including task-types. Proceedings of Joint Asia Pacific Software Engineering Conference and International Computer Science Conference, pp. 485–494 (1997)
Korel, B.: Automated software test data generation. IEEE Trans. Softw. Eng. 16(8), 870–879 (1990)
Krammer, B., Resch, M.: Correctness checking of MPI one-sided communication using Marmot. Lect. Notes Comput. Sci. 4192, 105–114 (2006)
Krawczyk, H., Wiszniewski, B.: Classification of Software Defects in Parallel Programs. Technical Report 2, Faculty of Electronics, Technical University of Gdansk, Poland (1994)
Krena, B., Letko, Z., Vojnar, T., Ur, S.: A platform for search-based testing of concurrent software. Proceedings of 8th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging, ACM, pp. 48–58 (2010)
Lei, Y., Tai, K.C.: Efficient reachability testing of asynchronous message-passing programs. Proceedings of the 8th IEEE international Conference on Engineering of Complex Computer Systems, pp. 34–44. Greenbelt, MD, USA (2002)
McMinn, P., Harman, M., Binkley, D., Tonella, P.: The species per path approach to search-based test data generation. Proceedings of International Symposium on Software Testing and Analysis, pp. 13–24. ITCirst, Trento, Italy (2006)
Meuleau, N., Lattaud, C.: The artificial evolution of cooperation. Artif. Evol. 1063, 159–180 (1995)
Oliveira, A.L., Camilo-Junior, C.G., Vincenzi, A.M.R.: A coevolutionary algorithm to automatic test case selection and mutant in Mutation Testing. Proceedings of IEEE Congress on Evolutionary Computation, pp. 829–836 (2013)
Potter, M.A.: The Design and Analysis of a Computational Model of Cooperative Co-evolution. George Mason University, Fairfax (1997)
Ren, J., Harman, M., Penta, M.D.: Cooperative co-evolutionary optimization of software project staff assignments and job scheduling. Lect. Notes Comput. Sci. 6956, 127–141 (2011)
Sair, M., Otto, S., Steven, H., Walker, D., Araponga, J.: MPI: The Complete Reference. MIT Press, Cambridge, MA, Technical Report (1996)
Shan, J.H., Jiang, Y., Sun, P.: Research progress of software testing. Acta Scient. Nat. Univ. Pekin. 41(1), 134–145 (2005)
SIR, A Repository of Software-Related Artifacts Meant to Support Rigorous Controlled Experimentation. Available from: http://sir.unl.edu/portal/index.html (2011)
SKaMPI: http://liinwww.ira.uka.de/skampi/ (2013)
Souza, S.R.S., Souza, P.S.L., Machado, M.C.C.: Using coverage and reachability testing to improve concurrent program testing quality. Proceedings of 23rd International Conference on Software Engineering and Knowledge Engineering, pp. 207–212 (2011)
Souza, P.S.L., Souza, S.R.S., Zaluska, E.: Structural testing for message-passing concurrent programs an extended test model. Concurr. Comput. Pract. Exp. 25(18), 149–158 (2013)
Souza, S.R.S., Vergilio, S.R., Souza, P.S.L.: Structural testing criteria for message-passing parallel programs. Concurr. Comput. Pract. Exp. 20(16), 1893–1916 (2008)
Steenbuck, S., Fraser, G.: Generating unit tests for concurrent classes. Proceedings of 6th International Conference on Software Testing, Verification and Validation (2013)
Vakkalanka, S., DeLisi, M., Gopalakrishnan, G., Kirby, R.M., Thakur, R., Gropp, W.: Implementing efficient dynamic formal verification methods for MPI programs. Lect. Notes Comput. Sci. 5205, 248–256 (2008)
Vetter, J.S., Supinski, B.R.: Dynamic software testing of MPI applications with umpire. Proceedings of Supercomputing ACM/IEEE Conference, Dallas, Texas, pp. 70–79 (2000)
Wang, Z.Y., Liu, C.N.: The application of interval computation in software testing. J. Softw. 9(6), 438–443 (1998)
Watkins, A.: The automatic generation of test data using genetic algorithms. Proceedings of 4th Software Quality Conference, pp. 300–309 (1995)
Wiegand R. P., Liles W. C., De Jong K. A.: An empirical analysis of collaboration methods in cooperative coevolutionary algorithms. Proceedings of the Genetic and Evolutionary Computation Conference (GECCO), pp. 1235–1245 (2001)
Wohlin, C., Runeson, P., HMost, M., Ohlsson, C., Regnell, B., Wesslen, A.: Experimentation in Software Engineering: An Introduction. Kluwer Academic Publishers, Norwell (2000)
Wong, W.E., Lei, Y., Ma, X.: Effective generation of test sequences for structural testing of concurrent programs. Proceedings of 10th IEEE International Conference on Engineering of Complex Computer Systems, p. 539–548 (2005)
Xanthakis, S., Ellis, C., Skourlas, C.: Application of genetic algorithms to software testing. Proceedings of 5th International Conference on Software Engineering and Its Applications, pp. 625–636 (1992)
Xie, X.Y., Xu, B.W., Shi, L., Nie, C.H.: Genetic test case generation for path-oriented testing. J. Softw. 20(12), 3117–3136 (2009)
Yang, R.D., Chung, C.G.: A path analysis approach to concurrent program testing. Inf. Softw. Technol. 34(1), 43–56 (1992)
Yang, C.S.D., Souter, A.L., Pollock, L.L.: All-du-path coverage for parallel programs. ACM SIGSOFT Softw. Eng. Notes 23(2), 153–162 (1998)
Acknowledgments
This work is jointly supported by National Natural Science Foundation of China with Grant No. 61375067 and 61203304, Natural Science Foundation of Jiangsu Province with Grant No. BK2012566, and Fundamental Research Funds for Central Universities with Grant No. 2012LWB72 and 2012QNA58. Thank to Dr. Edward C. Mignot, Shandong University, for linguistic advice.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Tian, T., Gong, D. Test data generation for path coverage of message-passing parallel programs based on co-evolutionary genetic algorithms. Autom Softw Eng 23, 469–500 (2016). https://doi.org/10.1007/s10515-014-0173-z
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10515-014-0173-z