Automated testing of reactive software with non-deterministic events: a case study on LG electric oven비결정적 이벤트를 처리하는 반응형 소프트웨어를 위한 자동화 테스팅 기법: LG 전기 오븐 사례 연구

Cited 0 time in webofscience Cited 0 time in scopus
  • Hit : 490
  • Download : 0
일상 생활 속에서 사용하는 자주 사용하는 전자레인지, 냉장고와 같은 가전제품에는 하드웨어를 제어하는 반응형 소프트웨어가 포함되어 있다. 반응형 소프트웨어는 이벤트 핸들러를 실행하여 사용자 입력과 이벤트를 받고, 입력 받는 이벤트에 따라서 내부 상태를 변경한 후에, 결과를 출력하는 것을 반복한다. 이러한 반응형 소프트웨어에서는 이벤트의 발생이 비결정적(non-deterministic)이며, 이벤트 핸들러와 메인 루프의 실행 순서가 경쟁 상태이기 때문에 개발자가 의도하지 않은 이벤트 발생 순서에 의해서 오류가 발생할 수 있다. 따라서 반응형 소프트웨어를 효과적으로 테스팅하기 위해서는 사용자 입력 값에 따라서 소프트웨어가 올바르게 동작하는 가를 확인하는 것뿐만이 아니라, 다양한 이벤트 발생 순서와 발생 시점에 따라서 소프트웨어가 올바르게 동작하는 가를 확인해야 한다. 즉, 반응형 소프트웨어를 테스트할 때, 메인 루프의 실행을 기준으로 한 상대적인 이벤트 발생 시점과 이벤트의 순서를 제어하여 소프트웨어의 다양한 행동을 관찰하는 것이 중요하다. 본 논문은 산업체에서 개발하는 반응형 소프트웨어를 테스트하기 위해서 concolic 테스팅 기법을 기반으로한 이벤트 생성 프레임워크를 소개하고, 실제 반응형 소프트웨어에 적용한 사례연구를 설명한다. 이 프레임워크는 실행 이벤트의 발생 순서와 시간을 체계적으로 생성하기 위해서 반응형 소프트웨어의 소스코드를 수정하고, 수정된 코드에 대해서 concolic 테스팅을 수행한다. 코드 수정 단계에서는 심볼릭 변수를 추가하고, 대상 프로그램의 특정 실행 시점에 이벤트를 발생시킬지를 심볼릭 변수로 결정한다. 이후 수정된 코드로 concolic 테스팅을 수행하면, concolic 테스팅은 심볼릭 변수를 체계적으로 변경하면서 다양한 이벤트 발생 시점과 순서를 생성한다. 이벤트 생성 프레임워크를 LG전자의 전기 오븐에 적용하여 단위 테스트와 통합 테스트를 수행한 결과, 오븐 제어 소프트웨어 내의 버그를 찾아내었다. 단위 테스트에서는 오븐 제어 소프트웨어의 3개의 모듈에 프레임워크를 적용하였고, 2개의 동시성 버그를 찾아내었다. 통합 테스트에서는 오븐이 비정상적인 상태로 전환되어 사용자의 입력이 무시되는 버그를 찾아내었다. 그리고 프레임워크가 얼마나 효과적이고 효율적인가를 실험적으로 보이기 위해서 랜덤 테스팅 기법과 비교하였으며, 프레임워크가 렌덤 테스팅보다 발견하기 어려운 버그를 더 효과적이고 효율적으로 찾는다는 것을 실험적으로 보였다.
Advisors
Kim, Moon Zooresearcher김문주researcher
Description
한국과학기술원 :전산학과,
Publisher
한국과학기술원
Issue Date
2015
Identifier
325007
Language
eng
Description

학위논문(석사) - 한국과학기술원 : 전산학과, 2015.2 ,[v, 38 p. :]

Keywords

automated testing; concurrency error; concolic testing; 자동화 테스팅; 동시성 오류; 콘콜릭 테스팅

URI
http://hdl.handle.net/10203/206679
Link
http://library.kaist.ac.kr/search/detail/view.do?bibCtrlNo=608592&flag=dissertation
Appears in Collection
CS-Theses_Master(석사논문)
Files in This Item
There are no files associated with this item.

qr_code

  • mendeley

    citeulike


rss_1.0 rss_2.0 atom_1.0