Advertisement

Locating and Correcting Software Faults in Executable Code Slices via Evolutionary Mutation Testing

  • Pantelis Stylianos Yiasemis
  • Andreas S. Andreou
Conference paper
Part of the Lecture Notes in Business Information Processing book series (LNBIP, volume 141)

Abstract

Software testing is an important phase of software development that helps eliminating the possibility of project failure. As software systems get more complicated and larger in size, testing needs to constantly evolve and provide more “sophisticated” techniques, like automatic, self-adaptive mutation testing, targeting at improving the efficiency and effectiveness of the testing phase by handling the increased complexity that leads to increased demands in time and effort. Mutation testing is the procedure of applying a series of operators on correctly functioning programs so as to induce “faults” that correspond to real, common programming errors and then assess the ability of a set of test cases to reveal those errors. We introduce a novel approach for identifying and correcting faults in Java source code with the use of code slicing, mutation testing and Genetic Algorithms. Three different categories of experiments are used to assess the effectiveness of the proposed solution, demonstrating its applicability on a variety of programs and type of errors. The results are quite encouraging suggesting that the approach is able to dynamically detect faults and propose the appropriate corrections.

Keywords

Mutation testing Fault localization and correction Genetic algorithms 

References

  1. 1.
    Patton, R.: Software Testing, 2nd edn. Sams Publishing, Indianapolis (2006)Google Scholar
  2. 2.
    Myers, G.J.: The Art of Software Testing. Wiley-Interscience, New York (1979)Google Scholar
  3. 3.
    Weiser, M.D.: Program slices: formal psychological and practical investigations of an automatic abstraction method. Ph.D. thesis, University of Michigan, USA (1979)Google Scholar
  4. 4.
    Reps, T., Bricker, T.: Illustrating interference in interfering versions of programs. In: Proceedings of the Second International Workshop on Software Configuration Management (1989)Google Scholar
  5. 5.
    Agrawal, H., Horgan, J.R., London, S., Wong, W.E.: Fault localization using execution slices and dataflow tests. In: Sixth International Symposium on Software Reliability Engineering, vol. 24(27), pp. 143–151 (1995)Google Scholar
  6. 6.
    Agrawal, H., Horgan, J.R.: Dynamic program slicing. In: ACM SIGPLAN Conference on Programming Language Design and Implementation, White Plains, New York, U.S.A., pp. 246–256, ACM Press (1990)Google Scholar
  7. 7.
    Black, S., Counsell, S., Hall, T., Wernick, P.: Using program slicing to identify faults in software. In: Dagstuhl, Seminar Nº, vol. 05451 (2005)Google Scholar
  8. 8.
    Hamlet, R.G.: Testing programs with the aid of a compiler. IEEE Trans. Softw. Eng. 3(4), 279–290 (1977)CrossRefGoogle Scholar
  9. 9.
    DeMillo, R.A., Lipton, R.J., Sayward, F.G.: Hints on test data selection: help for the practicing programmer. IEEE Comput. 11(4), 34–41 (1978)CrossRefGoogle Scholar
  10. 10.
    Harman, M., Jia, Y., Langdon, W.B.: Strong higher order mutation-base test data generation. In: ESEC/FSE’11, Szeged, Hungary, 5–9 Sept 2011Google Scholar
  11. 11.
    Nica, M., Nica, S., Wotawa, F.: On the use of mutations and testing for debugging. Softw.-Pract. Exp. (2012) (Article published online)Google Scholar
  12. 12.
    Goldberg, D.E.: Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley, Upper Saddle River (1989)Google Scholar
  13. 13.
    Jiang, T., Gold, N., Harman, M., Li, Z.: Locating dependence structures using search based slicing. J. Inf. Softw. Technol. 50(12), 1189–1209 (2008)CrossRefGoogle Scholar
  14. 14.
    Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. In: IEEE Congress on Evolutionary Computation IEEE World Congress on Computational Intelligence, pp. 162–168 (2008)Google Scholar
  15. 15.
    Weimer, W., Forrest, S., Le Goues, C., Nguyen, T.: Automatic program repair with evolutionary computation. Commun. ACM Res. Highlight 53(5), 109–116 (2010)CrossRefGoogle Scholar
  16. 16.
    Offutt, A.J.: The coupling effect: fact or fiction. In: ACM SIGSOFT ‘89—Third symposium on Software Testing, Analysis, and Verification. ACM, New York (1989)Google Scholar
  17. 17.
    Fraser, G., Zeller, A.: Generating parameterized unit tests. In: International Symposium on Software Testing and Analysis (ISSTA’11), Toronto, Canada, 17–21 July 2011Google Scholar
  18. 18.
    Offutt, A.J., Untch, R.H.: Mutation 2000: uniting the orthogonal. In: 1st Workshop on Mutation Analysis (MUTATION’00), San Jose, California, pp. 34–44 (2001)Google Scholar
  19. 19.
    King, K.N., Offutt, J.: A Fortran language system for mutation-based software testing. Softw. Pract. Exp. 21(7), 686–718 (1991)CrossRefGoogle Scholar
  20. 20.
    Binkley, D., Danicic, S., Gyimothy, T., Harman, M., Kiss, A., Korel, B.: Theoretical foundations of dynamic program slicing. Theor. Comput. Sci. 360, 23–41 (2006)Google Scholar
  21. 21.
    Offutt, J., Ma, Y.S., Kwon, Y.R.: MuJava: an automated class mutation system. Softw. Test. Verif. Reliab. 15, 97–133 (2005)CrossRefGoogle Scholar
  22. 22.
    Ma, Y.S., Offutt, J.: Description of method-level mutation operators for Java. (2005) http://cs.gmu.edu/~offutt/mujava/mutopsMethod.pdf
  23. 23.
    Wang, T., Roychoudhury, A.: Using compressed bytecode traces for slicing Java programs. In: ACM/IEEE International Conference on Software Engineering (ICSE), pp. 512–521 (2004)Google Scholar
  24. 24.
    DeYong, J.: Program slicing for Java 1.6. Master Thesis, Eindhoven University of Technology, Eindhoven, Holland (2011)Google Scholar
  25. 25.
    Yiasemis, P., Andreou, A.: Dynamic localisation and automatic correction of software faults using evolutionary mutation testing. In: ICEIS 14th International Conference on Enterprise Information Systems, Wroclaw, Poland (2012)Google Scholar
  26. 26.
    Nica, S., Ramler, R., Wotawa, F.: Is mutation testing scalable for real-world software projects? In: VALID Third International Conference on Advances in System Testing and Validation Lifecycle, Barcelona, Spain (2011) Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Pantelis Stylianos Yiasemis
    • 1
  • Andreas S. Andreou
    • 1
  1. 1.Department of Computer Engineering and InformaticsCyprus University of TechnologyLimassolCyprus

Personalised recommendations