KR20220046467A - 기계 학습을 통한 심볼릭 실행의 탐색 공간 자동 축소 방법 - Google Patents
기계 학습을 통한 심볼릭 실행의 탐색 공간 자동 축소 방법 Download PDFInfo
- Publication number
- KR20220046467A KR20220046467A KR1020210122949A KR20210122949A KR20220046467A KR 20220046467 A KR20220046467 A KR 20220046467A KR 1020210122949 A KR1020210122949 A KR 1020210122949A KR 20210122949 A KR20210122949 A KR 20210122949A KR 20220046467 A KR20220046467 A KR 20220046467A
- Authority
- KR
- South Korea
- Prior art keywords
- state
- probability distribution
- candidate
- symbolic execution
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000010801 machine learning Methods 0.000 title description 2
- 238000013138 pruning Methods 0.000 title 1
- 238000009826 distribution Methods 0.000 claims abstract description 120
- 239000013598 vector Substances 0.000 claims abstract description 92
- 238000005070 sampling Methods 0.000 claims abstract description 23
- 238000012360 testing method Methods 0.000 claims description 64
- 230000014509 gene expression Effects 0.000 claims description 15
- 239000000284 extract Substances 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 37
- 230000008569 process Effects 0.000 description 9
- 230000010365 information processing Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012216 screening Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G06N7/005—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법에 관한 것으로, 심볼릭 실행 장치는, 제1 확률 분포 및 제2 확률 분포 중 적어도 하나를 저장하는 저장부 및 상기 제1 확률 분포로부터 가중치 벡터를 샘플링하여 획득하고, 상기 제2 확률 분포로부터 제거 비율을 샘플링하여 획득하고, 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하고, 상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 프로세서를 포함할 수 있다.
Description
본 발명은 기계 학습을 통한 심볼릭 실행의 탐색 공간 자동 축소 방법에 관한 것이다.
프로그램 테스트는, 주어진 프로그램의 결함을 검출하여 확인하고, 이를 기반으로 프로그램의 품질을 검증하는 작업이다. 이러한 프로그램 테스트 기술 중에는 심볼릭 실행(Symbolic Execution)이 있다. 심볼릭 실행은 구체적인 값이 아닌 심볼(기호)를 입력 값으로 하여 해당 프로그램 내의 다수의 상태(state, 일례로 실행 경로)들을 체계적으로 탐색하여 프로그램을 테스트하는 기술로, 보다 상세하게는 주어진 테스트 시간 동안 각각의 실행 경로들을 유지하면서 각각의 상태 중 어느 하나를 선택하고, 실행하고, 포크(fork)하는 과정을 반복 수행함으로써 수행된다. 이러한 심볼릭 실행은 주어진 시간 내에 코드 커버리지(code coverage)를 효과적으로 증가시키고 다양한 오류를 검출하여 해당 프로그램의 품질을 개선할 수 있도록 하는 장점이 있어 널리 이용되고 있다. 그런데, 심볼릭 실행은, 다른 테스트 방법, 일례로 랜덤 테스팅에 비해 보다 효과적으로 프로그램을 테스트할 수 있다는 장점은 있으나, 프로그램의 사이즈가 커지면 커질수록 탐색해야 하는 실행 경로가 기하급수적으로 증가하는 문제점, 즉, 상태 폭발 문제(State-Explosion Problem)가 존재한다. 예를 들어, 해당 프로그램의 분기문이 5,000개라면, 최대로 탐험해야 하는 실행 경로(즉, 상태)는 2의 5000 제곱개가 된다. 특히, 심볼릭 실행을 수행하는 장치는, 중요한 상태들의 분실을 회피하기 위해 테스트 과정에서 최대한 많은 후보 상태(Candidate State)들을 저장 메모리 장치에 기록하는데, 상태 폭발 문제 때문에 장치의 메모리 용량이 초과되는 경우가 빈번하게 발생한다. 따라서, 이러한 메모리 용량 초과의 문제를 해결하기 위해 무작위로 다수의 후보 상태들을 제거하여 테스트를 수행할 수도 있으나, 이는 프로그램 분석의 정확성을 저하하는 문제점을 야기한다. 반대로 정확성 개선을 위해 심볼릭 실행 과정에서 최대한 많은 후보 상태들을 유지하게 되면, 메모리 용량 초과 문제 이외에도 코드 커버리지 향상이나 오류 검출 관점에서 적절한 상태를 결정하기가 더욱 더 어려워지는 문제점도 발생할 수 있다.
심볼릭 실행에 있어서 전체적인 후보 상태의 수는 절감하면서도 분석에 필요한 후보 상태들은 유지할 수 있는 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법을 제공하는 것을 해결하고자 하는 과제로 한다.
상술한 과제를 해결하기 위하여 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법이 제공된다.
심볼릭 실행 장치는, 제1 확률 분포 및 제2 확률 분포 중 적어도 하나를 저장하는 저장부 및 상기 제1 확률 분포로부터 가중치 벡터를 샘플링하여 획득하고, 상기 제2 확률 분포로부터 제거 비율을 샘플링하여 획득하고, 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하고, 상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 프로세서를 포함할 수 있다.
상기 적어도 하나의 특질 벡터는, 적어도 하나의 특질을 포함하고, 상기 적어도 하나의 특질은 상기 적어도 하나의 후보 상태의 경로 조건식에 특정 분기 조건이 존재하는 여부를 나타내는 값을 포함할 수 있다.
상기 프로세서는, 상기 적어도 하나의 특질 벡터와 상기 가중치 벡터의 내적을 연산하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 것도 가능하다.
상기 프로세서는, 상기 적어도 하나의 후보 상태의 개수에 상기 제거 비율을 곱한 개수의 후보 상태를 제거 대상 상태로 선정할 수도 있다.
상기 프로세서는, 상기 점수가 상대적으로 낮은 적어도 하나의 후보 상태를 제거 대상 상태로 선정할 수도 있다.
상기 프로세서는, 심볼릭 실행에서 획득된 적어도 하나의 테스트 케이스로부터 도달 여부 정보 데이터를 생성할 수 있으며, 여기서 상기 도달 여부 정보 데이터는 상기 적어도 하나의 테스트 케이스가 도달 가능한 하나 이상의 분기문을 포함할 수도 있다.
상기 프로세서는, 상기 도달 여부 정보 데이터로부터 갱신에 이용될 선별 데이터를 추출하고, 상기 선별 데이터를 이용하여 상기 제1 확률 분포 및 상기 제2 확률 분포 중 적어도 하나를 갱신할 수 있으며, 여기서, 상기 선별 데이터는 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 상기 도달 여부 정보 데이터의 부분 집합을 포함할 수도 있다.
심볼릭 실행 방법은, 제1 확률 분포로부터 가중치 벡터를 샘플링하여 획득하는 단계, 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 단계, 제2 확률 분포로부터 제거 비율을 샘플링하여 획득하는 단계 및 상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 단계를 포함할 수도 있다.
상기 적어도 하나의 특질 벡터는, 적어도 하나의 특질을 포함하고, 상기 적어도 하나의 특질은 상기 적어도 하나의 후보 상태의 경로 조건식에 특정 분기 조건이 존재하는 여부를 나타내는 값을 포함할 수도 있다.
상기 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 단계는, 상기 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터와 상기 가중치 벡터 사이의 내적을 연산하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 단계를 포함할 수도 있다.
상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 단계는, 상기 적어도 하나의 후보 상태의 개수에 상기 제거 비율을 곱한 개수의 후보 상태를 제거 대상 상태로 선정하는 단계 및 상기 점수가 상대적으로 낮은 적어도 하나의 후보 상태를 제거 대상 상태로 선정하는 단계 중 적어도 하나를 포함하는 것도 가능하다.
심볼릭 실행 방법은, 심볼릭 실행에서 획득된 적어도 하나의 테스트 케이스로부터 도달 여부 정보 데이터를 생성하는 단계를 더 포함할 수 있으며, 여기서 상기 도달 여부 정보 데이터는 상기 적어도 하나의 테스트 케이스가 도달 가능한 하나 이상의 분기문을 포함할 수 있다.
심볼릭 실행 방법은, 상기 도달 여부 정보 데이터로부터 갱신에 이용될 선별 데이터를 추출하는 단계 및 상기 선별 데이터를 이용하여 상기 제1 확률 분포 및 상기 제2 확률 분포 중 적어도 하나를 갱신하는 단계를 더 포함할 수도 있으며, 여기서 상기 선별 데이터는 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 상기 도달 여부 정보 데이터의 부분 집합을 포함할 수도 있다.
확률 분포 갱신 방법은, 심볼릭 실행에서 획득된 적어도 하나의 테스트 케이스로부터 도달 여부 정보 데이터를 생성하는 단계, 상기 도달 여부 정보 데이터로부터 갱신에 이용될 선별 데이터를 추출하는 단계 및 상기 선별 데이터를 이용하여 상기 제1 확률 분포 및 상기 제2 확률 분포 중 적어도 하나를 갱신하는 단계를 포함할 수 있으며, 여기서, 상기 도달 여부 정보 데이터는 상기 적어도 하나의 테스트 케이스가 도달 가능한 하나 이상의 분기문을 포함하고, 상기 선별 데이터는 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 상기 도달 여부 정보 데이터의 부분 집합을 포함할 수 있다.
상술한 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법에 의하면, 심볼릭 실행에 있어서 전체적인 후보 상태의 수는 절감하면서도 분석에 필요한 후보 상태들은 유지할 수 있게 되는 장점을 얻을 수 있다.
상술한 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법에 의하면, 적절한 후보 상태의 유지 및 불필요한 후보 상태의 제거에 따라 코드 커버리지를 효과적으로 향상시킬 수 있게 되면서 동시에 프로그램 내의 다양한 오류를 용이하고 보다 정확하게 검출할 수 있게 되는 장점도 존재한다.
상술한 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법에 의하면, 하나 이상의 확률 분포를 통해 유망한 후보 상태를 획득하고, 적절한 수의 후보 상태들을 제거함으로써, 사람의 개입 없이도 심볼릭 실행의 대상이 되는 탐색 공간을 효과적이면서 자동적으로 축소할 수 있게 하는 장점도 얻을 수 있다.
상술한 심볼릭 실행 장치 및 심볼릭 실행을 위한 확률 분포 갱신 방법에 의하면, 심볼릭 실행을 위한 확률 분포를 보다 적합하게 갱신할 수 있게 됨으로써, 심볼릭 실행에 따른 테스트 결과의 정확성이 개선되는 효과도 얻을 수 있게 된다.
상술한 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법에 의하면, 심볼릭 실행에 있어서 다수의 후보 상태를 무작위로 제거하지 않기 때문에, 중요한 후보 상태가 소실되어 프로그램 테스트 성능이 저하되는 것을 방지할 수도 있게 된다.
도 1은 심볼릭 실행 장치의 일 실시예에 대한 블록도이다.
도 2는 상태 집합을 설명하기 위한 도면이다.
도 3은 심볼릭 실행 장치의 후보 상태의 수와 종래 기술에 의한 후보 상태의 수를 비교한 그래프 도표이다.
도 4는 심볼릭 실행 장치의 분기문 처리 범위와 종래 기술에 의한 분기문 처리 범위를 상호 비교한 그래프 도표이다.
도 5는 심볼릭 실행 방법의 일 실시예에 대한 흐름도이다.
도 6은 심볼릭 실행을 위한 확률 분포 갱신 방법의 일 실시예에 대한 흐름도이다.
도 2는 상태 집합을 설명하기 위한 도면이다.
도 3은 심볼릭 실행 장치의 후보 상태의 수와 종래 기술에 의한 후보 상태의 수를 비교한 그래프 도표이다.
도 4는 심볼릭 실행 장치의 분기문 처리 범위와 종래 기술에 의한 분기문 처리 범위를 상호 비교한 그래프 도표이다.
도 5는 심볼릭 실행 방법의 일 실시예에 대한 흐름도이다.
도 6은 심볼릭 실행을 위한 확률 분포 갱신 방법의 일 실시예에 대한 흐름도이다.
이하 명세서 전체에서 동일 참조 부호는 특별한 사정이 없는 한 동일 구성요소를 지칭한다. 이하에서 사용되는 '부'가 부가된 용어는, 소프트웨어 및/또는 하드웨어로 구현될 수 있으며, 실시예에 따라 하나의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 복수의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 하나의 '부'가 복수의 물리적 또는 논리적 부품들로 구현되는 것도 가능하다. 명세서 전체에서 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 어떤 부분과 다른 부분이 상호 간에 물리적으로 연결되었음을 의미할 수도 있고, 및/또는 전기적으로 연결되었음을 의미할 수도 있다. 또한, 어떤 부분이 다른 부분을 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 부분 이외의 또 다른 부분을 제외하는 것이 아니며, 설계자의 선택에 따라서 또 다른 부분을 더 포함할 수 있음을 의미한다. 제1 내지 제N(N은 1 이상의 자연수) 등의 표현은, 적어도 하나의 부분(들)을 다른 부분(들)으로부터 구분하기 위한 것으로, 특별한 기재가 없는 이상 이들이 순차적임을 반드시 의미하지는 않는다. 또한 단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함할 수 있다.
이하 도 1 내지 도 4에 도시된 일 실시예를 참조하여 심볼릭 실행 장치를 설명하도록 한다.
도 1은 심볼릭 실행 장치의 일 실시예에 대한 블록도이고, 도 2는 상태 집합을 설명하기 위한 도면이다.
도 1에 도시된 바에 의하면, 심볼릭 실행 장치(100)는 심볼릭 실행을 수행하기 위한 프로세서(110)를 포함할 수 있으며, 입력부(101), 저장부(105) 및 출력부(109) 중 적어도 하나를 더 포함할 수 있다. 여기서, 입력부(101), 저장부(105), 출력부(109) 및 프로세서(110) 중 적어도 둘은 상호 전기적으로 연결되어 데이터나 명령 등을 송신하거나 수신할 수 있도록 마련된다.
입력부(101)는, 사용자의 직간접적인 조작에 따라 또는 다른 외부 장치(미도시)와의 통신에 따라, 심볼릭 실행 장치(100)의 동작에 관한 적어도 하나의 지시/명령이나, 심볼릭 실행 장치(100)의 동작에 필요한 적어도 하나의 데이터나, 분석 대상이 되는 프로그램(이하 대상 프로그램(9))나, 프로세서(110)에 의해 실행되는 적어도 하나의 소프트웨어(프로그램, 앱 또는 애플리케이션 등으로 지칭 가능함) 등을 획득하고, 획득한 지시/명령, 데이터 또는 프로그램 등을 저장부(105)나 프로세서(110)로 전달할 수 있다. 예를 들어, 입력부(101)는 사용자의 조작에 의해 또는 외부 장치로부터의 전달을 통해 상태 집합(80) 및 확률 데이터(90) 중 적어도 하나를 획득할 수도 있다. 입력부(101)는, 실시예에 따라서, 키보드, 마우스, 태블릿, 터치 스크린, 터치 패드, 트랙 볼, 트랙패드, 스캐너 장치, 영상 촬영 모듈, 초음파 스캐너, 동작 감지 센서, 진동 센서, 수광 센서, 감압 센서, 근접 센서 및/또는 마이크로 폰 등을 포함할 수도 있고, 외부의 다른 장치(일례로 휴대용 메모리 장치 등)로부터 데이터 등의 수신이 가능한 데이터 입출력 단자를 포함할 수도 있으며, 외부의 다른 정보처리장치 등과 유무선 통신 네트워크를 통해 연결되는 통신 모듈(일례로 랜 카드, 근거리 통신 모듈 또는 이동통신 모듈 등) 등을 포함할 수도 있다. 입력부(101)는, 심볼릭 실행 장치(100)와 일체형으로 마련된 것일 수도 있고, 또는 물리적으로 분리 가능하게 마련된 것일 수도 있다.
저장부(105)는, 실시예에 따라서, 주기억장치(롬이나 램 등) 및 보조기억장치(광학디스크나, 하드디스크나, 플래시 메모리(솔리드 스테이트 드라이브나 메모리 카드 등을 포함할 수 있음)) 중 적어도 하나를 포함할 수 있으며, 심볼릭 실행에 필요한 적어도 하나의 데이터를 일시적으로 또는 비일시적으로 저장할 수 있다. 예를 들어, 저장부(105)는 상태 집합(80) 및 확률 데이터(90) 중 적어도 하나를 저장할 수 있다.
상태 집합(80)은 도 2에 도시된 바와 같이 하나 이상의 상태(s1 내지 s4)의 집합일 수 있으며, 하나 이상의 상태(s1 내지 s4)는 각각 어느 하나의 대상 프로그램(9)을 실행시킨 경우, 처리될 수 있는 일련의 실행 경로를 포함할 수 있다. 즉, 상태 집합(80)은 하나 이상의 실행 경로의 집합일 수 있다. 구체적으로 예를 들어, 어느 하나의 대상 프로그램(9)이 적어도 하나의 명령문(A1 내지 E2)를 포함하고, 적어도 하나의 명령문(A1 내지 E2)은 하나 이상의 분기문(B1, C2, D1)을 포함하는 경우에 있어서, 해당 대상 프로그램(9)이 실행되고, 실행 과정에 있어서 어느 하나의 분기문(B1, C2, D1)에 도달하면, 해당 분기문(B1, C2, D1)의 조건의 만족 여부에 따라 특정한 명령문(C1 또는 C2, D1 또는 D2, E1 또는 E2)이 순차적으로 실행 및 처리되게 된다. 따라서, 조건의 만족 여부 및 이에 따른 실행에 의해 대상 프로그램(9)은 다양한 실행 경로(일례로 A1-B1-C1, A1-B1-C2-D1-E1, A1-B1-C2-D1-E2, A1-B1-C2-D2 등)를 갖는다. 상태 집합(80) 내의 각각의 상태(s1 내지 s4)는 이러한 각각의 실행 경로(일례로 A1-B1-C1, A1-B1-C2-D1-E1, A1-B1-C2-D1-E2, A1-B1-C2-D2 등)를 포함하여 정의된 것일 수 있다. 이하 대상 프로그램(9) 내의 하나 이상의 상태(s1 내지 s4)를 설명함에 있어서, 제거 여부의 판단 대상이 될 각각의 상태(s1 내지 s4)를 후보 상태라 칭하도록 한다. 실시예에 따라서, 후보 상태(들)는 대상 프로그램(9) 내의 모든 상태(s1 내지 s4)를 포함할 수도 있고, 프로그램(9) 내의 모든 상태(s1 내지 s4) 중 일부만을 포함할 수도 있다. 이하에서는 대상 프로그램(9) 내의 모든 상태(s1 내지 s4)가 후보 상태인 경우를 일례로 들어 설명하도록 하나, 후술하는 바는 일부의 상태(s1 내지 s4)가 후보 상태인 경우에도 동일하게 또는 일부 변형된 형태로 적용 가능하다.
확률 데이터(90)는 심볼릭 실행에 있어서 프로세서(110), 일례로 심볼릭실행부(120)가 대상 프로그램(9) 내의 하나 이상의 상태, 즉 후보 상태(s1 내지 s4) 중에서 제거할 상태(이하 제거 대상 상태)를 결정하기 위한 데이터이다. 실시예에 따라서, 확률 데이터(90)는 입력부(101)를 통해 외부(일례로 다른 장치나 사용자)로부터 획득된 것일 수도 있고, 및/또는 프로세서(110)의 학습 처리부(130)의 학습 처리 결과나 심볼릭실행부(120)의 특질 벡터 처리에 따라 획득된 것일 수도 있다. 일 실시예에 따르면, 확률 데이터(90)는 특질 집합(91), 제1 확률 분포(93) 및 제2 확률 분포(95) 중 적어도 하나를 포함할 수 있다.
특질 집합(91)은 각각의 후보 상태(s1 내지 s4)의 상태를 표현하기 위한 특질(feature)의 집합을 의미하며, 실시예에 따라 특질 벡터(feature vector)의 집합을 의미할 수도 있다.
특질은 특정한 후보 상태(s1 내지 s4)의 경로 조건식에 특정 분기 조건이 존재하는 여부에 따른 값, 일례로 참(1) 또는 거짓(0)의 값으로 정의될 수 있다. 여기서, 경로 조건식은 특정한 후보 상태(s1 내지 s4)가 지나간 분기문(B1, C2, D1 등)의 집합을 의미한다. 보다 구체적으로 예를 들어, 어느 하나의 상태(s1 내지 s4)의 경로 조건식이 집합 {(α > 10), (β == 5), (α >= 5)}으로 주어졌을 때, 어느 하나의 특질은 경로 조건식에 특정 분기 조건(예를 들어, α < 8)이 포함되어 있는지 여부를 나타내는 것이다. 여기서, 예시로 든 특정 분기 조건(α < 8)은 경로 조건식 {(α > 10), (β == 5), (α >= 5)}에 포함되어 있지 않으므로, 특질은 0의 값을 가지게 된다. 이와 같은 특질을 수식으로 표현하면 하기의 수학식 1과 같이 주어질 수 있다.
[수학식 1]
수학식 1에서 feati()는 i(i는 0 이상의 정수)에 해당하는 특질을, s는 각각의 상태를, φi는 i에 해당하는 특정 분기 조건을, Φ는 경로 조건식을 의미한다.
특질 벡터는 상술한 특질들을 조합하여 생성된 벡터를 의미한다. 구체적으로 예를 들어, 특질 벡터는, n개의 특질들의 집합(F), 즉 특질 집합(91)이 주어진 경우, 각각의 상태(s1 내지 s4)을 하기의 수학식 2와 같이 n-차원의 벡터로 변환함으로써 획득될 수도 있다(n은 1 이상의 자연수).
[수학식 2]
제1 확률 분포(93)는 각각의 상태(s1 내지 s4)의 중요한 정도(유망한 정도)를 계산하기 위한 가중치(θ, 가중치 벡터를 포함할 수 있음)에 대한 확률 분포를 의미하고, 제2 확률 분포(95)는 몇 개의 후보 상태들을 제거할지 결정하기 위한 비율(이하 제거 비율(r))에 대한 확률 분포를 의미한다. 제1 확률 분포(93) 및 제2 확률 분포(95)는 프로세서(110)의 학습 처리부(130)의 학습에 의해 획득 또는 갱신될 수 있다. 제1 확률 분포(93) 및 제2 확률 분포(95)의 상세한 설명은 후술하도록 한다.
또한, 저장부(105)는 심볼릭 실행에 필요한 소프트웨어를 저장할 수도 있다. 저장부(105)에 저장된 소프트웨어는, 설계자에 의해 직접 작성되어 저장부(105)에 저장된 것일 수도 있고, 메모리 장치(메모리 카드 등)나 디브이디 등의 기록 매체로부터 전달받아 설치, 저장 및 수정된 것일 수도 있으며, 및/또는 유선 또는 무선 통신 네트워크를 통해 접속 가능한 전자 소프트웨어 유통망을 통하여 획득 또는 갱신된 것일 수도 있다.
출력부(109)는 심볼릭 실행 장치(100)의 처리 결과나 처리 과정에서 획득된 다양한 데이터나 알고리즘 등을 외부로 전달할 수 있다. 예를 들어, 출력부(109)는 입력된 프로그램(9)이나, 저장부(105)에 저장된 상태 집합(80)이나, 학습 처리부(130)에 의해 획득된 확률 데이터(90)나, 심볼릭실행부(120)의 처리에 따라 획득된 상태들이나, 획득된 상태들을 기반으로 검출된 오류 등을 시각적 또는 청각적으로 외부로 표출함으로써 사용자 등이 처리 결과나 과정을 확인하도록 할 수도 있다. 또한, 출력부(109)는 획득한 확률 데이터(90) 등을 외부의 다른 장치로 전달하여, 외부의 다른 장치가 수신한 확률 데이터(90)를 이용하여 후술하는 바와 같이 심볼릭실행부(120)의 동작을 수행하도록 할 수도 있다. 출력부(109)는, 예를 들어, 디스플레이, 프린터 장치, 스피커 장치, 영상 출력 단자, 데이터 입출력 단자 및/또는 통신 모듈 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 실시예에 따라서, 출력부(109)는, 심볼릭 실행 장치(100)와 일체형으로 마련된 것일 수도 있고, 또는 물리적으로 분리 가능하게 마련된 것일 수도 있다.
프로세서(110)는, 실시예에 따라서, 상태 집합(80) 및 확률 데이터(90)를 이용하여 복수의 상태(s1 내지 s4) 중에서 전부 또는 일부의 제거 대상 상태를 소거할 수도 있고, 및/또는 확률 데이터(90) 중 제1 확률 분포(93) 및 제2 확률 분포(95)에 대한 학습 처리를 수행할 수도 있다. 프로세서(110)는 이(들)의 동작을 수행하기 위해 저장부(105)에 저장된 소정의 하나 이상의 소프트웨어를 구동시킬 수도 있다. 프로세서(110)는, 예를 들어, 중앙 처리 장치(CPU: Central Processing Unit), 마이크로 컨트롤러 유닛(MCU: Micro Controller Unit), 애플리케이션 프로세서(AP: Application Processor), 전자 제어 유닛(ECU: Electronic Controlling Unit), 기본보드 관리 컨트롤러(BMC: Baseboard Management Controller), 마이컴(Micom: Micro Processor) 및/또는 이외 각종 연산 및 제어 처리를 수행할 수 있는 적어도 하나의 전자 장치 등을 포함할 수 있다. 이들은, 예를 들어, 하나 또는 둘 이상의 반도체 칩, 회로 또는 관련 부품 등을 단독으로 이용하거나 조합하여 구현될 수 있다.
일 실시예에 따르면, 프로세서(110)는 심볼릭실행부(120)를 포함할 수도 있고, 학습 처리부(130)를 포함할 수도 있으며, 심볼릭실행부(120) 및 학습 처리부(130)를 모두 포함할 수도 있다.
심볼릭실행부(120)는 상태 집합(80) 및 확률 데이터(90)를 이용하여 전체 후보 상태(s1 내지 s4) 중에서 제거 대상 상태를 결정하고, 필요에 따라 전체 후보 상태(s1 내지 s4) 중에서 제거 대상 상태를 제거하고, 그 결과를 획득하여 출력할 수도 있다. 일 실시예에 따르면, 심볼릭실행부(120)는 샘플링부(121), 특질획득부(123), 점수연산부(125) 및 상태선정부(127)를 포함할 수 있다.
샘플링부(121)는 제1 확률 분포(93)로부터 가중치 벡터(θ)를 샘플링해서 획득하고, 이와 동시에 또는 순차적으로 제2 확률 분포(95)로부터 제거 비율(r)을 샘플링하여 획득할 수 있다. 예를 들어, 샘플링부(121)는 하기의 수학식 3 및 수학식 4에 기재된 바와 같이 각각의 확률 분포(93, 95)로부터 가중치 벡터(θ) 및 제거 비율(r)을 획득한다.
[수학식 3]
[수학식 4]
수학식 3에서 Pstgy는 제1 확률 분포(93)를 의미하고, 수학식 4에서 Pratio는 제거 비율(r)을 의미한다. 수학식 3 및 수학식 4의 우변의 각각의 값은 샘플링된 가중치 벡터(θ) 및 제거 비율(r)의 일 예시이다.
샘플링부(121)가 획득한 가중치 벡터(θ) 및 제거 비율(r)은 각각 점수 연산부(125) 및 상태 선정부(127)로 전달될 수 있다.
특질 획득부(123)는, 상태 집합(80) 내의 각각의 후보 상태(s1 내지 s4, 이하 제1 후보 상태 내지 제4 후보 상태)를, 각각의 후보 상태(s1 내지 s4)에 대응하는 적어도 하나의 특질 벡터(feat(s1) 내지 feat(s4))로 변환하여 획득할 수 있다. 구체적으로 특질 획득부(123)는 수학식 1에 기재된 바와 같이 n개의 특질을 획득하고, 이를 조합하여 수학식 2에 기재된 바와 같은 특질 벡터를 획득할 수 있다. 수학식 1에 기재된 바와 같이 여기서, 각각의 특질 벡터(feat(s1) 내지 feat(s4))는, 해당 상태(s1 내지 s4)의 경로 조건식이 소정 특질에 대응하는 분기 조건을 포함하고 있는지 여부를 나타내므로, 예를 들어, 하기의 수학식 5에 기재된 바와 같이 제1 상태(s1)에 대응하는 특질 벡터(feat(s_1))가 <1, 0, 0, 1>이라면, 이는 제1 상태(s1)의 경로 조건식이 첫번째 특질에 해당하는 분기 조건과, 네번째 특질에 해당하는 분기 조건을 포함하고 있다는 것을 의미한다.
[수학식 5]
수학식 5에 기재된 바처럼 특질 획득부(123)는 각각의 상태(s1 내지 s4)마다 대응하는 특질 벡터(feat(s1) 내지 feat(s4))를 하나 이상 획득할 수 있다. 획득된 적어도 하나의 특질 벡터(feat(s1) 내지 feat(s4))는 점수 연산부(125)로 전달될 수 있다. 특질 획득부(123)가 획득한 특질 벡터(feat(s1) 내지 feat(s4))는 저장부(105)에 일시적 또는 비일시적으로 저장될 수 있다. 이 경우, 특질 벡터(feat(s1) 내지 feat(s4))는 특질 집합(91)의 형태로 저장부(105)에 저장될 수도 있다.
점수 연산부(125)는 각각의 상태에 대응하는 특질 벡터(feat(s1) 내지 feat(s4))와 샘플링부(121)가 획득한 가중치 벡터(θ)를 기반으로 각각의 후보 상태(s1 내지 s4)에 대응하는 점수를 하나 이상 획득할 수 있다. 예를 들어, 점수 연산부(125)는 하기의 수학식 6에 기재된 바와 같이, 특질 벡터(feat(s1) 내지 feat(s4))와 가중치 벡터(θ) 간의 내적을 연산하여 각 상태(s1 내지 s4)에 대한 점수를 획득할 수도 있다.
[수학식 6]
수학식 6에서 s는 상태를 의미한다. 보다 구체적으로 예를 들어, 가중치 벡터(θ)가 수학식 3과 같이 주어지고, 각각의 후보 상태(s1 내지 s4)에 대응하는 각각의 특질 벡터(feat(s))가 수학식 5와 같이 4차원의 값으로 주어진 경우, 제1 후보 상태(s1)에 대응하는 점수는 <1, 0, 0, 1>과 <0.3, -0.4, 0.6, 0.1>의 내적에 따라 0.4로 주어지고, 제2 후보 상태(s2)에 대응하는 점수는 <1, 1, 0, 0>과 <0.3, -0.4, 0.6, 0.1>의 내적에 따라 -0.1로 주어질 수 있다. 또한, 제3 후보 상태(s3)에 대응하는 점수는 <0, 0, 0, 1>과 <0.3, -0.4, 0.6, 0.1>의 내적에 따라 0.1로 주어지며, 제4 후보 상태(s4)에 대응하는 점수는 <1, 0, 1, 0>과 <0.3, -0.4, 0.6, 0.1>의 내적에 따라 0.9로 주어질 수 있다.
점수 연산부(125)에 의해 획득된 후보 상태(s1 내지 s4)에 대응하는 점수는 상태 선정부(127)로 전달될 수 있다.
상태 선정부(127)는 각각의 후보 상태(s1 내지 s4)에 대응하는 점수를 기반으로 제거 대상 상태를 선정할 수 있다. 일 실시예에 의하면, 상태 선정부(127)는 제거 비율(r)에 따라서 제거 대상 상태를 결정할 수 있다. 예를 들어, 상태 선정부(127)는 전체 후보 상태(s1 내지 s4)의 개수에 제거 비율(r)을 곱하여 제거 개수를 연산하고, 전체 후보 상태(s1 내지 s4) 중에서 제거 개수만큼의 후보 상태를 제거 대상 상태로 결정하되, 모든 후보 상태(s1 내지 s4) 중에서 상대적으로 점수가 낮은 후보 상태를 제거 대상 상태로 결정할 수 있다. 수학식 4에 기재된 바와 같이 제거 비율(r)이 50%라면, 모든 후보 상태(s1 내지 s4) 중 그 점수가 하위 50%에 해당하는 후보 상태가 제거 대상 상태로 결정된다. 만약 상술한 바와 같이 제1 내지 제4 후보 상태(s1 내지 s4) 각각에 대응하는 점수가, 각각 0.4, -0.1, 0.1 및 0.9로 주어지고 제거 비율(r)이 50%로 정해진 경우라면, 4개의 후보 상태(s1 내지 s4) 중 하위 50%에 해당하는 2개의 후보 상태가 제거 대상으로 결정될 수 있으며, 4개의 후보 상태(s1 내지 s4) 중에서 상대적으로 점수가 낮은 제2 및 제3 후보 상태(s2, s3)가 제거 대상 상태로 선정될 수 있다.
상술한 심볼릭실행부(120)의 전체적인 동작 흐름은 하기의 수학식 7의 함수(PRUNE(S,P))와 같이 표현될 수도 있다.
[수학식 7]
수학식 7에서 S는 전체 후보 상태의 집합을, Sp는 제거 대상 상태의 집합을 의미한다. r, s 및 θ는 각각 제거 비율, 상태 및 가중치 벡터이다. 이 경우, 수학식 7은 전체 후보 상태들의 집합(S)에 있는 각 후보 상태(s)마다 점수를 부여한 후, 가장 낮은 점수의 k(=|S|ⅹr) 개의 상태들로 이루어진 제거 대상 상태의 집합(Sp)를 제거하는 것으로 해석될 수 있으며, 이는 심볼릭 실행부(120)의 동작과 실질적으로 동일하다.
한편, 제거 대상 상태가 아닌 다른 후보 상태(일례로 제1 및 제4 후보 상태(s1, s4))는 테스트 케이스(t1 내지 t4)로써 학습 처리부(130)로 전달될 수 있다.
학습처리부(130)는 확률 데이터(90)를 학습하여 갱신하고, 갱신한 확률 데이터(90)를 저장부(105) 또는 심볼릭실행부(120)로 전달할 수 있다. 이 경우, 학습처리부(130)는, 확률 데이터(90) 중 제1 확률 분포(93) 및 제2 확률 분포(95) 중 적어도 하나를 학습하여 갱신할 수도 있다. 학습처리부(130)는, 일 실시예에 있어서, 데이터 생성부(131), 데이터 선별부(133) 및 갱신부(135)를 포함할 수 있다.
데이터 생성부(131)는 심볼릭실행부(120)에 의해 생성되고 및/또는 심볼릭실행부(120)에 의해 이용된 테스트 케이스(들)을 수신하고, 수신한 테스트 케이스(들)을 평가할 수 있다. 구체적으로, 데이터 생성부(131)는 해당 시점까지 심볼릭 실행부(120)가 생성한 테스트 케이스의 집합(T)를 전달받고, 테스트 케이스의 집합(T) 내의 각각의 원소(즉, 테스트 케이스(t))가 얼마나 많은 또는 어떠한 분기문(일례로 도 2의 B1, C2, D1, E1)에 도달할 수 있는지를 평가한다.
예를 들어, 테스트 케이스의 집합(T)이 4개의 테스트 케이스(t1, t2, t3, t4)를 원소로 가지고 있다면, 이는 하기의 수학식 8로 표현될 수 있다.
[수학식 8]
여기서, 데이터 생성부(131)는 각각의 테스트 케이스(t1, t2, t3, t4)마다 각각의 테스트 케이스(t1, t2, t3, t4)가 도달 가능한 적어도 하나의 분기문을 추출하고, 추출한 적어도 하나의 분기문을 대응하는 테스트 케이스(t1, t2, t3, t4)에 결합하여 적어도 하나의 데이터(D, 이하 도달 여부 정보 데이터)를 생성할 수 있다. 도달 여부 정보 데이터(D)는 각각의 테스트 케이스(t1, t2, t3, t4)가 도달 가능한 하나 이상의 분기문에 대한 정보의 집합으로 규정될 수 있다. 보다 구체적으로 예를 들어, 데이터 생성부(131)는, 프로그램 내에 존재하는 분기문(들)의 집합(B)을 B={b1, b2, b3, b4, b5, b6}라고 한다면(b1, b2, b3, b4, b5, b6는 각각의 분기문에 대응됨), 하기의 수학식 9과 같이 테스트 케이스의 집합(T)과 분기문의 집합(B)를 기반으로 적어도 하나의 도달 여부 정보 데이터(D)를 생성할 수 있다.
[수학식 9]
수학식 9에 기재된 바와 같이 도달 여부 정보 데이터(D)는, 테스트 케이스(t1 내지 t4)의 개수에 대응하는 개수(일례로 4)의 원소를 포함할 수 있으며, 각각의 원소는 각각의 테스트 케이스(t1 내지 t4)와 각각의 테스트 케이스(t1 내지 t4)가 도달 가능한 분기문(들) (b1, b2, b3, b4, b5, b6)을 대응하여 갖도록 마련된 것일 수 있다. 수학식 9의 도달 여부 정보 데이터(D)는, 제1 테스트 케이스(t1)는 3개의 분기문(b1, b2, b4)에 도달 가능하고, 제2 테스트 케이스(t2)는 3개의 분기문(b2, b3, b5)에 도달 가능하며, 제3 테스트 케이스(t3)는 2개의 분기문(b4, b6)에 도달 가능하고, 제4 테스트 케이스(t4)는 4개의 분기문(b1, b2, b3, b4)에 도달 가능함을 나타낸다.
데이터 선별부(133)는, 획득한 도달 여부 정보 데이터(D)로부터, 갱신 과정에 이용될 데이터(Dgood, 이하 선별 데이터)를 선별하여 추출할 수 있다. 여기서, 선별 데이터(Dgood)는 해당 시점까지 누적된 도달 여부 정보 데이터(D)에서 상대적으로 다양한 분기문(들), 일례로 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 집합을 의미한다. 다시 말해서, 선별 데이터(Dgood)는 도달 여부 정보 데이터(D)의 부분 집합이면서, 다른 부분 집합들보다 상대적으로 데이터의 개수는 적고, 대신에 모든 분기문(b1, b2, b3, b4, b5, b6)에 도달 가능한 집합을 의미한다. 다시 말해서, 선별 데이터 내의 분기문(즉, 선별 데이터 내의 각각의 테스트 케이스에 대응하는 분기문)을 모두 조합하면, 프로그램 내의 모든 분기문의 집합과 동일하게 될 수 있다. 구체적으로 예를 들어, 수학식 4와 같이 도달 여부 정보 데이터(D)가 주어진 경우, 모든 분기문(b1, b2, b3, b4, b5, b6)에 도달 가능하면서도 가장 적은 수의 데이터를 갖는 부분 집합, 즉 선별 데이터(Dgood)는 하기의 수학식 10와 같이 결정될 수 있다.
[수학식 10]
갱신부(135)는, 선별 데이터(Dgood)에 속하는 테스트 케이스(들)(이하 선별 테스트 케이스)를 생성할 때, 심볼릭실행부(120)가 이용했던 가중치 벡터(θ) 및 제거 비율(r) 중 적어도 하나를 기반으로 각각에 대응하는 확률 분포, 즉 제1 확률 분포(93) 및 제2 확률 분포(95)를 갱신할 수 있다. 이 경우, 갱신부(135)는 심볼릭실행부(120)가 선별 테스트 케이스를 생성할 때, 상대적으로 빈번하게 이용하였던 가중치 벡터(θ)와 제거 비율(r)에 상대적으로 높은 확률을 부여하여 제1 확률 분포(93) 및 제2 확률 분포(95)를 갱신할 수도 있다. 예를 들어, 제1 확률 분포(93)는 하기의 수학식 11에 기재된 바와 같이 가중치 벡터(θ)의 차원과 동일한 수의 확률 분포들을 결합하여 구현된 것일 수 있다.
[수학식 11]
수학식 11에서 Pstgy는 수학식 3과 동일하게 제1 확률 분포(93)를 의미하고, Pi(즉, P1 내지 Pn)은 가중치 벡터(θ)의 i번째 값을 결정하는 확률 분포로, 일례로 수학식 12과 같이 최대값이 1이고, 최소값이 -1이며, 평균은 μ이고, 표준편차는 σ인 잘려진 정규 분포(truncated normal distribution)를 포함할 수 있다.
[수학식 12]
각각의 확률 분포(P1 내지 Pn)는, 별도로 연산된 평균 및/또는 표준 편차를 기반으로 갱신될 수 있으며, 여기서, 평균 및/또는 표준 편차는, 예를 들어, 각각 선별 테스트 케이스(t3, t4)를 생성하기 위해 이용된 가중치 벡터(θ) 내의 대응하는 값(일례로 i번째 확률 분포의 경우, 가중치 벡터(θ)의 i번째 값(들))을 이용하여 연산된 것일 수도 있다. 보다 구체적으로 예를 들어, 수학식 10에 기재된 바와 같이 선별 데이터(Dgood)에 해당하는 두 개의 선별 테스트 케이스(t3, t4)를 생성함에 있어서, 심볼릭실행부(120)에 의해 이용된 가중치 벡터(θ)와 제거 비율(r)이 각각 하기의 수학식 13 및 수학식 14으로 주어졌다면, 가중치 벡터(θ)의 첫번째 값의 확률 분포(P1)는 각각의 선별 테스트 케이스(t3, t4)의 첫번째 값(0.4 및 0.8)을 이용하여 하기의 수학식 15처럼 결정될 수 있다.
[수학식 13]
[수학식 14]
[수학식 15]
수학식 13는 하나의 선별 케이스(t3)를 획득함에 있어 이용된 가중치 벡터(θ)와 제거 비율(r)의 일례를 표현한 것으로, 가중치 벡터(θ)는 <0.4, 0.2, -0.3>으로 주어지고 제거 비율(r)은 40%인 경우를 나타낸다. 수학식 14은 다른 선별 케이스(t4)를 획득하기 위해 이용된 가중치 벡터(θ)와 제거 비율(r)의 일례를 표현한 것으로, 가중치 벡터(θ)는 <0.8, 0.3, -0.5>이고 제거 비율(r)은 60%인 경우이다.
수학식 15에 기재된 바와 같이 선별 테스트 케이스(t3, t4)의 첫번째 값들인 0.4 및 0.8을 이용하여 연산된 값(들)(0.6 및 0.2)을 각각 그 평균 값 및 표준 편차로 하는 확률 분포(N(0.6, 0.2, -1, 1)가 연산될 수 있으며, 첫번째 확률 분포(P1)를 연산된 확률 분포(N(0.6, 0.2, -1, 1)로 대체함으로써 첫번째 확률 분포(P1)는 갱신될 수 있다.
수학식 11의 두번째 내지 n번째 확률 분포(P2 내지 Pn)도 이와 동일하게 갱신될 수 있다.
제2 확률 분포(95)는 선별 테스트 케이스(t3, t4)를 생성하기 위해 이용되는 제거 비율(r)의 확률을 증가시키기 위한 것으로, 예를 들어, 수학식 9 및 9에 기재된 바와 같이 40% 및 60%의 각각의 제거 비율(r)의 확률을 높이기 위한 것이다. 제2 확률 분포(95) 역시 제1 확률 분포(93)와 동일하게 또는 일부 변형된 형태로 갱신될 수 있다.
상술한 심볼릭실행부(120) 및 학습 처리부(130)는, 실시예에 따라서, 논리적으로 또는 물리적으로 구분되는 것일 수 있다. 심볼릭실행부(120) 및 학습 처리부(130)가, 논리적으로 구분된 경우, 하나의 물리적 처리 장치를 이용하여 구현될 수도 있고, 물리적으로 구분된 경우, 각각 서로 상이한 물리적 처리 장치를 이용하여 구현될 수도 있다. 또한, 심볼릭 실행부(120)의 샘플링부(121), 특질획득부(123), 점수연산부(125) 및 상태선정부(127)도 논리적으로 및/또는 물리적으로 구분될 수도 있고, 학습 처리부(130)의 데이터 생성부(131), 데이터 선별부(133) 및 갱신부(135) 역시 논리적으로 및/또는 물리적으로 구분될 수도 있다.
상술한 프로세서(110)는 심볼릭 실행을 위한 제거 대상 상태의 선정 및 제거나, 확률 데이터(90)의 갱신 이외에도 다른 동작을 더 수행할 수도 있다. 예를 들어, 상술한 프로세서(110)는 제거 대상 상태가 아닌 다른 후보 상태(들)의 집합을 기반으로 심볼릭 실행을 수행하여 대상 프로그램(9)의 오류를 검출할 수도 있다.
상술한 심볼릭 실행 장치(100)는, 상술한 처리 및/또는 제어 등을 수행할 수 있도록 특별히 고안된 장치를 이용하여 구현될 수도 있고, 또는 하나 또는 둘 이상의 정보처리장치를 단독으로 이용하거나 조합 이용함으로써 구현될 수도 있다. 여기서, 하나 또는 둘 이상의 정보처리장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 하드웨어 장치, 스마트 폰, 태블릿 피씨, 스마트 시계, 스마트 밴드, 휴대용 게임기, 두부 장착형 디스플레이(HMD: Head Mounted Display) 장치, 내비게이션 장치, 리모트 컨트롤러(리모컨), 디지털 텔레비전, 셋 톱 박스, 인공 지능 음향 재생 장치(인공 지능 스피커), 가전 기기(일례로 냉장고 또는 세탁기 등), 이동체(일례로 승용차, 버스나 이륜차와 같은 차량, 또는 이동성 로봇이나 무선 모형 차량이나, 로봇 청소기와 같은 무인 이동체 등), 비행체(일례로 항공기나, 헬리콥터나, 또는 무인 비행체(드론 등) 등), 로봇(가정용, 산업용 또는 군사용) 또는 기계 장치(산업용 또는 군사용) 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 설계자나 사용자 등은 상황이나 조건에 따라서 상술한 정보처리장치 이외에도 정보의 연산 처리 및 제어가 다양한 장치 중 적어도 하나를 상술한 심볼릭 실행 장치(100)로 고려하여 채용할 수 있다.
이하 상술한 심볼릭 실행 장치에 의해 획득된 후보 상태의 개수와 분기문 처리 범위(coverage)를 종래 기술과 비교하여 그 효과를 설명하도록 한다.
도 3은 심볼릭 실행 장치의 후보 상태의 수와 종래 기술에 의한 후보 상태의 수를 비교한 그래프 도표이다. 도 3에서 x축은 시간(초)을, y축은 상태의 개수를 의미한다. 또한, 적색 선은 상술한 심볼릭 실행 장치(100)에 의해 처리되는 후보 상태를, 녹색 선은 종래의 심볼릭 실행 장치(KLEE)에 의해 처리되는 후보 상태의 개수를 의미한다.
도 3에 도시된 바에 의하면, 상술한 심볼릭 실행 장치(100)의 경우, 초반에는 후보 상태의 개수가 계속해서 증가하나 이후 급격히 감소하여 일정 시점(1000초)의 경과 후에는 대략 2000~3000개 정도의 후보 상태가 선정되어 테스트가 수행됨을 알 수 있다. 반면에 종래의 심볼릭 실행 장치(KLEE)의 경우에는, 후보 상태의 개수가 지속적으로 증가하여 대략 4000초 이후부터는 테스트에 4만개 이상의 후보 상태가 이용되고 있다. 따라서, 상술한 심볼릭 실행 장치(100)는 상대적으로 적은 수의 후보 상태를 이용하여 심볼릭 실행 등의 테스트를 수행하게 되므로, 상태 폭발의 문제가 발생하지 않고, 이에 따른 메모리 용량 부족의 문제 등도 발생하지 않는다.
도 4는 심볼릭 실행 장치의 분기문 처리 범위와 종래 기술에 의한 분기문 처리 범위를 상호 비교한 그래프 도표이다. 도 4에서 x축은 시간(초)을 의미하고, y축은 분기문의 처리 범위(즉, 코드 커버리지)를 의미한다. 또한, 적색 선은 상술한 심볼릭 실행 장치(100)에 의한 처리 범위를, 녹색 선은 종래의 심볼릭 실행 장치(KLEE)에 의한 처리 범위를 의미한다.
도 4에 도시된 바를 참조하면, 상술한 심볼릭 실행 장치(100)의 처리 범위는 시간의 경과에 따라서 지속적으로 증가하고 있으며, 대략 만2천초 이후에는 2800개 이상의 분기문을 처리할 수 있게 되나, 종래의 심볼릭 실행 장치(KLEE)에 의하면 처리 범위는 거의 증가하지 않고 대략 2100 개 이하에서 일정하게 유지되고 있다. 다시 말해서, 상술한 심볼릭 실행 장치(100)는 종래의 심볼릭 실행 장치(KLEE)에 비해 더 넓은 범위로 분기문을 처리할 수 있게 된다.
따라서, 도 3 및 도 4에 도시된 바를 종합하면, 상술한 심볼릭 실행 장치(100)는 종래 기술에 비해 더 적은 수의 후보 상태를 유지하면서도 상대적으로 높은 분기문 커버리지(Branch Coverage)를 달성할 수 있어 테스트의 효율성을 극히 개선할 수 있게 된다.
이하 도 5를 참조하여 심볼릭 실행 방법의 여러 실시예에 대해서 설명하도록 한다.
도 5는 심볼릭 실행 방법의 일 실시예에 대한 흐름도이다.
도 5에 도시된 일 실시예에 따르면, 심볼릭 실행 방법의 수행을 위해 먼저 확률 분포(제1 확률 분포 및 제2 확률 분포 중 적어도 하나)가 획득되고, 프로그램으로부터 상태 집합이 획득될 수 있다(200). 여기서, 확률 분포는 후에 도 6을 참조하여 설명하는 바와 같이 갱신된 것일 수도 있다. 또한, 상태 집합은 제거 여부의 판단 대상이 되는 적어도 하나의 후보 상태들을 포함할 수 있다. 확률 분포의 획득 및 상태 집합의 획득은 동시에 수행될 수도 있고 순차적으로 수행될 수도 있다.
확률 분포가 획득되면, 확률 분포로부터 가중치 벡터 및/또는 제거 비율이 샘플링되어 획득될 수 있다(202). 여기서, 가중치 벡터는 제1 확률 분포로부터 획득되고, 제거 비율은 제2 확률 분포로부터 획득된 것일 수 있다. 예를 들어, 가중치 벡터 및 제거 비율은 상술한 수학식 3 및 수학식 4를 기반으로 샘플링될 수도 있다.
한편, 후보 상태 집합 내의 각각의 후보 상태가 특질 벡터로 변환되어 획득될 수 있다(204). 특질 벡터는 수학식 2에 기재된 바와 같이 하나 이상의 특질을 조합하여 생성된 것일 수 있고, 하나의 이상의 특질은 각각 어느 하나의 상태의 경로 조건식에 특정 분기 조건이 존재하는지 여부를 나타내는 값을 포함할 수 있다. 예를 들어, 특질은 수학식 1에 기재된 바와 같이 1 또는 0의 값으로 정해질 수 있다. 이 경우, 특질 벡터는 수학식 5와 같이 1 또는 0의 값의 조합으로 형성되게 된다. 실시예에 따라서, 특질 벡터로의 변환(204)은 가중치 벡터 및/또는 제거 비율의 샘플링(202)과 동시에 수행될 수도 있고, 순차적으로 수행될 수도 있다. 후자의 경우, 특질 벡터로의 변환(204)이 벡터 및/또는 제거 비율의 샘플링(202)에 대해 선행하여 또는 후행하여 개시될 수도 있다.
순차적으로 각각의 상태에 대응하는 특질 벡터와 가중치 벡터를 기반으로 각 후보 상태에 대한 점수가 연산되어 획득될 수 있다(208). 일 실시예에 따르면, 각 후보 상태에 대한 점수는, 수학식 6과 같이 각 후보 상태의 특질 벡터 및 가중치 벡터 간의 내적 연산의 결과로 정의될 수도 있다.
각각의 후보 상태에 대응하는 점수가 연산되면, 제2 확률 분포로부터 샘플링되어 획득된 제거 비율에 따라서 모든 후보 상태 중 전부 또는 일부의 후보 상태가 제거 대상 상태로 결정될 수 있다(210). 이 경우, 제거 대상은 점수에 따라 선정될 수 있으며, 예를 들어, 상대적으로 낮은 점수를 갖는 후보 상태일 수 있다. 제거될 후보 상태(즉, 제거 대상 상태)의 개수(즉, 제거 개수)는 모든 후보 상태(들)의 개수에 제거 비율을 곱한 값일 수 있다. 따라서, 최저 점수의 후보 상태(들)로부터 순차적으로 제거 개수까지의 후보 상태(들)이 제거 대상 상태로 선정되게 된다. 예를 들어, 제거 비율이 50%라면, 그 연산된 점수가 하위 50%에 해당하는 후보 상태가 제거 대상으로 선택될 수 있다.
제거 대상 후보는 전체 후보 상태로부터 제거될 수 있다(212). 이후, 제거 대상 후보가 제거된 후보 상태를 기반으로 프로그램에 대한 심볼릭 실행이 수행될 수 있다. 여기서, 심볼릭 실행 대상이 되는 프로그램은 후보 상태들의 집합이 획득되었던 프로그램을 포함할 수 있다. 제거 대상 후보가 제거된 후보 상태는, 후술하는 바와 같이 테스트 케이스의 형태로 확률 분포의 갱신을 위해 이용될 수도 있다.
이하 도 6을 참조하여 심볼릭 실행을 위한 확률 분포 갱신 방법에 대해 설명하도록 한다.
도 6은 심볼릭 실행을 위한 확률 분포 갱신 방법의 일 실시예에 대한 흐름도이다.
도 6에 도시된 바와 같이 심볼릭 실행을 위한 확률 분포 갱신 방법의 수행을 위해, 일 실시예에 따르면, 먼저 심볼릭 실행에 이용된 적어도 하나의 테스트 케이스(테스트 케이스의 집합)가 획득될 수 있다(220). 적어도 하나의 테스트 케이스는 도 5에 도시된 심볼릭 실행 과정에 따라 획득된 것일 수도 있고, 또는 사용자나 설계자 등이 미리 입력한 것일 수도 있다.
테스트 케이스(또는 이의 집합)가 획득되면, 이에 대응하여 도달 여부 정보 데이터가 생성될 수 있다. 도달 여부 정보 데이터는, 테스트 케이스 각각이 어떠한 분기문에 도달할 수 있는지를 나타내는 데이터(집합)로, 일 실시예에 따르면, 각각의 테스트 케이스마다 복수의 분기문 중에서 각각의 테스트 케이스가 도달 가능한 분기문을 대응하여 결합함으로써 생성될 수 있다. 구체적으로 예를 들어, 수학식 9에 기재된 바와 같이, 각 테스트 케이스를 도달 가능한 분기문(들)을 조합하여 하나의 원소로 구성하고, 이들 원소를 조합하여 도달 여부 정보 데이터를 생성할 수도 있다.
도달 여부 정보 데이터가 생성되면, 도달 여부 정보 데이터로부터 선별 데이터가 획득될 수 있다(224). 선별 데이터는 확률 분포의 갱신에 이용될 데이터로, 보다 상세하게는 프로그램 내의 모든 분기문에 도달 가능하면서 원소의 개수가 가장 작은 집합을 의미한다. 다시 말해서, 선별 데이터 내의 모든 분기문(즉, 선별 데이터 내의 각각의 테스트 케이스에 대응하는 분기문의 전부)의 집합, 프로그램 내의 모든 분기문과 동일하게 될 수 있다. 선별 데이터는 도달 여부 정보 데이터의 부분 집합일 수 있다.
선별 데이터가 획득되면, 선별 데이터에 해당하는 선별 테스트 케이스를 생성할 때 이용된 가중치 벡터 및 제거 비율 중 적어도 하나가 획득될 수 있다(228).
이어서, 획득한 선별 테스트 케이스의 가중치 벡터 및 제거 비율 중 적어도 하나를 기반으로, 가중치 벡터에 대응하는 확률 분포(즉, 제1 확률 분포) 및 제거 비율에 대응하는 확률 분포(즉, 제2 확률 분포) 중 적어도 하나가 갱신될 수 있다(230). 이 경우, 제1 확률 분포 및/또는 제2 확률 분포는, 상대적으로 빈번하게 이용되었던 가중치 벡터 및/또는 제거 비율에 상대적으로 높은 확률을 부여하여 갱신될 수도 있다. 보다 상세하게는 제1 확률 분포는 수학식 11에 기재된 바와 같이 다수의 확률 분포의 조합으로 형성될 수 있으며, 다수의 확률 분포의 개수는 가중치 벡터의 차원과 동일할 수 있다. 이 경우, 다수의 확률 분포 각각은 정규 분포를 포함하되, 예를 들어, 수학식 12과 같이 최대값이 1이고, 최소값이 -1이며, 평균은 μ이고, 표준편차는 σ인 잘려진 정규 분포일 수도 있다. 여기서, 다수의 확률 분포 각각은 그 평균 및 표준 편차가 갱신될 수 있으며, 그 평균 및 표준 편차는 가중치 벡터(θ)의 대응하는 값을 이용하여 갱신될 수 있다. 예를 들어, 가중치 벡터의 제i 번째 요소에 대응하는 제i 확률 분포(즉, Pi)는, 선별 테스트 케이스에 해당하는 가중치 벡터의 제i 번째 요소의 값을 이용하여 갱신될 수 있다.
제1 확률 분포 및/또는 제2 확률 분포가 갱신되면, 갱신된 제1 확률 분포 및/또는 갱신된 제2 확률 분포는, 도 5를 통해 설명한 심볼릭 실행 방법에서 가중치 벡터 및/또는 제거 비율의 샘플링에 이용될 수 있다(232, 도 5의 200 및 202).
도 5에 도시된 심볼릭 실행 방법과 도 6에 도시된 확률 분포 갱신 방법은, 양자 모두 동일한 하나의 정보처리장치에 의해 수행될 수도 있고, 또는 서로 물리적으로 분리되 상호 통신 가능하게 마련된 다른 정보처리장치에 의해 수행될 수도 있다. 후자의 경우, 예를 들어, 심볼릭 실행 방법은 스마트폰이나 데스크톱 컴퓨터 등에 의해 수행되고, 확률 분포 갱신 방법은, 스마트폰이나 데스크톱 컴퓨터 등과 연결된 서버용 하드웨어 장치에 의해 수행될 수도 있다. 또한, 도 5에 도시된 심볼릭 실행 방법은 실시예에 따라 하나 또는 둘 이상의 동종의 또는 이종의 정보처리장치에 의해 수행될 수 있고, 도 6에 도시된 확률 분포 갱신 방법도 실시예에 따라 하나 또는 둘 이상의 동종의 또는 이종의 정보처리장치에 의해 수행될 수도 있다.
상술한 실시예에 따른 심볼릭 실행 방법 또는 심볼릭 실행을 위한 확률 분포 갱신 방법은, 컴퓨터 장치에 의해 구동될 수 있는 프로그램의 형태로 구현될 수 있다. 프로그램은, 명령어, 라이브러리, 데이터 파일 및/또는 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며, 기계어 코드나 고급 언어 코드를 이용하여 설계 및 제작된 것일 수 있다. 프로그램은 상술한 방법을 구현하기 위하여 특별히 설계된 것일 수도 있고, 컴퓨터 소프트웨어 분야에서 통상의 기술자에게 기 공지되어 사용 가능한 각종 함수나 정의를 이용하여 구현된 것일 수도 있다. 또한, 여기서, 컴퓨터 장치는, 프로그램의 기능을 실현 가능하게 하는 프로세서나 메모리 등을 포함하여 구현된 것일 수 있으며, 필요에 따라 통신 장치를 더 포함할 수도 있다. 심볼릭 실행 방법 또는 심볼릭 실행을 위한 확률 분포 갱신 방법을 구현하기 위한 프로그램은, 컴퓨터에 의해 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터에 의해 판독 가능한 기록 매체는, 예를 들어, 솔리드 스테이트 드라이브(SSD), 롬, 램 또는 플래시 메모리 등과 같은 반도체 저장 매체나, 하드 디스크나 플로피 디스크 등과 같은 자기 디스크 저장 매체나, 콤팩트 디스크나 디브이디 등과 같은 광 기록 매체나, 또는 플롭티컬 디스크 등과 같은 자기-광 기록 매체 등 컴퓨터 등의 호출에 따라 실행되는 하나 이상의 프로그램을 일시적 또는 비일시적으로 저장 가능한 적어도 한 종류의 물리적 저장 매체를 포함할 수 있다.
이상 심볼릭 실행 장치, 심볼릭 실행 방법 및 심볼릭 실행을 위한 확률 분포 갱신 방법을 여러 실시예를 들어 설명하였으나, 심볼릭 실행 장치, 심볼릭 실행 방법 또는 심볼릭 실행을 위한 확률 분포 갱신 방법은 오직 상술한 실시예에 한정되는 것은 아니다. 해당 기술 분야에서 통상의 지식을 가진 자가 상술한 실시예를 기초로 수정 및 변형하여 구현할 수 있는 다른 다양한 장치나 방법 역시 상술한 심볼릭 실행 장치, 심볼릭 실행 방법 또는 심볼릭 실행을 위한 확률 분포 갱신 방법의 일 실시예가 될 수 있다. 예를 들어, 설명된 방법(들)이 설명된 바와 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소(들)가 설명된 바와 다른 형태로 결합, 연결 또는 조합되거나 다른 구성 요소 또는 균등물 등에 의하여 대치 또는 치환된다고 하더라도, 이(들) 역시 상술한 심볼릭 실행 장치, 심볼릭 실행 방법 및/또는 심볼릭 실행을 위한 확률 분포 갱신 방법의 일 실시예가 될 수 있다.
100: 심볼릭 실행 장치
110: 프로세서
120: 심볼릭 실행부 121: 샘플링부
123: 특질획득부 125: 점수연산부
127: 상태선정부 130: 학습처리부
131: 데이터생성부 133: 데이터선별부
135: 갱신부
120: 심볼릭 실행부 121: 샘플링부
123: 특질획득부 125: 점수연산부
127: 상태선정부 130: 학습처리부
131: 데이터생성부 133: 데이터선별부
135: 갱신부
Claims (14)
- 제1 확률 분포 및 제2 확률 분포 중 적어도 하나를 저장하는 저장부;
상기 제1 확률 분포로부터 가중치 벡터를 샘플링하여 획득하고, 상기 제2 확률 분포로부터 제거 비율을 샘플링하여 획득하고, 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하고, 상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 프로세서;를 포함하는 심볼릭 실행 장치. - 제1항에 있어서,
상기 적어도 하나의 특질 벡터는, 적어도 하나의 특질을 포함하고, 상기 적어도 하나의 특질은 상기 적어도 하나의 후보 상태의 경로 조건식에 특정 분기 조건이 존재하는 여부를 나타내는 값을 포함하는 심볼릭 실행 장치. - 제1항에 있어서,
상기 프로세서는, 상기 적어도 하나의 특질 벡터와 상기 가중치 벡터의 내적을 연산하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 심볼릭 실행 장치. - 제1항에 있어서,
상기 프로세서는, 상기 적어도 하나의 후보 상태의 개수에 상기 제거 비율을 곱한 개수의 후보 상태를 제거 대상 상태로 선정하는 심볼릭 실행 장치. - 제1항에 있어서,
상기 프로세서는, 상기 점수가 상대적으로 낮은 적어도 하나의 후보 상태를 제거 대상 상태로 선정하는 심볼릭 실행 장치. - 제1항에 있어서,
상기 프로세서는, 심볼릭 실행에서 획득된 적어도 하나의 테스트 케이스로부터 도달 여부 정보 데이터를 생성하고, 상기 도달 여부 정보 데이터는 상기 적어도 하나의 테스트 케이스가 도달 가능한 하나 이상의 분기문을 포함하는 심볼릭 실행 장치. - 제6항에 있어서,
상기 프로세서는, 상기 도달 여부 정보 데이터로부터 갱신에 이용될 선별 데이터를 추출하고, 상기 선별 데이터를 이용하여 상기 제1 확률 분포 및 상기 제2 확률 분포 중 적어도 하나를 갱신하고, 상기 선별 데이터는 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 상기 도달 여부 정보 데이터의 부분 집합을 포함하는 심볼릭 실행 장치 - 제1 확률 분포로부터 가중치 벡터를 샘플링하여 획득하는 단계;
적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 단계;
제2 확률 분포로부터 제거 비율을 샘플링하여 획득하는 단계;
상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 단계;를 포함하는 심볼릭 실행 방법. - 제8항에 있어서,
상기 적어도 하나의 특질 벡터는, 적어도 하나의 특질을 포함하고, 상기 적어도 하나의 특질은 상기 적어도 하나의 후보 상태의 경로 조건식에 특정 분기 조건이 존재하는 여부를 나타내는 값을 포함하는 심볼릭 실행 방법. - 제8항에 있어서,
상기 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터에 상기 가중치 벡터를 부가하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 단계는,
상기 적어도 하나의 후보 상태로부터 획득된 적어도 하나의 특질 벡터와 상기 가중치 벡터 사이의 내적을 연산하여 상기 적어도 하나의 후보 상태 각각에 대한 점수를 획득하는 단계;를 포함하는 심볼릭 실행 방법. - 제8항에 있어서,
상기 적어도 하나의 후보 상태 각각의 점수 및 상기 제거 비율을 이용하여 상기 적어도 하나의 후보 상태 중에서 제거 대상 상태를 선정하는 단계는,
상기 적어도 하나의 후보 상태의 개수에 상기 제거 비율을 곱한 개수의 후보 상태를 제거 대상 상태로 선정하는 단계; 및
상기 점수가 상대적으로 낮은 적어도 하나의 후보 상태를 제거 대상 상태로 선정하는 단계; 중 적어도 하나를 포함하는 심볼릭 실행 방법. - 제8항에 있어서,
심볼릭 실행에서 획득된 적어도 하나의 테스트 케이스로부터 도달 여부 정보 데이터를 생성하는 단계;를 더 포함하고,
상기 도달 여부 정보 데이터는 상기 적어도 하나의 테스트 케이스가 도달 가능한 하나 이상의 분기문을 포함하는 심볼릭 실행 방법. - 제12항에 있어서,
상기 도달 여부 정보 데이터로부터 갱신에 이용될 선별 데이터를 추출하는 단계; 및
상기 선별 데이터를 이용하여 상기 제1 확률 분포 및 상기 제2 확률 분포 중 적어도 하나를 갱신하는 단계;를 더 포함하고,
상기 선별 데이터는 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 상기 도달 여부 정보 데이터의 부분 집합을 포함하는 심볼릭 실행 방법. - 심볼릭 실행에서 획득된 적어도 하나의 테스트 케이스로부터 도달 여부 정보 데이터를 생성하는 단계;
상기 도달 여부 정보 데이터로부터 갱신에 이용될 선별 데이터를 추출하는 단계; 및
상기 선별 데이터를 이용하여 상기 제1 확률 분포 및 상기 제2 확률 분포 중 적어도 하나를 갱신하는 단계;를 포함하고,
상기 도달 여부 정보 데이터는 상기 적어도 하나의 테스트 케이스가 도달 가능한 하나 이상의 분기문을 포함하고, 상기 선별 데이터는 프로그램 내의 모든 분기문에 도달 가능하면서 가장 적은 개수의 데이터를 갖는 상기 도달 여부 정보 데이터의 부분 집합을 포함하는 확률 분포 갱신 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/496,012 US12086055B2 (en) | 2020-10-07 | 2021-10-07 | Method for automatically pruning search space of symbolic execution via machine learning |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20200129186 | 2020-10-07 | ||
KR1020200129186 | 2020-10-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220046467A true KR20220046467A (ko) | 2022-04-14 |
KR102635546B1 KR102635546B1 (ko) | 2024-02-13 |
Family
ID=81211543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210122949A KR102635546B1 (ko) | 2020-10-07 | 2021-09-15 | 기계 학습을 통한 심볼릭 실행의 탐색 공간 자동 축소 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102635546B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102664797B1 (ko) * | 2023-03-15 | 2024-05-10 | 고려대학교 산학협력단 | 동적 타입 언어에서 발생하는 타입에러를 자동 수정하는 장치 및 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005010854A (ja) * | 2003-06-16 | 2005-01-13 | Sony Computer Entertainment Inc | 情報提示方法および装置 |
KR20110070779A (ko) * | 2009-12-18 | 2011-06-24 | 한국전자통신연구원 | 확률 모델 테이블로부터 확률 모델값을 추출하는 방법 및 이를 이용하는 심볼값 복호화 방법 및 심볼값 복호화 장치 |
WO2019185052A1 (zh) * | 2018-03-30 | 2019-10-03 | 日本电气株式会社 | 用于确定两点之间的可达路径的方法、装置和系统 |
-
2021
- 2021-09-15 KR KR1020210122949A patent/KR102635546B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005010854A (ja) * | 2003-06-16 | 2005-01-13 | Sony Computer Entertainment Inc | 情報提示方法および装置 |
KR20110070779A (ko) * | 2009-12-18 | 2011-06-24 | 한국전자통신연구원 | 확률 모델 테이블로부터 확률 모델값을 추출하는 방법 및 이를 이용하는 심볼값 복호화 방법 및 심볼값 복호화 장치 |
WO2019185052A1 (zh) * | 2018-03-30 | 2019-10-03 | 日本电气株式会社 | 用于确定两点之间的可达路径的方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
AlvaroTorralba 외 3명, "Efficient symbolic search for cost-optimal planning", Artificial Intelligence242, pp52-79, (2017.1.31.) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102664797B1 (ko) * | 2023-03-15 | 2024-05-10 | 고려대학교 산학협력단 | 동적 타입 언어에서 발생하는 타입에러를 자동 수정하는 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102635546B1 (ko) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111539514B (zh) | 用于生成神经网络的结构的方法和装置 | |
CN111582453B (zh) | 生成神经网络模型的方法和装置 | |
CN111652380B (zh) | 针对机器学习算法进行算法参数调优的方法及系统 | |
US20200073712A1 (en) | Method, apparatus, device and medium for processing topological relation of tasks | |
US20170161604A1 (en) | Determining Orders of Execution of a Neural Network | |
WO2021029523A1 (en) | Techniques for learning effective musical features for generative and retrieval-based applications | |
KR20200013162A (ko) | 전자 장치 및 그의 제어 방법 | |
CN113723618B (zh) | 一种shap的优化方法、设备及介质 | |
CN113238972B (zh) | 一种图像检测方法、装置、设备及存储介质 | |
CN111966361B (zh) | 用于确定待部署模型的方法、装置、设备及其存储介质 | |
CN114418069A (zh) | 一种编码器的训练方法、装置及存储介质 | |
US20220414474A1 (en) | Search method, electronic device and storage medium based on neural network model | |
US11501209B2 (en) | Behavior identification method, behavior identification device, non-transitory computer-readable recording medium recording therein behavior identification program, machine learning method, machine learning device, and non-transitory computer-readable recording medium recording therein machine learning program | |
KR20220046467A (ko) | 기계 학습을 통한 심볼릭 실행의 탐색 공간 자동 축소 방법 | |
CN115601629A (zh) | 模型训练方法、图像识别方法、介质、装置和计算设备 | |
CN113673476B (zh) | 人脸识别模型训练方法、装置、存储介质与电子设备 | |
KR102533084B1 (ko) | 불균형 데이터 처리 장치 및 방법 | |
US20220171998A1 (en) | Verifying a target object based on confidence coefficients generated by trained models | |
JP6815743B2 (ja) | 画像処理装置及びその方法、プログラム | |
CN115937993B (zh) | 活体检测模型训练方法、活体检测方法、装置和电子设备 | |
CN112990461A (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
US12086055B2 (en) | Method for automatically pruning search space of symbolic execution via machine learning | |
US20230104775A1 (en) | Human robot collaboration for flexible and adaptive robot learning | |
KR20200090061A (ko) | 인공신경망 모델의 검증 방법 및 장치 | |
CN112632222B (zh) | 一种终端设备和确定数据所属领域的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |