Symbolic execution이란?

유형주·2022년 9월 17일
0

Symbolic Execution

코드를 테스팅 하기 위해서는 특정한 분기의 라인을 실행하는 입력을 주어야 한다. 특정 분기의 코드가 실행되기 위해 어떤 입력값을 주어야 할까? Symbolic Execution을 통해 특정한 코드라인을 실행하기 위한 조건을 알 수 있다.

Symbolic Execution은 입력값으로 변수에 어떠한 값을 주는 대신 기호를 주어 프로그램을 실행한다. 중등수학에서 배웠던 미지수 x 라고 생각하면 이해가 쉽다.

1: void func(int A){
2:	int ret =0;
3:	if (A ==1)
4:		ret = 100;
5:	else if (A ==2)
6:		ret ==200;
7:	else
8:		ret = -1;
9: }

변수에 기호를 주고 테스팅 한 결과로 (ret = 100 and a=1), (ret = 200 and a =2), (ret = -1 and (a != 1 and a != 2) 가 나오게 된다.

그림 1 은 Symbolic execution tree이다. 이제 이 트리를 통해 내가 테스트 하고 싶은 라인을 실행하기 위한 조건을 조합할 수 있게 된다.

프로그램의 모든 실행 경우의 수를 테스트할 수 없기 때문에 효율적인 방법으로 테스팅하는 것이 중요한데 Symbolic execution은 특정 라인의 실행 조건에 대한 정보를 수집할 수 있기 때문에 테스팅에 중요한 정보를 제공해준다.

[참고자료]
https://blog.naver.com/PostView.naver?blogId=suresofttech&logNo=222272849897&parentCategoryNo=157&categoryNo=155&viewDate=&isShowPopularPosts=false&from=thumbnailList

0개의 댓글