서지주요정보
Equivalent mutation detection methods for class-level mutation analysis = 클래스 수준 뮤테이션 분석을 위한 동등 뮤턴트 검출 기법
서명 / 저자 Equivalent mutation detection methods for class-level mutation analysis = 클래스 수준 뮤테이션 분석을 위한 동등 뮤턴트 검출 기법 / Won-Ho Jang.
발행사항 [대전 : 한국과학기술원, 2010].
Online Access 원문보기 원문인쇄

소장정보

등록번호

8021539

소장위치/청구기호

학술문화관(문화관) 보존서고

MCS 10024

휴대폰 전송

도서상태

이용가능(대출불가)

사유안내

반납예정일

리뷰정보

초록정보

Mutation testing is known as a very useful technique for measuring the effectiveness of a test data set and finding weak points of the test set. Mutation testing produces huge number of programs, called mutants, that are almost identical to the original program except only one statement. Equivalent mutants are mutants which result same output to the original program with any test data. Equivalent mutants are produced naturally in mutation testing process, and equivalent mutants are not detected by any test data. Therefore, an equivalent mutant degrades the effectiveness of mutation testing. Elimination of equivalent mutants is a very important problem in mutation testing. In this paper, we proposed three kinds of methods for detecting class-level equivalent mutants. These methods judge the equivalency of mutants through structural informations and behavioral information of the original program and mutants using static analysis. And we showed the effectiveness of our approach through experiments specifically designed for this research. We found that our approach can detect not a few of equivalent mutants and expected that the cost of mutation testing can be saved considerably.

