디지털 라이브러리[ 검색결과 ]
문법 기반 테스트 케이스 생성을 위한 Chain-of-Thought 와 Chain-of-Verification Prompting
http://doi.org/10.5626/JOK.2025.52.1.29
소프트웨어 테스팅은 소프트웨어 개발 과정에서 중대하며 비용이 많이 드는 작업으로 자리 잡고 있다. 특히, 자동 테스트 케이스 생성 도구는 수동 생성에 비해 올바른 해결책과 잘못된 해결책을 효과적으로 구분할 수 있는 방법을 제공한다. 최근, 많은 연구자들이 문제 또는 프로그램의 논리적 사양을 기반으로 테스트 케이스를 자동으로 생성할 수 있는 딥러닝 기반 방법을 제시하였다. 본 연구에서 우리는 Chain-of-Thought (CoT) 프롬프팅을 활용하여, 문제 사양에서 '테스트 케이스 문법'을 생성할 수 있도록 ChatGPT와 Google Gemini와 같은 대규모 언어 모델(LLMs)을 학습하는 것을 제안한다. 우리는 'Chain-of-Verification' (CoVe)이라 명명된 일반화된 규칙의 세부 정보를 LLMs에 검증하고 제공하기 위해 CoT를 활용하여 구현한다. 우리는 공개적으로 사용 가능한 데이터셋인 DeepMind CodeContests 데이터셋을 사용하여 우리의 방법론을 평가하였는데, 이 데이터셋은 프로그래밍 학습자들에 의해 제출된 초급부터 고급 수준까지 다양한 프로그래밍 문제와 해당 문제들의 정확성을 검증하기 위한 테스트 케이스로 구성되어 있다.
커맨드 라인 옵션을 변이 및 선택하여 테스팅 효과를 높이는 퍼징 기법
http://doi.org/10.5626/JOK.2022.49.11.981
커맨드 라인 인터페이스 프로그램(CLI program)에서 커맨드 라인 옵션은 해당 프로그램이 어떻게 작동하는지에 지대한 역할을 하며, 테스트를 수행할 때 어떤 커맨드 라인 옵션을 사용하는지에 따라 테스트의 성능(커버리지 및 오류 탐지)은 매우 크게 변화할 수 있다. 본 연구에서는 유용한 옵션을 자동으로 선택하여 테스트를 진행하는 퍼징 기술인 PAW(Program option-AWare fuzzer)를 제시한다. PAW는 전체 퍼징 시간의 첫 10% 동안 다양한 옵션을 변이해본 뒤 실행하여, 생성된 옵션들 중 새로이 분기 커버리지를 달성하는 옵션을 유용한 옵션으로 판정하여, 이후 90%의 시간 동안에는 해당 유용한 옵션에 집중하여 테스트를 진행하도록 한다. 최신 퍼저인 AFL++을 기반으로 PAW를 구현한 뒤, 10개의 실제 C프로그램에서 최신 퍼저인 AFL++과 Angora와 비교하여 평가하였다. PAW는 10개의 실제 C 프로그램에서 AFL++과 Angora와 비교하여 높은 분기 커버리지를 달성하고, 보다 많은 크래시 오류를 탐지하였다.
동적 함수 관련도를 이용한 퍼징 커버리지 향상 기법
http://doi.org/10.5626/JOK.2021.48.4.391
커버리지 기반 퍼징(Coverage Guided Fuzzing)은 테스트 케이스 생성 기법으로, 기법 자체가 간단하고, 큰 소프트웨어에도 적용이 가능하기 때문에 널리 이용되고 있다. 하지만, 기존의 퍼징 기법은 프로그램 내부의 시맨틱 정보를 쓰지 못하고 있다. 본 논문에서는 커버리지 향상을 위해 함수 관련도를 기반으로 변이할 바이트를 선택하는 새로운 2가지 휴리스틱을 제시한다. 두 함수 간의 함수 관련도는 두 함수가 같이 실행되는 테스트 케이스의 개수로 정의 되며, 높은 함수 관련도는 두 함수가 서로 높은 의존성을 가짐을 나타낸다. 어떤 타겟 함수의 커버리지 향상을 위해, 이 새로운 휴리스틱은 그 타겟 함수와 관련도가 높은 함수들이 읽고 쓰는 바이트만 변이하여 커버리지 향상을 꾀한다. 제시된 휴리스틱은 최신 퍼저(Fuzzer)인 Angora와 FairFuzz를 기반으로 구현되었으며, 최신 퍼저들에서 사용된 실제 C 프로그램으로 평가하여 기존 퍼저 대비 각각 17.88%와 11.03%의 경로 커버리지 향상을 보였다.
Concolic Testing 기법을 활용한 프로그래밍 실습 문항의 채점 개선에 관한 연구
http://doi.org/10.5626/JOK.2019.46.11.1133
최근 프로그래밍 교육에 대한 관심이 많아지면서 효과적인 프로그래밍 교육을 위한 연구가 활발히 진행되고 있다. 현재 다양한 자동 채점 시스템이 개발되어 프로그래밍 교육에 활용되고 있지만 이 시스템을 사용하기 위해 강사가 직접 작성해야 하는 내용들이 존재한다. 특히 채점 시 사용되는 테스트 케이스가 이러한 경우이다. 채점에 사용되는 테스트 케이스는 단순히 올바른 입력만을 사용하지 않고 학생들이 소스코드에 추가할 수 있는 다양한 부분을 고려해서 작성해야 한다. 이런 테스트 케이스를 강사가 직접 작성하는 경우 작성자의 실수로 인해 충분하지 못한 테스트 케이스나 잘못된 테스트 케이스가 작성되어 채점 자체가 잘못 이루어질 수 있다. 이러한 문제를 개선하기 위해 본 논문에서는 학생들의 소스코드에 concolic testing 기법을 적용하여 기존 채점에 사용되던 테스트 케이스를 개선하는 도구를 제안하였다. 또한 제안한 도구를 이용해 잘못 채점된 사례를 발견하고 개선된 테스트 케이스를 추가하여 다시 채점한 결과를 보였다.
국방 무기 체계 SW 품질 향상을 위해 Concolic 테스팅을 통한 테스트 자동 생성
http://doi.org/10.5626/JOK.2019.46.9.926
국방 무기 체계 SW 품질 향상을 위해 노동집약적 수작업 SW 테스트 관행이 아닌, 테스트 입력을 자동으로 그리고 체계적으로 생성하는 것이 필요하다. 본 연구는 concolic 테스팅을 국방 무기 체계 SW에 적용해 높은 커버리지의 테스트 입력값을 효과적으로 생성하고, 결함을 발견하여 SW의 품질향상에 기여하였다. 프로그램의 복잡성이 크고 전체 실행 경로가 많은 프로그램의 경우, concolic 테스팅의 효율을 높일 수 있는 방법(4개의 탐색 전략, LIA 로직)을 제안하였다. 또한, 실무자들이 concolic 테스팅을 확장 적용할 수 있도록 심볼릭 모델링 방법을 예시로 제안하였다.
이벤트 의존성을 이용한 상태 머신 다이어그램의 강건성 테스팅 연구
상태 머신 다이어그램 결함 주입을 통하여 강건성 테스트 케이스를 생성하기 위한 연구가 수행되고 있다. 그러나 기존의 연구들은 상태 머신 다이어그램의 구조적인 측면만을 단순 고려하고 있기 때문에 작은 크기의 모델임에도 불구하고 많은 결함이 주입될 수 있다. 본 논문에서는 강건성 테스트의 효과성은 유지한 채, 주입될 결함의 수를 줄이기 위한 결함 주입 방법을 제안한다. 제안 방법은 전자레인지 상태 머신 다이어그램을 이용하여 설명되었으며, 유효성을 검증하기 위하여 해쉬 테이블 상태 머신 다이어그램에 제안 방법을 적용하였다. 해쉬 테이블에 적용된 실험 결과, 제안 연구는 강건성 테스트의 효과성은 유지하였으며, 주입된 결함의 수는 43%, 생성한 테스트 케이스의 수는 63% 감소시킨 것을 확인할 수 있었다.