기술Insight

용어 사전

콘콜릭 테스팅 (Concolic Testing)
  • 용어 정의: 구체적 실행(Concrete execution)과 기호적 실행(Symbolic execution)을 결합한 하이브리드 소프트웨어 테스팅 기법입니다. 프로그램에 실제 입력값을 주어 구동하면서(Concrete) 실행 경로의 분기 조건들을 수집하고, 이를 수학적 방정식(기호 논리)으로 변환한 뒤 제약 조건 해결기(SMT Solver)를 이용해 아직 탐색하지 못한 새로운 분기 경로를 타게 만드는 테스트 입력값을 자동 생성함으로써 코드 커버리지를 극대화하는 화이트박스 검증 방식입니다.

  • AI/SW 테스팅 실무 적용: 복잡한 알고리즘을 가진 엔터프라이즈 시스템에서는 단순 무작위 대입(Fuzzing)만으로는 숨겨진 논리적 오류를 찾기 어렵고, 순수 기호적 실행만으로는 상태 공간 폭발(State Space Explosion) 문제가 발생합니다. 따라서 서비스 정식 시행(배포) 전에는 소스 코드 내의 깊고 복잡한 조건문(If/Else)이나 예외 처리 구문 속에 숨겨진 논리적 결함, 버퍼 오버플로우 취약점을 100%에 가까운 경로 커버리지로 사전 색출하는 심층 분석 도구로 사용해야 합니다. 반면 서비스 시행(운영) 후에는 라이브 환경에서 수집된 비정상 크래시(Crash) 로그나 엣지 케이스 트래픽을 구체적 실행의 초기 시드(Seed) 값으로 주입하여, 운영 중 발생한 오류의 정확한 발생 경로를 코드 레벨에서 완벽히 재현하고 핫픽스(Hotfix)의 신뢰성을 검증하는 자동 디버깅 수단으로 활용됩니다.

 

➡️ [테스팅 사례 확인하기]