Automated Software Engineering

, Volume 23, Issue 3, pp 469–500 | Cite as

Test data generation for path coverage of message-passing parallel programs based on co-evolutionary genetic algorithms

  • Tian Tian
  • Dunwei GongEmail author


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.


Software testing Test data Path coverage Parallel program Co-evolutionary genetic algorithm 



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.


  1. Ahmed, M.A., Hermadi, I.: GA-based multiple paths test data generator. Comput. Oper. Res. 35(10), 3107–3127 (2008)CrossRefGoogle Scholar
  2. 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)Google Scholar
  3. 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)Google Scholar
  4. 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)Google Scholar
  5. Arcuri, A., Yao, X.: Co-evolutionary automatic programming for software development. Inf. Sci. 259, 412–432 (2014)CrossRefGoogle Scholar
  6. 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)Google Scholar
  7. 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)CrossRefGoogle Scholar
  8. Chen, G.L.: Parallel Computing: Structures, Algorithms, Programming, 1st edn. Higher Education Press, Beijing (2003)Google Scholar
  9. Chen, G.L., An, H., Chen, L., Zheng, Q., Shan, J.L.: Parallel Algorithm Practice, pp. 59–60. Higher Education Press, Beijing (2004)Google Scholar
  10. 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)CrossRefGoogle Scholar
  11. 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)Google Scholar
  12. Dominguez-Jimenez, J., Estero-Botaro, A., Garcia-Domnguez, A., Medina-Bulo, I.: Evolutionary mutation testing. Inf. Softw. Technol. 53(10), 1108–1123 (2011)CrossRefGoogle Scholar
  13. Edelstein, O., Farchi, E., Nir, Y., Ratsaby, G., Ur, S.: Multithreaded java program test generation. IBM Syst. J. 41(1), 111–125 (2002)CrossRefGoogle Scholar
  14. Eytani, Y.: Concurrent Java test generation as a search problem. Electron. Notes Theor. Comput. Sci. 144(4), 57–72 (2006)CrossRefGoogle Scholar
  15. Ferguson, R., Korel, B.: Generating test data for distributed software using the chaining approach. Inf. Softw. Technol. 38(5), 343–353 (1996)CrossRefGoogle Scholar
  16. 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)CrossRefGoogle Scholar
  17. Godefroid, P., Khurshid, S.: Exploring very large state spaces using genetic algorithms. Int. J. Softw. Tools Technol. Transf. 6(2), 117–127 (2004)CrossRefzbMATHGoogle Scholar
  18. Gong, D.W., Yao, X.J.: Automatic detection of infeasible paths in software testing. IET Softw. 4(5), 361–370 (2010)CrossRefGoogle Scholar
  19. Gong, D.W., Zhang, Y.: Novel evolutionary generation approach of test data for multiple paths. Acta Electron. Sin. 38(6), 1299–1304 (2010)MathSciNetGoogle Scholar
  20. 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)CrossRefGoogle Scholar
  21. Gupta, A.: Verifying concurrent programs: tutorial talk. Proceedings of the Formal Methods in Computer-Aided Design, pp. 1–1 (2011)Google Scholar
  22. 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)CrossRefGoogle Scholar
  23. Hruba, V., Krena, B., Letko, Z., Ur, S., Vojnar, T.: Testing of Concurrent Programs Using Genetic Algorithms,Search Based Software Engineering. Springer, Berlin (2012)Google Scholar
  24. 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)Google Scholar
  25. 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)Google Scholar
  26. Korel, B.: Automated software test data generation. IEEE Trans. Softw. Eng. 16(8), 870–879 (1990)CrossRefGoogle Scholar
  27. Krammer, B., Resch, M.: Correctness checking of MPI one-sided communication using Marmot. Lect. Notes Comput. Sci. 4192, 105–114 (2006)CrossRefGoogle Scholar
  28. Krawczyk, H., Wiszniewski, B.: Classification of Software Defects in Parallel Programs. Technical Report 2, Faculty of Electronics, Technical University of Gdansk, Poland (1994)Google Scholar
  29. 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)Google Scholar
  30. 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)Google Scholar
  31. 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)Google Scholar
  32. Meuleau, N., Lattaud, C.: The artificial evolution of cooperation. Artif. Evol. 1063, 159–180 (1995)CrossRefGoogle Scholar
  33. 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)Google Scholar
  34. Potter, M.A.: The Design and Analysis of a Computational Model of Cooperative Co-evolution. George Mason University, Fairfax (1997)Google Scholar
  35. 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)CrossRefGoogle Scholar
  36. Sair, M., Otto, S., Steven, H., Walker, D., Araponga, J.: MPI: The Complete Reference. MIT Press, Cambridge, MA, Technical Report (1996)Google Scholar
  37. Shan, J.H., Jiang, Y., Sun, P.: Research progress of software testing. Acta Scient. Nat. Univ. Pekin. 41(1), 134–145 (2005)Google Scholar
  38. SIR, A Repository of Software-Related Artifacts Meant to Support Rigorous Controlled Experimentation. Available from: (2011)
  39. 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)Google Scholar
  40. 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)Google Scholar
  41. 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)CrossRefGoogle Scholar
  42. Steenbuck, S., Fraser, G.: Generating unit tests for concurrent classes. Proceedings of 6th International Conference on Software Testing, Verification and Validation (2013)Google Scholar
  43. 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)CrossRefGoogle Scholar
  44. 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)Google Scholar
  45. Wang, Z.Y., Liu, C.N.: The application of interval computation in software testing. J. Softw. 9(6), 438–443 (1998)Google Scholar
  46. Watkins, A.: The automatic generation of test data using genetic algorithms. Proceedings of 4th Software Quality Conference, pp. 300–309 (1995)Google Scholar
  47. 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)Google Scholar
  48. Wohlin, C., Runeson, P., HMost, M., Ohlsson, C., Regnell, B., Wesslen, A.: Experimentation in Software Engineering: An Introduction. Kluwer Academic Publishers, Norwell (2000)CrossRefzbMATHGoogle Scholar
  49. 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)Google Scholar
  50. 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)Google Scholar
  51. 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)CrossRefGoogle Scholar
  52. Yang, R.D., Chung, C.G.: A path analysis approach to concurrent program testing. Inf. Softw. Technol. 34(1), 43–56 (1992)MathSciNetCrossRefGoogle Scholar
  53. 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)CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2014

Authors and Affiliations

  1. 1.School of Information and Electrical EngineeringChina University of Mining and TechnologyXuzhouPeople’s Republic of China
  2. 2.School of Electrical Engineering and Information EngineeringLanzhou University of TechnologyLanzhouPeople’s Republic of China

Personalised recommendations