디지털 라이브러리[ 검색결과 ]
유닛 동적 상태 데이터 기반 회귀 유닛 테스팅의 오탐 필터링 기법
최영석, 이아청, 남효주, 이인섭, 정남훈, 조규태, 김문주
http://doi.org/10.5626/JOK.2024.51.11.996
회귀 테스팅은 소프트웨어가 변경된 부분을 집중적으로 테스팅 하여 변경 시 발생한 오류를 빠르게 발견하는 기법이고, 유닛 테스팅은 소프트웨어의 작은 실행 단위인 유닛을 개별적으로 검증하는 기법이다. 본 연구는 회귀 테스팅을 효율적으로 작은 탐색 공간에서 하기 위해 자동 유닛 테스팅 기법을 도입하고, 유닛 테스팅의 오탐 탐지를 위해, 유닛 동적 상태 데이터를 학습하고 활용하는 방법을 제안한다. 실험 결과, 10개의 C 프로그램에 대해 적용하여 실제 오류가 발생한 함수를 특정할 때 acc@10 성능이 최신 기법에 비해 40%p 증가하고, 7개의 프로그램에서 제안한 기법이 보고한 오류 후보 중 상위 20%안에 대상 회귀 오류가 존재함을 보였다.
Java 프로그램 단위 테스트 코드에서 발생하는 결함의 분류와 패턴 정의
http://doi.org/10.5626/JOK.2019.46.4.341
단위 테스트 케이스를 이용한 자동 회귀 테스팅 방법론이 널리 사용됨에 따라, 단위 테스트 케이스 작성 중 발생하는 ‘테스트 코드 결함’이 소프트웨어 제품의 품질과 프로젝트의 생산성을 저하하는 새로운 소프트웨어 품질 문제로 대두되고 있다. 이러한 단위 테스트 코드 결함의 체계적인 이해와 탐지를 위하여, 본 논문에서는 Java 프로그램 단위 테스트 케이스 결함을 분류하는 결함 분류 체계와 실제 결함사례에 기반한 단위 테스트 케이스 결함 패턴을 소개한다. 테스트 케이스 결함에 대한 단편적인 분류 기준을 제시하는 기존 연구와 달리, 본 연구에서는 단위 테스트 코드의 다양한 구조적, 기능적, 의미적 구성요소의 범주를 제시한 후 이에 기반한 총체적인 분류 체계를 제안하며, 이를 이용해 실제 결함 사례와 정적 결함 검출기의 검출대상을 분류한 결과 소개한다. 이에 더하여, 본 논문에서는 실제 테스트 결함 사례로부터, 테스트 코드 결함의 주요 조건을 구체적이고 명확하게 표현한 새로운 8종의 테스트 결함 패턴을 소개한다.
안드로이드 커널 모듈 취약점 탐지를 위한 자동화된 유닛 테스트 생성 기법
본 논문에서는 안드로이드 커널 모듈의 취약점을 탐지하기 위한 자동 유닛 테스트 생성 기법을 제안한다. 안드로이드 커널 모듈의 각 함수를 대상으로 테스트 드라이버/스텁 함수를 자동 생성하고 동적 기호 실행 기법을 사용하여 테스트 입력 값을 자동으로 생성한다. 또한 안드로이드 커널 모듈의 함수 포인터와 함수 선행 조건을 고려하지 않은 테스트 생성으로 인한 거짓 경보를 줄이기 위해 정적 분석을 통한 함수 포인터 매칭 기법과 def-use 분석을 사용한 함수 선행 조건 생성 기법을 개발하였다. 자동 유닛 테스트 생성 기법을 안드로이드 커널 3.4 버전의 세 모듈에 적용한 결과 기존에 존재하던 취약점을 모두 탐지할 수 있었으며 제안한 거짓 경보 감소 기법으로 평균 44.9%의 거짓 경보를 제거할 수 있었다.