Abstract
An object-oriented framework supports efficient component-based software development by providing a flexible architecture that can be decomposed into easily modifiable and composable classes. Object-oriented frameworks require thorough testing as they are intended to be reused repeatedly In developing numerous applications. Furthermore, additional testing is needed each time the framework is modified and extended for reuse. To test a framework, it must be instantiated into a complete, executable system. It is, however, practically impossible to test a framework exhaustively against all kinds of framework instantiations, as possible systems into which a framework can be configured are infinitely diverse. If we can classify possible configurations of a framework into a finite number of groups so that all configurations of a group have the same structural or behavioral characteristics, we can effectively cover all significant test cases for the framework testing by choosing a representative configuration from each group. This paper proposes a systematic method of classifying object structures of a framework hotspot and extracting structural test patterns from them. This paper also presents how we can select an instance of object structure from each extracted test pattern for use in the frameworks hotspot testing. This method is useful for selection of optimal test cases and systematic construction of executable test target.
객체지향 프레임워크는 개조, 합성이 용이한 클래스들로 분해될 수 있는 유연한 아키텍쳐를 제공함으로써 컴포넌트 기반의 효율적인 소프트웨어 개발을 지원한다. 프레임워크는 다수의 응용 소프트웨어의 개발에 반복적으로 재사용되므로 철저한 시험이 요구될 뿐만 아니라 재사용 시 확장된 프레임워크에 대해서도 추가적인 시험이 필요하다. 이를 위해서는 테스트 대상이 실행 가능한 형태로 제공되어야 하는데 그 구성 가능한 형태가 극히 다양할 뿐만 아니라 재사용될 때의 모든 형태를 예측하여 테스트하는 것은 현실적으로 불가능하므로, 재사용될 때마다 재구성되는 객체들의 구성 가능한 형태들을 동일한 특성을 갖는 유한 개의 그룹들로 분류하고, 각 그룹에서 시험 대상 실행 환경을 선정하여 시험하면 효과적인 시험이 가능하다. 본 논문에서는 재사용 시 다양한 형태의 객체 구조들로 개조, 확장될 수 있는 프레임워크의 가변부위 에 대해 객체 구성의 동일한 특성을 갖는 구조적 테스트 패턴들을 조직적으로 추출하는 방법과 각 패턴들로부터 시험 대상 객체 클러스터 즉, 테스트 대상 인스턴스를 선정하는 방법을 제안한다. 이 방법은 불필요한 테스트 케이스의 선정을 피하고, 테스트 대상 실행 환경의 체계적인 구축을 위해 사용될 수 있다.