Regression testing is an expensive testing process used to make sure that the modified parts did not affect the existing ones. To reduce the cost of regression testing, testers may prioritize test cases according to given performance goals such as increasing the rate of fault detection. In order to maximize the rate of fault detection, researchers have proposed coverage-based test case prioritization techniques. Prior coverage-based test case prioritization techniques aimed to increase fault detection rates by ordering the test cases according to given coverage criteria. However, in practice, since detected faults are typically removed, test cases that already covered the previously executed areas might not perform as well as expected, irrespective of their coverage. In this case, the ordering of test cases based on coverage information might not be effective. In this thesis, we introduce a new test case prioritization approach that considers both coverage and historical fault information by incorporating fault localization technique. Using the historical fault detection information of test cases, our approach adjusts the priorities of fault-found test cases while maintaining test cases with high coverage in high priority. Our approach can reduce the total cost of executing entire test suite(s) and enables us to detect faults earlier in a testing process by improving the testing effectiveness compared to the prior coverage-based techniques.
테스트케이스 우선순위 기법은 테스팅 목적을 달성하기 위해 가장 적합한 테스트케이스를 우선적으로 실행하는 회귀 테스팅 기법이다. 기존 기법들은 커버리지가 높을수록 결함 발견할 확률이 높다는 가정 아래 테스트케이스의 커버리지 정도에 따라 우선순위를 선정하였다. 그러나 회귀 결함과 기존 결함과의 관련성 관점에서 볼 때 단순히 커버리지 정도만을 기반으로 우선순위를 선정하는 것은 결함발견율 측면에서 좋은 성능을 보장할 수 없을 것이다. 예를 들어, 기존 결함을 수정하기 위한 디버깅 작업을 통해 발생한 파생 결함의 경우 기존 결함의 위치에서 재발견되거나 기존 결함을 발견하지 못한 테스트케이스가 수행하는 부분에 존재할 수 있다. 이러한 경우 우선순위 선정 시 테스트케이스의 결함 발견에 대한 경험 정보에 따른 우선순위 조정이 요구된다.
따라서 본 연구에서는 우선순위 선정 시 기존 프로그램에서의 결함 발견 여부에 따라 우선순위를 조정하는 접근법을 제안하고 이에 따른 네 가지 우선순위 기법을 개발하였으며 결함 발견 여부에 대한 경험 정보를 정량화시키기 위하여 확률적 디버깅 기법인 Fault Localization을 활용하였다. 본 연구에서 제시하는 기법은 커버리지 정도에 따른 우선순위를 최대한 유지하면서 이전 버전의 시스템의 결함 발견 여부에 따라 테스트케이스의 우선순위를 높이거나 낮추는 방식으로 진행된다.
먼저 제시한 기법간의 비교를 통해 결함을 발견했던 테스트케이스의 우선순위를 높이는 것이 회귀 테스팅 단계에서 높은 결함발견율을 보이지 않음을 증명하였고 네 가지 기법 중 가장 높은 성능을 가지는 기법에 대해 기존의 기법과 비교결과, 제안된 테스트케이스 우선순위 기법이 결함의 빠른 발견 측면에서 향상되었음을 증명하였다.