뮤테이션 테스팅 기법은 시험 데이터의 효율성 판단 및 시험 데이터의 약점을 밝혀낼 수 있는 굉장히 강력하고 유용한 기법으로 알려져 있다. 뮤테이션 테스팅은 뮤턴트라고 불리는, 시험 대상 프로그램과 거의 동일하지만 아주 작은 오류를 의도적으로 삽입한 유사 프로그램들을 다수 생성한다. 이 의도된 작은 오류들은 잘 정의된 오류 패턴들에 의해 정의되어 있으며, 뮤테이션 연산자라고 불린다. 또한 이 뮤테이션 연산자에 의해 오류가 삽입되는 과정을 뮤테이션이라 부른다. 오류가 삽입된 뮤턴트는 당연히 어떠한 시험 데이터에 의해 원본 프로그램과 다른 결과를 보이게 될 것이고, 이 경우 그 시험 데이터는 유효한 시험 데이터로 판단할 수 있게 된다. 주어진 시험 데이터 셋을 모든 뮤턴트에 실행시키고 얼마나 많은 뮤턴트를 구분해 내었는지의 비율을 뮤테이션 점수라 부르며 이것으로 시험 데이터 셋의 품질을 결정할 수 있다. 그러나 어떠한 뮤턴트의 경우는 항상 원본 프로그램과 동일한 결과를 도출하는 경우가 있다. 이런 경우는 시험 데이터가 불충분하거나 뮤턴트가 동등 뮤턴트일 경우로 분류된다. 전자의 경우는 시험 데이터를 보강하여 해당 뮤턴트를 구분해내고 뮤테이션 점수를 향상시킬 수 있는 반면, 후자의 경우는 심각한 문제가 발생하게 된다. 동등 뮤턴트란 함수적으로, 혹은 표면적으로 원본 프로그램과 동일한 뮤턴트를 말한다. 동등 뮤턴트일 경우는 원본 프로그램과 동일한 기능을 하게 되므로 어떠한 시험 데이터로도 원본 프로그램과 해당 뮤턴트를 구분해 낼 수 없게 된다. 이러한 경우 시험 데이터가 여전히 불충분해서 구분이 안되는 것이라고 판단하고 무한정 시험 데이터를 추가하게 되는 위험성이 존재한다. 그렇기 때문에 동등 뮤턴트는 뮤테이션 테스팅을 방해하는 요소이며, 반드시 제거되어야 한다. 그러나 문헌에 따르면, 어떠한 뮤턴트가 동등 뮤턴트인지 가려내는 것은 결정 불가 문제로 증명이 되었다. 즉, 동등 뮤턴트를 찾아내는 일반해는 존재할 수 없다. 또한 문헌에 따르면, 뮤턴트란 원본 프로그램과 거의 유사하면서 단지 한 부분만 다른 프로그램이기 때문에, 여러 가지 조건을 가정한다면, 동등 뮤턴트를 가려내는 부분해는 존재할 수 있다는 것 역시 증명이 되었다. 이후 여러 가지 특정 상황을 가정한 부분해들이 연구되어 왔다. 소프트웨어 기술이 발전하면서 객체지향 개념과 같은 기술들이 등장하게 되었다. 뮤테이션 테스팅 역시 이러한 기술 발전에 발맞추어 객체지향 개념을 시험할 수 있도록 확장이 되었다. 기존의 전통적(문장 수준) 뮤테이션 테스팅의 22가지 뮤테이션 연산자에 더해, 상속성과 다형성 등을 반영할 수 있도록 클래스 수준의 28가지 뮤테이션 연산자들이 정의되었다. 이런 클래스 수준의 뮤테이션 테스팅에서는 전통적 뮤테이션 테스팅에 비해서 동등 뮤턴트가 차지하는 비중이 훨씬 크다는 것이 밝혀졌으나 현재까지 클래스 수준의 뮤테이션 테스팅에서 동등 뮤턴트를 찾고자 하는 연구는 희귀한 실정이다. 본 논문에서는 클래스 수준의 뮤테이션 테스팅 중에서 다형성과 관련된 특성을 제외한 14가지 뮤테이션 연산자를 대상으로 동등 뮤턴트를 찾는 연구를 진행하였다. 먼저 정적 분석을 통해 클래스의 특징을 추출하여 사용하기 위해 의존성 그래프의 개념을 도입하여 본 연구에 맞도록 각 요소를 정의하였다. 이를 바탕으로 동등 뮤턴트가 될 수 있는 두 개의 조건을 의존성 그래프를 사용하여 표현하였다. 또한, 실제 예를 들어 두 가지 기법으로 동등 뮤턴트를 검출하는 원리를 설명하였다. 이 외에, 단순한 몇가지 조건만으로도 검출해 낼 수 있는 동등 뮤턴트 패턴을 분석하여 조건으로 설정하였다. 이는 앞의 두 가지 기법과는 또 다른 측면을 검사하여 검출하는 기법이므로 앞의 두 가지 기법과 상호 보완적으로 사용할 수 있다. 먼저 검출 효율성 판단을 위해 전체 생성된 뮤턴트 중에서 동등 뮤턴트의 비율을 알아내기 위해 수작업으로 동등 뮤턴트를 분류해 내었다. 그 결과, 전체 클래스-수준 뮤턴트 중에서 약 절반에 육박하는 46.4%의 뮤턴트가 동등 뮤턴트로 판정되었다. 기존의 문장-수준 뮤턴트에 비해서 클래스-수준 뮤턴트에서 동등 뮤턴트가 미치는 영향은 훨씬 치명적임을 알 수 있었다. 기존 도구인 MuJava2를 사용하여 전체 동등 뮤턴트 중에서 56.8%를 제거할 수 있었다. 본 연구는 MuJava2를 통해서 제거된 동등 뮤턴트를 제외하고, 여전히 뮤턴트 셋에 남아있는 동등 뮤턴트를 대상으로 실험을 수행한다. 남아있는 뮤턴트중에서 여전히 동등뮤턴트는 27.2%의 비율로 포함되어 있었다. 검출 실험에서, 기법1을 사용하여 전체 동등 뮤턴트 중에서 36.6%의 동등 뮤턴트를 검출해 낼 수 있었다. 실제 정확도는 90.2%였으며, 부정확성의 원인은 정적 분석에 따른 한계에 기인한 것으로 판단되었다. 역시 기법2를 사용하여 전체 동등 뮤턴트 중에서 21.0%의 동등 뮤턴트를 검출해 낼 수 있었다. 실제 정확도는 95.1%였으며, 부정확성의 원인은 마찬가지로 정적 분석에 따른 한계에 기인한 것으로 판단되었다. 또한 기법3으로는 기법1, 기법2와는 독립적으로 32.6%의 추가적인 동등 뮤턴트를 찾아낼 수 있었으며, 그 정확도는 100.0%였다. 기법3은 굉장히 단순한 조건만으로 동등 뮤턴트를 검출해내지만, 기법1, 2와 독립적으로 적지 않은 수의 동등 뮤턴트를 검출할 수 있으므로 성능 향상에 도움이 된다고 평가할 수 있다. 전체적으로, 세 기법을 동시 적용하여 전체 동등 뮤턴트 중에서 90.2%의 동등 뮤턴트를 검출해 낼 수 있었다. 이 자동 검출로 인해 동등 뮤턴트를 수작업으로 판별해야하는 비용을 크게 줄일 수 있을 것으로 기대된다. 결과적으로 이는 전체 뮤테이션 테스팅 과정의 비용을 절감할 수 있을 것으로 기대된다. 향후 연구 과제로는 기법1, 2의 정확성 향상을 위해 또다른 분석 기법을 도입하거나, 기법3에서 더 많은 동등 패턴을 찾아내어 추가하는 연구가 있을 수 있다.

서지기타정보

서지기타정보
청구기호 {MCS 10024
형태사항 vi, 60 p. : 삽화 ; 26 cm
언어 영어
일반주기 저자명의 한글표기 : 장원호
지도교수의 영문표기 : Doo-Hwan Bae
지도교수의 한글표기 : 배두환
수록잡지명 : "클래스 수준 뮤테이션 분석을 위한 동등 뮤턴트 검출 기법". 2009년 가을 학술발표논문집, v.36.no.2(A), pp.64-65(2009)
학위논문 학위논문(석사) - 한국과학기술원 : 전산학과,
서지주기 References : p. 57-58
QR CODE

책소개

전체보기

목차

전체보기

이 주제의 인기대출도서