View : 1489 Download: 0

시스템 상태를 반영한 임베디드 소프트웨어 인터페이스 테스트

Title
시스템 상태를 반영한 임베디드 소프트웨어 인터페이스 테스트
Other Titles
Embedded Software Interface Test Based on the Status of System
Authors
서주영
Issue Date
2009
Department/Major
대학원 컴퓨터정보통신공학과
Publisher
이화여자대학교 대학원
Degree
Doctor
Advisors
최병주
Abstract
Today, as the embedded industry is on its fast growing track, the importance of embedded software is rising and becoming sophisticated. Several methods have been proposed for software testing. However, there remains a lack of test method for embedded software. This paper proposes a test method for embedded software based on the interface and suitable for integration testing between heterogeneous layers. This paper also describes a series of experiments to evaluate the proposed test method. This paper aims to present that 1) interface is a valuable location for embedded software testing and 2) proposed interface test method for embedded software reasonably contributes to detect interface faults. The important contributions of this paper include: Firstly, in the case of embedded system, both hardware and software are frequently customized and integrated, so embedded software raise the chances of faults in all the integrated layers. To make out the relationship with the interface and faults, we analyze the interface complexity. Software complexity is the representative metric for the fault prediction and the experiment presents that interface modules have higher value of complexity than the other modules. Therefore, this paper shows that the interface affects the chances of faults. Secondly, we analyze real faults of Linux-based embedded software and show that embedded software faults are frequently occurred during integration of heterogeneous software and hardware layers. We then classify real interface faults into the integration object and interaction pattern causing faults. As a result, this paper show that not only software interface but also hardware interface has strong impacts on the faults of embedded software. In addition, embedded software is loaded and tested on hardware, so the unstable hardware status causes faults occur in spite of no errors in software itself. Through the analysis, we define 8 interface fault types with 3 groups: integration of ‘software-software’ which is never influenced by hardware, integration of ‘software-hardware’ which is directly influenced by hardware, and integration of ‘software-software’ which is indirectly influenced by hardware. Thirdly, this paper proposes the interface test method in order to detect interface faults of embedded software. The proposed interface test method is defined as an interface node and interface variables: an interface node representing the statement at which heterogeneous layers are interacted; interface variables representing the status of system. Fourthly, this paper also show that proposed interface test criterion is useful for detecting interface faults by means of an empirical study and a field study. When dealing with real faults through a field study, we often do not have enough faults to be able to draw statistical conclusions from our technique. To gain statistical results, we conduct the fault simulation by using the mutation analysis. That is, we seed interface faults by adapting the interface mutation operators of Delamaro and Mathur [28] and investigate whether seeded faults are correctly detected. Finally, we show that the proposed interface test method is practical by developing the Justitia [8, 9], an interface-based embedded software testing tool. By applying the Justitia, we test Linux-based embedded software for mobile platform and find real faults.;본 논문은 임베디드 소프트웨어를 위해 핵심적으로 테스트되어야 할 위치로 인터페이스를 정의하고 이를 커버하는 테스트 방안을 제안한다. 특히 제안하는 테스트 방안은 임베디드 소프트웨어의 특징인 하드웨어와의 직접 또는 간접 영향에 의한 시스템 상태를 반영한 테스트 기준을 핵심으로 한다. 본 논문은 인터페이스가 임베디드 소프트웨어의 결함 발견과 결함 원인 식별을 위한 핵심 위치임을 보이고, 임베디드 소프트웨어에서 발견되는 인터페이스 결함 유형과 이를 위한 인터페이스 테스트 방안을 다음과 같은 다양한 관점의 실험과 산업체 적용을 통해 제안한다. 첫째, 본 논문은 소프트웨어 복잡도 분석을 통해 임베디드 소프트웨어는 인터페이스에서 확률적으로 결함 발생 가능성이 높음을 보인다. 임베디드 시스템이란 특정 제품이 갖는 목적에 따라 하드웨어와 소프트웨어를 맞춤 제작하기 때문에, 시스템을 구성하는 여러 소프트웨어와 하드웨어가 동시에 개발되고 불안정한 상태에서 자주 통합되는 특징을 갖는다. 이러한 임베디드 시스템 개발 특징은 일반 소프트웨어에 비해 통합되는 ‘하드웨어, HAL (Hardware Abstraction Layer), 시스템 소프트웨어, 운영체제 커널, 임베디드 미들웨어, 임베디드 GUI, 임베디드 어플리케이션’과 같은 이질적 계층들 사이의 인터페이스에서 결함 발생 가능성을 가중시킨다. 본 논문에선 결함 예측에 일반적으로 사용되는 소프트웨어 복잡도 메트릭을 이용하여 인터페이스가 포함된 모듈이 다른 모듈보다 복잡도가 매우 높음을 보이며, 이 실험 결과는 인터페이스에서 결함 발생 가능성이 높음을 보여준다. 둘째, 본 논문은 오픈 소스인 리눅스 기반 임베디드 소프트웨어의 변경 기록을 분석하여, 실제로도 임베디드 소프트웨어 결함이 서로 다른 기능과 특성을 지닌 이질적 소프트웨어 계층들이 통합되는 과정에서 주로 발생하고 있음을 보여 준다. 이를 위해 본 논문은 통합되는 대상과 결함 원인이 될 잘못된 값이 발생하는 상호작용 패턴을 분석하여 임베디드 소프트웨어에서 발생하는 인터페이스 결함 유형을 정의한다. 임베디드 소프트웨어의 경우 소프트웨어와의 인터페이스뿐 만 아니라 하드웨어와의 인터페이스가 결함 발생에 많은 영향을 미침을 보이며, 특히 임베디드 소프트웨어는 단순히 소프트웨어간의 통합이더라도 하드웨어에 탑재되어 운영되기 때문에 소프트웨어 자체엔 문제가 없더라도 하드웨어의 불안정한 상태가 결함에 많은 영향을 미치게 됨을 보인다. 이를 통해 본 논문은 임베디드 소프트웨어 인터페이스 결함 유형을 하드웨어의 영향을 전혀 받지 않는 ‘소프트웨어-소프트웨어 통합’, 하드웨어의 직접 영향을 받는 ‘소프트웨어-하드웨어 통합’과 ‘하드웨어의 영향을 간접적으로 받는 소프트웨어-소프트웨어 통합’의 3가지 그룹의 총 8개 유형으로 정의한다. 셋째, 본 논문은 정의한 임베디드 소프트웨어 인터페이스 결함을 찾을 수 있는 인터페이스 테스트 방안을 제안한다. 제안한 임베디드 소프트웨어 인터페이스 테스트 방안은 인터페이스를 기반으로 통합되는 ‘이질적 계층 사이의 함수 호출 위치 (인터페이스 노드)’와 이 때 상호작용에 직접 혹은 간접적으로 영향을 주는 ‘시스템 상태 변수 값 (인터페이스 변수)’를 의미한다. 넷째, 본 논문은 뮤테이션 분석 기법을 통해 제안한 임베디드 소프트웨어 인터페이스 테스트 방안이 인터페이스 결함을 찾기 위해 효과적인 커버리지 기준임을 증명한다. 뮤테이션 분석 기법은 제안하는 테스트 기법의 우수성을 보이기 위해 시뮬레이트된 결함을 얼마나 많이 발견하는 지를 측정하는 방법이다. 본 논문에선 뮤테이션 분석 기법을 도입하여 앞서 정의한 8개의 인터페이스 유형 별로 결함을 삽입하고, 실험을 통해 제안한 인터페이스 테스트 방안이 시뮬레이트된 결함을 찾는데 효과적임을 보인다. 특히, 기존의 소프트웨어 통합 테스트 방안으론 찾기 힘든 직접 또는 간접적인 하드웨어와의 상호작용 과정에서 발생하는 결함을 찾는데 높은 능력을 보임을 확인한다. 끝으로, 본 연구에 관한 자동화 방안 정의를 통해 ‘테스트 케이스 선정, 테스트 드라이버 생성, 테스트 수행과 테스트 커버리지 분석’의 핵심 테스트 활동을 자동화한 임베디드 소프트웨어 테스트 도구인 Justitia를 개발하였다. 현재 Justitia는 모바일 솔루션 개발 업체인 A사의 리눅스 기반 임베디드 소프트웨어 테스트에 적용되고 있으며, 제안하는 임베디드 소프트웨어 인터페이스 테스트 방안이 산업 현장에 적용 가능한 실용적인 테스트 방안임을 보인다.
Fulltext
Show the fulltext
Appears in Collections:
일반대학원 > 컴퓨터정보통신공학과 > Theses_Ph.D
Files in This Item:
There are no files associated with this item.
Export
RIS (EndNote)
XLS (Excel)
XML


qrcode

BROWSE