DOI QR코드

DOI QR Code

Automated Test Data Generation for Testing Programs with Multi-level Stack-directed Pointers

다단계 스택 지향 포인터가 있는 프로그램 테스트를 위한 테스트 데이터 자동 생성

  • Received : 2010.06.14
  • Accepted : 2010.07.26
  • Published : 2010.08.31

Abstract

Recently, a new testing technique called concolic testing receives lots of attention. Concolic testing generates test data by combining concrete program execution and symbolic execution to achieve high test coverage. CREST is a representative open-source test tool implementing concolic testing. Currently, however, CREST only deals with integer type as input. This paper presents a new rule for automated test data generation in presence of inputs of pointer type. The rules effectively handles multi-level stack-directed pointers that are mainly used in C programs. In addition, we describe a tool named vCREST implementing the proposed rules together with the results of applying the tool to some C programs.

최근에 콘콜릭 테스트이라 불리는 새로운 테스팅 방법이 많은 관심을 받고 있다. 콘콜릭 테스팅은 높은 테스트 커버리지를 달성하기 위해 실제 프로그램 수행과 심볼릭 수행을 결합하여 테스트 데이터를 생성한다. CREST는 콘콜릭 테스팅을 구현한 대표적인 open-source 테스트 도구이다. 그러나 현재 CREST는 입력으로 정수형만 다룬다. 이 논문은 포인터형인 입력이 존재하는 경우에 자동 테스트 데이터 생성을 위한 새로운 규칙을 제안한다. 이 규칙들은 C 프로그램에서 주로 사용되는 다단계 스택 지향 포인터를 효과적으로 처리한다. 또한, 이 논문에서는 제안 된 규칙을 구현한 vCREST라 불리는 도구에 대해 기술하고 C 프로그램에 적용한 결과도 함께 기술한다.

Keywords

References

  1. P. Godefroid, N. Klarlund, and K. Sen. “DART: Directed automated random testing,” In Proc. of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (PLDI), 2005.
  2. J. Clarke, J. Dolado,, M. Harman,, R. Hierons, B. Jones, M. Lumkin, B. Mitchell, S. Mancoridis, K. Rees, M. Roper, and M. Shepperd, “Reformulating Software Engineering as a Search Problem,” IEE Proceedings-Software, Vol.5, No.1, pp.161-175, 2003. https://doi.org/10.1049/ip-sen:20030559
  3. J. Edvardsson,, “A Survey on Automatic Test Data Generation,” In Proc. the Second Conf. on Computer Science and Engineering, pp.21-28, 1999.
  4. J. Burnim, K. Sen, “Heuristics for Dynamic Test Generation,” In the 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE), 2008.
  5. I. S. Chung and J. M. Bieman, “Generating Input Data Structures for Automated Program Testing,” Software Testing, Verification and Reliability, Vol.19, No.1, pp.3-36, 2009. https://doi.org/10.1002/stvr.388
  6. B. Korel, “Automated Software Test Data Generation,” IEEE Trans. on Software Eng, Vol.16. No.8. pp.870-879, 1990. https://doi.org/10.1109/32.57624
  7. S.Visvanathan and N. Gupta., “Generating Test Data for Functions with Pointer Inputs”, n Proc. the 17th IEEE International Conf. Automated Soft. Eng., pp.149-160, 2002.
  8. C. Lapkowski, and L. J. Hendren, “Extended SSA Numbering: Introducing SSA properties to Languages with Multi-level Pointers,” ACAPS Tecnical Memo 102. School of Computer Science. McGill Univ. Canada. 1996.
  9. A. Gotlieb, T. Denmat, and B. Botella, “Goal-oriented Test Data Generation for Pointer Programs,” Information and Software Technology, Vol.49, Issues 9-10, pp.1030-1044, 2007. https://doi.org/10.1016/j.infsof.2006.10.016
  10. A. J. Offutt, Z. Jin, and J. Pan:, “The Dynamic Domain Reduction Procedure for Test Data Generation.” Softw., Pract. Exper. Vol.29, No.2, pp.167-193, 1999. https://doi.org/10.1002/(SICI)1097-024X(199902)29:2<167::AID-SPE225>3.0.CO;2-V
  11. C. Meudec, “ATGen:Automatic Test Data generation using Constraint Logic Programming and Symbolic Execution,” In Proc. IEEE/ACM Int. Workshop on Automated Program Analysis Testing and Verfication. pp.22-31, 2000.
  12. F. Roger and B. Korel, “The Chaining Approach for Software Test Data Generation,” ACM Trans. on Soft. Eng. Methodology, Vol.5. No.1. pp.63-86, 1996. https://doi.org/10.1145/226155.226158
  13. C. C. Michael and G. McGraw, “Automated Software Test Data Generation for Complex Programs,” In proceedings of 13th International conference on Automated Software Engineering, pp.136-146, 1998.
  14. M. J. Gallagher and V. L. Narasimhan, V. L. “ADTEST: A Test Data Generation Suite for Ada Software Systems,” IEEE Trans. on Software Eng, Vol.23. No.8. pp.473-484, 1997. https://doi.org/10.1109/32.624304
  15. R. P. Pargas, M. J. Harrold, and R. R. Peck. “Test Data Generation using Genetic Algorithms". Software Testing, Verification and Reliability 9, 263-282, 1999. https://doi.org/10.1002/(SICI)1099-1689(199912)9:4<263::AID-STVR190>3.0.CO;2-Y
  16. G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer, “CIL: Intermediate Language and Tools for Analysis and transformation of C Programs.” In Proc. of Conference on compiler Construction, pp.213-228, 2002.
  17. P. Ammann and J. Offutt, Introduction to Software Testing, Cambridge University Press, Cambridge, UK, ISBN 0-52188-038-1, 2008.
  18. K. Sen, D. Marinov, and G. Agha, “CUTE: A Concolic Unit Testing Engine for C,” In Proc. of ESEC-FSE, pp.263-272, 2005. https://doi.org/10.1145/1081706.1081750