DOI QR코드

DOI QR Code

Mutagen4J: 효과적인 Java 프로그램 변이 생성 도구

Mutagen4J: Effective Mutant Generation Tool for Java Programs

  • 투고 : 2016.03.04
  • 심사 : 2016.06.19
  • 발행 : 2016.09.15

초록

프로그램 변이 분석은 분석대상 프로그램의 코드를 변형한 다양한 프로그램 변이를 활용해 분석대상 프로그램의 특성을 분석하는 기법이다. 효과적인 변이 분석을 위해서는 분석대상 프로그램의 동작을 다양하게 변화시키는 유용한 변형 연산자의 사용이 필수적이다. 현재까지 Java 프로그램을 대상으로 제안된 변이 생성 도구들은 변형 연산자의 종류가 제한적이거나, 최근 Java 언어 요소로 작성된 분석대상 프로그램의 경우 올바른 변이 생성을 지원하지 못하는 한계가 있다. 본 논문은 Java 프로그램을 위한 새로운 변이 생성 도구 Mutagen4J를 소개한다. Mutagen4J는 기존 연구를 통해 유용한 것으로 알려진 프로그램 변형 연산자를 추가로 지원하며, 최근 Java 언어요소를 처리함으로써, Java 프로그램에 대한 효과적인 변이 분석을 지원한다. 기존 Java 프로그램 변이 생성 도구와 비교 실험을 수행한 결과, Mutagen4J이 기존 도구보다 유용한 변이를 평균 2.3배 생성하였다.

Mutation analysis (or software mutation analysis) generates variants of a target program by injecting systematic code changes to the target program, and utilizes the variants to analyze the target program behaviors. Effective mutation analyses require adequate mutation operators that generate diverse variants for use in the analysis. However, the current mutation analysis tools for Java programs have limitations, since they support only limited types of mutation operators and do not support recent language features such as Java8. In this study, we present Mutagen4J, a new mutant generation tool for Java programs. Mutagen4J additionally supports mutation operators recently shown to generate various mutants and fully supports recent Java language features. The experimental results show that Mutagen4J generates useful mutants for analyses 2.3 times more than the existing Java mutation tools used for the study.

키워드

과제정보

연구 과제 주관 기관 : 한국연구재단, 정보통신기술진흥센터

참고문헌

  1. J. H. Andrews, L. C. Briand, Y. Labiche, A. S. Namin, "Using Mutation Analysis for Assessing and Comparing Test Coverage Criteria," IEEE Transactions on Software Engineering, 32(8), pp. 608-624, 2006. https://doi.org/10.1109/TSE.2006.83
  2. R. A. DeMillo, R. J. Lipton, F. G. Sayward, "Program mutation: a new approach to program testing," Infotech State of the Art Report on Software Testing 2, pp. 107-126, 1979.
  3. G. Fraser, A. Zeller, "Mutation-Driven Generation of Unit Tests and Oracles," IEEE Transactions on Software Engineering, Vol. 38, No. 2, pp. 278-292, 2012. https://doi.org/10.1109/TSE.2011.93
  4. S. Moon, Y. Kim, M. Kim, S. Yoo, "Ask the mutants: Mutating faulty programs for fault localization," Proc. of the International Conference on Software Testing, Verification and Validation, 2014.
  5. D. Schuler, A. Zeller, "Javalanche: efficient mutation testing for Java," Proc. of the Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2009.
  6. I. Moore, "Jester-a JUnit test tester," Proc. of the International Conference on Extreme Programming and Flexible Processes (XP), 2001.
  7. S. A. Irvine, T. Pavlinic, L. Trigg, J. G. Cleary, S. Inglis, M. Utting, "Jumble Java byte code to measure the effectiveness of unit tests," Proc. of Testing: Academic and Industrial Conference Practice and Research Techniques (TAICPART)-MUTATION, 2007.
  8. PIT Mutation Testing, [Online]. Available: http://pitest.org
  9. R. H. Untch, "On reduced neighborhood mutation analysis using a single mutagenic operator," Proc. of the Annual Southeast Regional Conference Article, 2009.
  10. L. Deng, J. Offutt, N. Li, "Empirical Evaluation of the Statement Deletion Mutation Operator," Proc. of the International Conference on Software Testing, Verification and Validation, 2013.
  11. MuJava, [Online]. Available: https://cs.gmu.edu/-offutt/mujava
  12. R. Just, "The Major mutation framework: Efficient and scalable mutation analysis for Java," Proc. of the International Symposium on Software Testing and Analysis (ISSTA), 2014.
  13. Javaparser, [Online]. Available: https://github.com/javaparser/javaparser
  14. J. Offutt, A. Lee, G. Rothermel, R. Untch, C. Zapf, "An experimental determination of sufficient mutation operators," ACM Transactions on Software Engineering Methodology, Vol. 5, No. 2, pp. 99-118, 1996. https://doi.org/10.1145/227607.227610
  15. H. Agrawal et al., "Design of mutant operators for the C programming language," Technical Report SERC-TR-120-P, Software Engineering Research Center, Purdue University, 1989.
  16. SIR Benchmark, [Online]. Available: http://sir.unl.edu/portal/usage.php