DOI QR코드

DOI QR Code

CRESTIVE-DX: 임베디드 소프트웨어에 대해 테스트케이스 생성을 지원하는 분산 Concolic 테스팅 도구

CRESTIVE-DX: Design and Implementation of Distrusted Concolic Testing Tool for Embedded Software

  • 임혜린 (한동대학교 정보통신공학과) ;
  • 최한솔 (한동대학교 정보통신공학과) ;
  • 김효림 (한동대학교 전산전자공학부) ;
  • 홍신 (한동대학교 전산전자공학부)
  • 투고 : 2020.04.20
  • 심사 : 2020.06.06
  • 발행 : 2020.08.31

초록

본 논문은 임베디드 소프트웨어에 대한 Concolic 테스팅을 효과적이고 효율적으로 지원하기 위해 임베디드 타겟(target) 시스템과 호스트(host) 시스템의 분산적이고 동시적으로 테스트 생성을 위한 작업을 수행하는 Concolic 테스팅 도구의 설계와 구현 사례를 소개한다. 소개하는 테스트 케이스 생성 도구는 Concolic 테스팅 과정 중 (1) 임베디드에 종속적인 특성을 갖는 테스트검증 대상 프로그램의 실행 부분은 임베디드 타겟 시스템에서 수행하고, (2) 시스템에 비종속적인 실행 부분인 탐색 전략, 제약식 해법기 실행 과정은 계산성능이 좋은 호스트 시스템에 분산하고, 독립적인 단계를 동시적으로 실행하도록 기존 Concolic 도구를 개선하였다. Arm Cortex A54 아키텍쳐의 임베디드 타겟 시스템과 x86-64 아키텍쳐의 호스트 시스템을 대상으로 본 기법을 구현하여 오픈소스 C 프로그램의 Grep, Busybox Awk, Busybox Ed를 대상으로 실험한 결과, 기존 도구 보다 1.59~2.64배 테스트케이스 생성속도가 향상됨을 확인할 수 있었다.

This paper presents the design and the implementation of CRESTIVE-DX, a concolic testing tool that distribute the concolic testing process over the embedded target system and the host system for efficient test generation of a target embedded program. CRESTIVE-DX conducts the execution of a target program on the target embedded system to consider possible machine-dependent behaviors of a target program execution, and conducts machine-independent parts, such as search-strategy heuristics, constraint solving, on host systems with high-speed computation unit, and coordinates their concurrent executions. CRESTIVE-DX is implemented by extending an existing concolic testing tool for C programs CREST. We conducted experiments with a test bed that consists of an embedded target system in the Arm Cortex A54 architecture and host systems in the x86-64 architecture. The results of experiments with Unix utility programs Grep, Busybox Awk, and Busybox Ed show that test input generation of CRESTIVE-DX is 1.59 to 2.64 times faster than that of CREST.

키워드

참고문헌

  1. N. Zhang, S. Demetriou, X. Mi, W. Diao, K. Yuan, P. Zong, F. Qian, X. Wang, K. Chen, Y. Tian, C. A. Gunter, K. Zhang, P. Tague and Y. Lin, "Understanding IoT Security Through the Data Crystal Ball: Where We Are Now and Where We Are Going to Be," CoRR, Vol. abs/1703.09809, 2017.
  2. K. Sen, D. Marinov and G. Agha, "CUTE: a concolic unit testing engine for C," in Proceedings of the 10th European Software Engineering Conference Held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE-13), pp. 263-272, Sep. 2005.
  3. C. Cadar, D. Dunbar and D. Engler, "KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs," in Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI'08), pp. 209-224, Dec. 2008.
  4. The Z3 Theorem Prover [Internet], https://github.com/Z3Prover/z3
  5. Y. Kim, Y. Kim, T. Kim, G. Lee, Y. Jang and M. Kim, "Automated Unit Testing of Large Industrial Embedded Software Using Concolic Testing," in Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering (ASE'13), pp. 519-528, Nov. 2013.
  6. Y. Park, S. Hong, M. Kim, D. Lee and J. Cho, "Systematic Testing of Reactive Software with Non-deterministic Events: A Case Study on LG Electric Oven," in Proceedings of the 37th International Conference on Software Engineering (ICSE'15), Vol. 2, pp. 29-38, May 2015.
  7. Y. Kim, D. Lee, J. Baek and M. Kim, "Concolic Testing for High Test Coverage and Reduced Human Effort in Automotive Industry," in Proceedings of the 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP'19), pp. 151-160, May 2019.
  8. J. Burnim, CREST [Internet], https://github.com/jburnim/crest
  9. G. C. Necula, S. McPeak, S. P. Rahul and W. Weimer, "CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs," in Proceedings of the 11th International Conference on Compiler Construction (CC'02), pp. 213-228, Apr. 2002.
  10. J. Burnim and K. Sen, "Heuristics for Scalable Dynamic Test Generation," in Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE'08), pp. 443-446, Sep. 2008.