CRESTIVE-DX: 임베디드 소프트웨어에 대해 테스트케이스 생성을 지원하는 분산 Concolic 테스팅 도구 CRESTIVE-DX: Design and Implementation of Distrusted Concolic Testing Tool for Embedded Software원문보기
본 논문은 임베디드 소프트웨어에 대한 Concolic 테스팅을 효과적이고 효율적으로 지원하기 위해 임베디드 타겟(target) 시스템과 호스트(host) 시스템의 분산적이고 동시적으로 테스트 생성을 위한 작업을 수행하는 Concolic 테스팅 도구의 설계와 구현 사례를 소개한다. 소개하는 테스트 케이스 생성 도구는 Concolic 테스팅 과정 중 (1) 임베디드에 종속적인 특성을 갖는 테스트검증 대상 프로그램의 실행 부분은 임베디드 타겟 시스템에서 수행하고, (2) 시스템에 비종속적인 실행 부분인 탐색 전략, 제약식 해법기 실행 과정은 계산성능이 좋은 호스트 시스템에 분산하고, 독립적인 단계를 동시적으로 실행하도록 기존 Concolic 도구를 개선하였다. Arm Cortex A54 아키텍쳐의 임베디드 타겟 시스템과 x86-64 아키텍쳐의 호스트 시스템을 대상으로 본 기법을 구현하여 오픈소스 C 프로그램의 Grep, Busybox Awk, Busybox Ed를 대상으로 실험한 결과, 기존 도구 보다 1.59~2.64배 테스트케이스 생성속도가 향상됨을 확인할 수 있었다.
본 논문은 임베디드 소프트웨어에 대한 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 pr...
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.
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.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문은 임베디드 소프트웨어에 대한 Concolic 테스팅을 효과적이고 효율적으로 지원하기 위해, 임베디드 타겟(target) 시스템과 호스트(host) 시스템을 분산하여 동시적으로 테스트 생성 작업을 수행하는 Concolic 테스팅 도구의 설계와 구현 사례를 소개한다.
본 논문은 임베디드 소프트웨어의 효과적이고 효율적인 테스팅을 임베디드 타겟 시스템과 호스트 시스템의 분산적 Concolic 테스팅 기법을 제안하고, 이를 CREST 도구를 확장하여 구현하여 테스트 생성 속도가 1.59∼2.64배 향상됨을 실험적으로 확인한 결과를 소개하였다.
본 연구에서는 제안한 기법을 구현한 도구가 실제 임베디드 소프트웨어 테스팅 상황에서 Concolic 테스팅을 가능하게 하며, 기존 방식에 비해서 테스트 케이스 생산 효율성을 향상하였는지 평가하기 위해 다음과 같은 실험을 구상했다.
이와 같이 기존 Concolic 테스팅 도구가 임베디드 소프트웨어를 대상으로 갖는 한계점을 효과적으로 해결하기 위하여, 본 논문에서는 Concolic 테스팅 과정 중 (1) 하드웨어 및 임베디드 시스템에 종속적인 특성을 갖는 테스트검증 대상 프로그램의 실행 부분을 임베디드 타겟 시스템에서 수행하고, (2) 하드웨어나 시스템에 종속적이지 않게 실행이 가능한 테스트 케이스 생성 탐색전략 실행, 제약식 해법기 실행 과정은 계산성능이 좋은 호스트 시스템에 분산하여, 독립적인 단계를 동시적으로 실행하는 개선된 Concolic 알고리즘과 이를 구현한 도구를 소개한다.
제안 방법
∙ CRESTIVE-DX를 실제적인 임베디드 개발 환경에서 3개의 오픈소스 UNIX 유틸리티 프로그램을 대상으로 한 테스트 케이스 생성에 적용하였고, 그 성능을 기존의 Concolic 테스팅 도구와 비교 평가하는 실험을 수행하였다. 실험 결과, 제안한 기법이 임베디드 프로그램에 대한 Concolic 테스팅의 효율성을 증대함을 확인할 수 있었다.
∙ 경로조건식 인코딩 통일: 임베디드 타겟 시스템에서 테스트 대상 프로그램의 실행에서 도출된 경로조건식을 호스트 시스템에서 처리하기 위해 경로조건식 도출 단계에서부터 아키텍처와 관계없이 인코딩이 동일하게 이루어지 도록 수정하였다. 구체적으로는, LIA 제약식 표현에 사용되는 숫자는 일관적으로 8 바이트 정수형으로 표현되도록 통일하고, 시스템에서 이보다 작은 숫자를 할당하여 사용할 경우 변환(upcasting)되어 저장되도록 하였다.
∙ 비교 대상: 본 실험에서는 제안한 기법을 임베디드 타겟 시스템과 호스팅 시스템에 설치한 방법(CRESTIVE-DX 혹은 ‘CDX’로 지칭)와 SMT 해법기를 포함하여 기존 CREST 전체를 임베디드 타겟 시스템 상에서 수행한 방법(‘CRS’로 지칭)을 구성하였다.
∙ 제안한 알고리즘을 실제 C 프로그램 대상 Concolic 테스팅 도구로 구현하는 방안을 제시하였고, 기존의 Concolic 테스팅 도구인 CREST를 기반으로 하여 실제 도구인 CRESTIVE-DX를 구현하였다.
∙ 테스트 대상 프로그램 실행 모듈과 테스트 케이스 생성 모듈의 분할: 기존의 테스트 케이스 생성 모듈에서 테스트 대상 프로그램을 실행시키는 부분은 임베디드 타겟 시스템에서 실행되는 프로그램으로, 탐색 전략 및 SMT 해법기를 통한 테스트 케이스 생성 부분은 호스트 시스템에서 실행되는 프로그램으로 분할하였다. 그리고 분할된 두 부분은 TCP 통신을 통해서 테스트케이스 교환, 경로조건식 교환이 이루어지도록 하였다.
∙ 테스트 대상 프로그램의 실행과 테스트 입력 실행 도출을 위한 계산을 2개의 서로 컴퓨팅 노드에서 동시에 실행할 수 있도록 기존의 순차적 Concolic 테스팅 알고리즘을 분산적 알고리즘으로 확장한 새로운 Concolic 테스팅 알고리즘을 제시하였다.
∙ 테스트 생성: 각 테스트 대상 프로그램에 대하여 CREST와 CRESTIVE-DX를 세 가지 탐색 전략, 즉 DFS, Uniform Random, Random Negation을 적용하여 Grep은 3000개, Awak과 Ed는 각각 5000개의 테스트 케이스 생성을 수행하고, 이에 소요된 시간을 측정하였다. 이 때, 확률적 요소가 포함된 Uniform Random 및 Random Negation 탐색 전략의 경우, 동일한 실험을 총 10회 반복하여 결과의 평균을 구하였다.
∙ 테스트 케이스 생성 모듈: 테스트 케이스로 테스트 대상 프로그램을 실행시켜 경로조건식을 생성하고, 생성된 경로 조건식을 Concolic 탐색 전략[9]과 SMT 해법기를 이용해 새로운 테스트 케이스를 생성하는 전체 과정을 운전한다.
∙ 경로조건식 인코딩 통일: 임베디드 타겟 시스템에서 테스트 대상 프로그램의 실행에서 도출된 경로조건식을 호스트 시스템에서 처리하기 위해 경로조건식 도출 단계에서부터 아키텍처와 관계없이 인코딩이 동일하게 이루어지 도록 수정하였다. 구체적으로는, LIA 제약식 표현에 사용되는 숫자는 일관적으로 8 바이트 정수형으로 표현되도록 통일하고, 시스템에서 이보다 작은 숫자를 할당하여 사용할 경우 변환(upcasting)되어 저장되도록 하였다.
∙ 테스트 대상 프로그램 실행 모듈과 테스트 케이스 생성 모듈의 분할: 기존의 테스트 케이스 생성 모듈에서 테스트 대상 프로그램을 실행시키는 부분은 임베디드 타겟 시스템에서 실행되는 프로그램으로, 탐색 전략 및 SMT 해법기를 통한 테스트 케이스 생성 부분은 호스트 시스템에서 실행되는 프로그램으로 분할하였다. 그리고 분할된 두 부분은 TCP 통신을 통해서 테스트케이스 교환, 경로조건식 교환이 이루어지도록 하였다. 이 때, 교환되는 테스트케이스와 경로조건식 데이터 크기가 비교적 작은 편이기 때문에, 두 모듈 간의 신속한 통신이 가능하도록 Nagle 알고리즘을 사용하지 않는 TCP 연결을 구성 하여 사용하였다(i.
2절에서 설명한 바와 같이, 테스트 프로그램 실행을 위해 새로운 프로세스를 만드는 과정은 운영체제가 여러 자원을 할당하는 작업을 포함하므로 임베디드 타겟 시스템 측면에서 많은 시간이 소요 되는 과정이다. 또한, 주어진 경로 조건식을 바탕으로 차기 테스트 케이스를 만드는 과정 역시 호스팅 시스템 입장에서는 많은 시간이 소요되는 시간이므로, 이 둘이 동시적으로 실행되도록 프로그램 구조를 구성하였다. 즉, 호스트 시스템에서 i번째 테스트 케이스를 도출하는 동시에, 타겟 시스템에서는 i번째 테스트 대상 프로그램 실행을 위해 프로세스 생성을 마치고 실제 테스트 대상 프로그램을 구동한다.
본 논문은 실제 임베디드 시스템 상에서 테스트 대상 프로그램을 실행하면서 동시에 탐색전략 휴리스틱, SMT 해법기등 계산비용이 높은 Concolic 테스팅 알고리즘을 효율적으로 구동하기 위해서, Fig. 1의 기본 알고리즘을 호스트 시스템 실행 부분과 타겟 시스템 실행 부분으로 분산하고, 독립적인 부분은 병렬화한 알고리즘을 제안한다.
본 연구는 제시한 분산 Concolic 테스팅 기법인 CRESTIVEDX1)는 C 프로그램 대상 오픈소스 Concolic 테스팅 도구인 CREST[8]를 확장한 구현하였으며, Arm Cortex A54 아키텍처의 임베디드 타겟 시스템과 x86-64 아키텍처의 호스팅 시스템 상황에 적용하였다.
본 연구에서는 3절에 제안한 분산형 Concolic 테스팅 기법을 구현하기 위해 CREST를 다음과 같이 수정/확장하여 CRESTIVE-DX를 구성하였다:
이 때, Host에서 새로운 테스트 케이스를 생성하고 (5-8행) 이를 Target에서 수신하는(13행) 단계와 Target에서 테스트 대상 프로그램을 실행을 위해 새로운 프로세스를 만드는 단계(12행)은 독립적인 과정이므로, 제안하는 분산 알고리즘에서는 이들을 각각 호스트 시스템과 타겟 시스템에서 동시에 병렬적으로 실행한다. 실제 이 두 과정은 SMT 해법기를 구동하고, 시스템콜을 호출하여 프로세스 생성을 수행하기 위해 시간이 많이 소요되는 과정으로, 이들을 병렬 처리함으로써 전체 Concolic 테스팅 시간을 단축한다.
이 때, 확률적 요소가 포함된 Uniform Random 및 Random Negation 탐색 전략의 경우, 동일한 실험을 총 10회 반복하여 결과의 평균을 구하였다. 최종적으로는 각 상황에서, CREST와 CRESTIVE-DX가 단위시간(1초) 당 생성한 테스트 케이스 생성 개수를 비교하였다.
대상 데이터
∙ 비교 대상: 본 실험에서는 제안한 기법을 임베디드 타겟 시스템과 호스팅 시스템에 설치한 방법(CRESTIVE-DX 혹은 ‘CDX’로 지칭)와 SMT 해법기를 포함하여 기존 CREST 전체를 임베디드 타겟 시스템 상에서 수행한 방법(‘CRS’로 지칭)을 구성하였다. CRESTIVE-DX와 CREST 모두 SMT 해법기로 Z3 4.4.1를 사용하였다.
∙ 테스트 대상 프로그램: 본 실험에서는 Concolic 테스팅 연구에서 널리 사용되는 오픈소스 C 프로그램인 Grep 1.2 (10959 LOC)와 Busybox 내 Awk (3322 LOC), Ed (1115 LOC)를 테스트 대상으로 사용하였다. 이들 프로그램은 Concolic 테스팅 연구의 실험에서 테스트 대상으로 자주 사용되는 프로그램이다.
∙ 테스팅 환경: 임베디드 타겟 시스템은 Arm Cortex A54 아키텍쳐인 Raspberry Pi 3 B+로, CPU의 클럭속도는 1.4 GHz이며 메모리는 0.94 GB로 Raspbian 4.19.75 운영체제로 사용하는 시스템을 사용했다. 호스팅 시스템은 x86-64 아키텍쳐인 Intel CPU로 클럭속도는 3.
본 연구는 기존에 개발된 C 프로그램 대상 Concolic 테스팅 도구인 CREST를 확장하여 제안한 기법을 Arm Cortex A54 아키텍처를 갖는 임베디드 타겟 시스템과 x86-64 아키텍처를 갖는 호스트 시스템을 대상으로 구현하였다. 실제 오픈소스 C 프로그램을 대상으로, 여러 가지 탐색 전략을 사용 하여 수행한 실험을 통해 제안한 기법이, 임베디드 시스템 상에서 기존 Concolic 테스팅 도구 전체를 실행하는 기존 방식과 비교하여, 평균 2.
데이터처리
∙ 테스트 생성: 각 테스트 대상 프로그램에 대하여 CREST와 CRESTIVE-DX를 세 가지 탐색 전략, 즉 DFS, Uniform Random, Random Negation을 적용하여 Grep은 3000개, Awak과 Ed는 각각 5000개의 테스트 케이스 생성을 수행하고, 이에 소요된 시간을 측정하였다. 이 때, 확률적 요소가 포함된 Uniform Random 및 Random Negation 탐색 전략의 경우, 동일한 실험을 총 10회 반복하여 결과의 평균을 구하였다. 최종적으로는 각 상황에서, CREST와 CRESTIVE-DX가 단위시간(1초) 당 생성한 테스트 케이스 생성 개수를 비교하였다.
이론/모형
그리고 분할된 두 부분은 TCP 통신을 통해서 테스트케이스 교환, 경로조건식 교환이 이루어지도록 하였다. 이 때, 교환되는 테스트케이스와 경로조건식 데이터 크기가 비교적 작은 편이기 때문에, 두 모듈 간의 신속한 통신이 가능하도록 Nagle 알고리즘을 사용하지 않는 TCP 연결을 구성 하여 사용하였다(i.e., TCP_NODELAY).
성능/효과
Table 1의 결과는 본 연구가 제안한 기법(CDX)는 기존 CREST를 그대로 적용한 방법과 비교하여, 최소 1.59배(Awk, Random Negation)에서 최대 2.64배(Grep, DFS) 초당 테스트 케이스 생성 속도가 향상하였음을 알 수 있다. 특히 DFS 탐색 전략을 사용했을 때, 평균적인 테스트 케이스 생성속도 향상은 2.
추가로, 위 실험에서 DFS와 같이 비결정적 요소가 없는 결정적(deterministic)인 탐색 전략으로 테스트 케이스 생성 과정에서 탐색하는 실행 경로를 일대일로 면밀히 비교한 결과, CDX가 CRS와 동일한 경로를 탐색함을 작동함을 확인할 수 있었으며, 이를 통해 CDX과 CRS의 알고리즘을 올바르게 구현함을 검증할 수 있었다. 또한, 비결정성(non-determinism)이 있는 탐색 전략을 사용한 실험에서, 같은 테스트 대상 프로그램을 같은 탐색전략으로 실행하는 CRS와 CDX의 커버리지 달성을 비교한 결과, 대체로 같은 값이 나옴을 추가로 확인할 수 있었다.
또한, 상대적으로 더 뛰어난 호스트의 컴퓨팅 성능 덕분에 SMT 해법기 실행 시간은 기존의 48∼58%로 감소하였다.
본 연구는 기존에 개발된 C 프로그램 대상 Concolic 테스팅 도구인 CREST를 확장하여 제안한 기법을 Arm Cortex A54 아키텍처를 갖는 임베디드 타겟 시스템과 x86-64 아키텍처를 갖는 호스트 시스템을 대상으로 구현하였다. 실제 오픈소스 C 프로그램을 대상으로, 여러 가지 탐색 전략을 사용 하여 수행한 실험을 통해 제안한 기법이, 임베디드 시스템 상에서 기존 Concolic 테스팅 도구 전체를 실행하는 기존 방식과 비교하여, 평균 2.5배 테스트 케이스 생성 속도를 향상 함을 확인할 수 있었다.
∙ CRESTIVE-DX를 실제적인 임베디드 개발 환경에서 3개의 오픈소스 UNIX 유틸리티 프로그램을 대상으로 한 테스트 케이스 생성에 적용하였고, 그 성능을 기존의 Concolic 테스팅 도구와 비교 평가하는 실험을 수행하였다. 실험 결과, 제안한 기법이 임베디드 프로그램에 대한 Concolic 테스팅의 효율성을 증대함을 확인할 수 있었다.
실험 결과, 탐색 전략 실행이 소요한 시간은 기존의 10∼16% 수준으로 감소함을 보이는데, 이는 탐색 전략 또한 SMT 해법기와 마찬가지로, 계산 비용이 많이 소요되는 과정이기 때문이다.
추가로, 위 실험에서 DFS와 같이 비결정적 요소가 없는 결정적(deterministic)인 탐색 전략으로 테스트 케이스 생성 과정에서 탐색하는 실행 경로를 일대일로 면밀히 비교한 결과, CDX가 CRS와 동일한 경로를 탐색함을 작동함을 확인할 수 있었으며, 이를 통해 CDX과 CRS의 알고리즘을 올바르게 구현함을 검증할 수 있었다. 또한, 비결정성(non-determinism)이 있는 탐색 전략을 사용한 실험에서, 같은 테스트 대상 프로그램을 같은 탐색전략으로 실행하는 CRS와 CDX의 커버리지 달성을 비교한 결과, 대체로 같은 값이 나옴을 추가로 확인할 수 있었다.
테스트 대상 프로그램 실행 및 통신에 소요한 시간은 기존의 37∼60% 수준으로 감소하였다.
64배(Grep, DFS) 초당 테스트 케이스 생성 속도가 향상하였음을 알 수 있다. 특히 DFS 탐색 전략을 사용했을 때, 평균적인 테스트 케이스 생성속도 향상은 2.29배로, 가장 큰 폭의 향상이 관찰되었다. 이는 DFS 탐색 전략 수행에 소요 되는 계산이 Random Negation이나 Uniform Random보다 많기 때문에, 컴퓨팅 성능이 좋은 환경에서 실행한 효과가 더 두드러지게 나타난 것으로 추정된다.
후속연구
본 논문에서 제안한 CRESTIVE-DX는 TCP/IP가 지원되지 않는 임베디드 시스템을 대상으로 UART, JPEG 통신을 활용한 분산 Concolic 테스팅 환경을 구성하는 연구, MCU 와 같이 극단적으로 하드웨어 자원이 제약적인 임베디드 시스템을 대상으로 한 Concolic 테스팅 적용, 탐색 알고리즘의 병렬화를 통한 Concolic 증대 등 임베디드 시스템을 대상으로 한 테스팅 자동화 연구에 향후 활용할 수 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
기존에 제시된 Concolic 테스팅 기법은 어떻게 개발되었는가?
기존에 제시된 Concolic 테스팅 기법은 Fig. 1에서 설명 하는 Concolic 테스팅 알고리즘 전체를 단일한 환경에서 수행하는 상황에 한정하여 개발되었다. 이로 인하여, 테스트 대상 프로그램 실행을 위해 계산 속도, 메모리, 자원 활용에 제약이 큰 임베디드 프로그램을 대상으로 기존 Concolic 테스팅 기법을 적용하는데 효과성 및 효율성에 있어서 한계가 큰 상황이다(1절에서 논의).
Concolic 테스팅 기법은 어떻게 동작하는가?
1은 기존 연구에서 제시해 온 일반적인 Concolic 테스팅의 수행 과정을 간략히 설명하는 알고리즘이다. Concolic 테스팅 기법은 테스트 대상 프로그램(P)와 초기 테스트 케이스(in0)를 입력으로 받은 후, 테스팅에 주어진 시간(자원)이 소진될 때까지(2행) 테스트 입력 생성을 반복한다(3-8행). Fig.
CREST의 각 모듈에 대한 설명은?
∙ 테스트 대상 프로그램 수정 모듈: C 프로그램 소스코드의 각 명령에 해당 명령의 실행 정보를 추출하는 탐침 (probe)을 삽입(instrument)한 후[9], 테스트 대상 프로그램을 빌드하는 과정에서 탐침에 동적 심볼릭 실행을 수행하는 라이브러리를 연결(bind)한다.
∙ 동적 심볼릭 실행 수행 모듈: 테스트 대상 프로그램에 삽입된 탐침에 의해서 심볼릭 실행의 각 단계에 대한 명령이 호출되어, 테스트 대상 프로그램이 실행하는 경로에 조건식이 도출된다. 결과적으로, 테스트 대상 프로그램의 실행이 종료될 때, 해당 경로에 대한 조건식이 부산물로 생성된다.
∙ 테스트 케이스 생성 모듈: 테스트 케이스로 테스트 대상 프로그램을 실행시켜 경로조건식을 생성하고, 생성된 경로 조건식을 Concolic 탐색 전략[9]과 SMT 해법기를 이용해 새로운 테스트 케이스를 생성하는 전체 과정을 운전한다.
참고문헌 (10)
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.
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.
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.
The Z3 Theorem Prover [Internet], https://github.com/Z3Prover/z3
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.
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.
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.
J. Burnim, CREST [Internet], https://github.com/jburnim/crest
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.
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.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.