Skip to main content
QUICK REVIEW

[논문 리뷰] A Factorial Experiment on Scalability of Search Based Software Testing

Arash Mehrmand, Robert Feldt|arXiv (Cornell University)|2011. 01. 12.
Software Testing and Debugging Techniques참고 문헌 40인용 수 5
한 줄 요약

이 연구는 문법적 진화(GE)를 통해 생성된 점차 복잡도가 증가하는 자바 프로그램을 대상으로 인자 실험을 실시하여 유전적 알고리즘(GA) 기반 검색 기반 소프트웨어 테스팅(SBST)과 무작위 테스팅을 비교한다. 결과적으로 GA는 코드 복잡도가 증가할수록 문장 및 분기 커버리지 확보에서 무작위 테스팅을 일관되게 뛰어넘으며, 자동 테스트 데이터 생성의 효율성이 뛰어나다는 것을 입증한다.

ABSTRACT

Software testing is an expensive process, which is vital in the industry. Construction of the test-data in software testing requires the major cost and to decide which method to use in order to generate the test data is important. This paper discusses the efficiency of search-based algorithms (preferably genetic algorithm) versus random testing, in soft- ware test-data generation. This study differs from all previous studies due to sample programs (SUTs) which are used. Since we want to in- crease the complexity of SUTs gradually, and the program generation is automatic as well, Grammatical Evolution is used to guide the program generation. SUTs are generated according to the grammar we provide, with different levels of complexity. SUTs will first undergo genetic al- gorithm and then random testing. Based on the test results, this paper recommends one method to use for automation of software testing.

연구 동기 및 목표

  • 다양한 코드 복잡도에서 검색 기반 소프트웨어 테스팅(SBST)의 확장성과 효율성을 유전적 알고리즘(GA)과 무작위 테스팅을 비교하여 평가하는 것.
  • 문법적 진화(GE)를 활용해 제어된, 점진적으로 복잡도가 증가하는 소프트웨어 테스트 대상(SUT)을 자동 생성하는 것.
  • 낮은, 중간, 높은 복잡도의 프로그램에서 GA와 무작위 테스팅의 문장 및 분기 커버리지 확보 효과성을 비교하는 것.
  • 특히 프로그램 의미론, 루프, 인스트루멘테이션 오버헤드와 관련된 자동 테스트 생성 및 실행의 한계를 규명하는 것.

제안 방법

  • 요인 실험 설계를 사용하였으며, 요인으로는 테스팅 기법(GA 대 무작위 테스팅), 코드 복잡도(낮음, 중간, 높음), 커버리지 목표(문장 커버리지 및 분기 커버리지)가 포함되었다.
  • 정의된 복잡도 수준을 가진 자바 프로그램을 생성하기 위해 맞춤형 BNF 문법을 사용한 문법적 진화(GE)를 적용하였다.
  • 각 생성된 SUT는 GA와 무작위 테스팅을 모두 사용하여 문장 및 분기 커버리지 비율을 측정하였다.
  • 커버리지 측정은 3개의 복잡도 수준(75, 150, 300개 문장; 25, 50, 100개 분기)에서 실시하였으며, 각 복잡도 수준당 10개의 프로그램을 사용하였다.
  • 커버리지 추적을 위해 인스트루멘테이션을 적용하였지만, 특히 중첩되거나 복잡한 루프 구조에서 성능 오버헤드가 발생하였다.
  • 무한 루프, 범위를 벗어난 값, 도달 불가 조건 등의 문제는 루프 종료 조건 및 BNF 제약 조건을 통해 완화되었다.

실험 결과

연구 질문

  • RQ1점차 복잡도가 증가하는 프로그램에서 유전적 알고리즘(GA)의 성능이 무작위 테스팅 대비 문장 및 분기 커버리지 확보에 어떻게 다른가?
  • RQ2문법적 진화(GE)를 통한 자동 프로그램 생성이 SBST에서 확장성 있고 반복 가능한 실험을 가능하게 하는 정도는 어느 정도인가?
  • RQ3자동 생성된 복잡한 자바 프로그램에 적용했을 때 GA와 무작위 테스팅의 주요 한계는 무엇인가?
  • RQ4도달 불가 조건, 무한 루프, 데이터 오버플로우 등의 요소가 SBST에서 커버리지와 도구 신뢰성에 미치는 영향은 어떠한가?

주요 결과

  • 모든 복잡도 수준에서 유전적 알고리즘(GA)이 무작위 테스팅보다 문장 및 분기 커버리지 확보에 뚜렷이 뛰어나게 성능을 발휘하였다.
  • 높은 복잡도 수준(300개 문장, 100개 분기)에서 GA는 무작위 테스팅보다 상당히 높은 커버리지를 달성하였으며, GA의 커버리지 비율은 항상 90% 이상이었고, 무작위 테스팅은 70% 이하에 머물렀다.
  • 무작위 테스팅은 실행 시간이 빠르지만 복잡한 코드에서는 의미 있는 커버리지를 확보하지 못해 실제 테스트에 효과적이지 않았다.
  • 문장 수는 코드 복잡도의 나쁜 지표로 밝혀졌으며, 조건 및 제어 흐름 구조가 테스트 난이도를 결정하는 데 훨씬 더 중요한 영향을 미쳤다.
  • 인스트루멘테이션 및 루프 처리(특히 루프 종료 메커니즘)가 성능 저하 요인을 만들었으며, 특히 복잡하거나 중첩된 구조에서는 완전한 커버리지 확보가 제한되었다.
  • GE를 통한 BNF 기반 프로그램 생성은 제어된, 확장 가능한 실험을 가능하게 했지만 의미론적 행동 제어 및 병목 코드 방지를 위한 도전 과제를 야기하였다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.