KR20070021879A - 테스트 드라이버 생성 장치 및 방법 - Google Patents

테스트 드라이버 생성 장치 및 방법 Download PDF

Info

Publication number
KR20070021879A
KR20070021879A KR1020050116819A KR20050116819A KR20070021879A KR 20070021879 A KR20070021879 A KR 20070021879A KR 1020050116819 A KR1020050116819 A KR 1020050116819A KR 20050116819 A KR20050116819 A KR 20050116819A KR 20070021879 A KR20070021879 A KR 20070021879A
Authority
KR
South Korea
Prior art keywords
test
component
code
state
interface
Prior art date
Application number
KR1020050116819A
Other languages
English (en)
Other versions
KR100777103B1 (ko
Inventor
윤석진
신규상
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020050116819A priority Critical patent/KR100777103B1/ko
Priority to US11/323,213 priority patent/US7895575B2/en
Publication of KR20070021879A publication Critical patent/KR20070021879A/ko
Application granted granted Critical
Publication of KR100777103B1 publication Critical patent/KR100777103B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 컴포넌트 개발 시에 아키텍처 설계상의 요구사항이 만족하는지를 즉시 확인할 수 있도록 하여 컴포넌트 개발 시에 발생하는 오류를 조기에 줄여줄 수 있는 테스트 드라이버 생성 장치 및 방법을 제공하기 위한 것으로서, 아키텍처 모델의 개별 컴포넌트의 인터페이스에 특정한 스냅샷 정보를 입력함으로써 컴포넌트의 상태정보를 저장하는 상태변수를 추출하고 상태변수를 설정 및 확인하는 인터페이스를 추가함으로써, 컴포넌트의 유닛 테스트가 원활하게 이루어질 수 있도록 하며 상태변수에 접근하는 인터페이스를 이용하여 테스트 환경을 설정하는 테스트 준비코드와, 인터페이스 수행 후에 적절한 상태에 이르렀는지 확인하는 테스트 확인 코드를 생성하여 테스트 드라이버 코드를 자동으로 생성하도록 하는데 있다.
아키텍처, 컴포넌트, 스냅샷 정보

Description

테스트 드라이버 생성 장치 및 방법{Apparatus and method for generation of test driver}
도 1 은 본 발명에 따른 테스트 드라이버 생성 장치를 나타낸 구성도
도 2 는 본 발명에 따른 테스트 드라이버 생성 장치에서 아키텍처 모델의 구성을 나타낸 일 실시예
도 3 은 본 발명에 따른 테스트 드라이버 생성 방법을 나타낸 흐름도
도 4 는 본 발명에 따른 테스트 드라이버 생성 장치에서 스냅샷 정보의 구성을 나타낸 일 실시예
도 5 는 본 발명에 따른 테스트 드라이버 생성 방법에서 컴포넌트 골격코드를 생성하는 과정을 나타낸 흐름도
도 6 은 본 발명에 따른 테스트 드라이버 생성 방법에서 Java 언어의 클래드 형태로 컴포넌트 골격코드를 생성한 일 실시예
도 7 은 본 발명에 따른 테스트 드라이버 생성 방법에서 테스트 드라이버 코드를 생성하는 과정을 나타낸 흐름도
도 8 은 본 발명에 따른 테스트 드라이버 생성 방법에서 테스트 드라이버 코드를 Java 언어의 클래드 형태로 생성한 일 실시예
*도면의 주요부분에 대한 부호의 설명
100 : 테스트 드라이버 생성부 110 : 아키텍처 모델 작성기
120 : 스냅샷 정보 분석기 130 : 컴포넌트 골격 코드 생성기
140 : 테스트 드라이버 코드 생성기 142 : 테스트 준비코드 생성기
144 : 테스트 확인코드 생성기 200 : 테스트 시험기
300 : 테스트 결과 비교기
본 발명은 테스트 드라이버 생성에 관한 것으로, 특히 아키텍처 설계와 검증을 위한 유닛 테스트용 테스트 드라이버 생성 장치 및 방법에 관한 것이다.
일반적으로 소프트웨어 시스템을 설계하기 위해서는 블록 다이어그램 혹은 컴포넌트 다이어그램 형태의 아키텍처(architecture) 모델을 작성한다. 이때, 상기 소프트웨어 시스템은 아키텍처 모델에 따라서 여러 개의 컴포넌트(component)로 나누어지는데, 이 컴포넌트들 간의 상호작용을 통해서 소프트웨어 전체 시스템이 동작하게 된다.
아키텍처 모델은 적용 프로젝트의 편의에 따라 다양한 아키텍처 스타일이 사용되지만 일반적으로 공통적인 것은 소프트웨어 모듈로 나누어질 수 있는 컴포넌트와 컴포넌트들 간의 메시지를 주고 받을 수 있는 인터페이스간의 연결로 표현된다.
일반적으로 알려져 있는 유닛 테스트용 테스트 방법에는 폭포수형 방식과 진화적 방식이 있다.
상기 폭포수형 방식은 일반적인 개발 절차에 따라서 테스트가 진행되는 방식으로, 사용자의 요구 및 분석, 시스템의 설계, 코딩, 최종 테스트를 거쳐 배포의 단계로 이루어진다. 그러나, 이와 같은 폭포수형 방식은 시스템의 설계과정에서 완성품을 제작하여 최종 테스트를 거치게 되므로 유닛 테스트용 테스트 방법 초기에는 문제점을 식별하기 어렵다는 단점을 가지고 있다.
이를 해결하기 위한 방식이 진화적 방식이다. 이 진화적 방식은 모듈 단위로 구현을 하고 테스트하고 수정하는 방식으로, 초기에 테스트 케이스를 설계함으로서 오류를 사전에 예방할 수 있는 효과가 있다. 즉, 유닛 테스트 프레임워크와 같은 유틸리티를 사용하여 테스트를 진행하므로서, 개발 과정 중에 올바르게 개발되었는가를 확인하면서 개발할 수 있게 된다.
이와 같은, 진화적 방식을 이용한 유닛 테스트용 테스트 방법을 통해 아키텍처 설계와 검증을 위한 테스트 드라이버 생성 장치 및 방법은 다음과 같은 선행 기술들이 있다.
“Automatic generation of test driver“의 명칭을 갖는 미국특허 US5,799,266호는 테스트 명세에 의해서 테스트 드라이버 코드를 생성함으로써, 테스트 케이스 프로그램의 작성의 부담을 줄여주는데 그 목적이 있다.
이를 위해, 소프트웨어 인터페이스의 테스트 함수의 실행 시퀀스와 대응되는 속성값과 테스트 파라미터 속성의 값을 명시한 테스트 수식을 입력으로 받아서 테스트 드라이버 생성기는 명세된 테스트 함수들을 명시된 순서대로 테스트 함수의 파라미터 속성의 선택된 속성값의 모든 조합을 수행할 수 있는 테스트 드라이버를 생성하고 있다.
그리고 “Object oriented apparatus and method for testing object oriented software"의 명칭을 갖는 미국특허 US6,353,897호는 객체지향 프로그래밍 환경에서 테스트하기 위한 프레임웍을 제공하는데 그 목적이 있다.
이를 위해, 테스트 드라이버 추상 클래스와 테스트 케이스 클래스가 정의된다. 그리고, 각각의 테스트 드라이버는 테스트 드라이버 클래스의 확장으로서 만들고, 각각의 테스트 케이스는 테스트 케이스 클래스의 확장으로 만들어진다. 이때, 테스트 드라이버 클래스의 인스턴스가 실행될 때 테스트 케이스들을 생성시키는데 어떤 테스트 케이스가 실행되어야 할지를 미리 결정한 후, 실행시키고 결과를 보고한다.
다음으로 “Test specification generation system and storage medium storing a test specification generation program"의 명칭을 갖는 미국특허 US6,243,835호는 테스팅 절차의 조작 효율을 높이기 위해 설계 절차 중에 입력된 설계정보의 저장소를 활용하여 테스트 명세를 생성하는데 그 목적이 있다.
이를 위해, 데이터 분석 장치는 테스트 설정파일에 적혀진 문장을 줄 단위로 읽어들인 후에 테스트 항목 결정 장치는 테스트 항목의 특성을 결정한다. 즉, 1차 테스트 항목 생성 장치는 설계정보를 읽는 장치를 이용해 설계 정보의 테이블로부터 얻어진 정보에 따라 테스트 항목을 생성하고, 2차 테스트 항목 생성 장치는 표준 테스트 항목 파일로부터 테스트 항목을 생성한다. 그리고 테스트 명세 쓰기 장치는 테스트 명세 파일을 생성하기 위해서 상기 1차 테스트 항목 생성 장치와 2차 테스트 항목 생성장치에 의해 생성된 고정된 출력 라인과 테스트 항목을 출력한다.
그러나, 이와 같은 진화적 방식을 통한 테스트 드라이버 생성 장치 및 방법은 주어진 테스트 명세에 의해서 테스트 드라이버를 생성하기 때문에 초기에 테스트 케이스의 설계에 어려움이 있어서 유닛 테스트 작성에 익숙하지 않은 개발자는 접근하는데 큰 어려움을 갖는 단점을 가지고 있다.
또한, 객체지향의 상속 특성을 이용하여 테스트를 수행하기 때문에 테스트 되는 소프트웨어를 개발자가 직접 개발하고 다수개의 테스트 케이스의 코드들을 실행시킬 수 있는 환경을 각각 제공하여야 하는 번거로움을 가지게 된다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 소프트웨어 시스템의 설계시 설계에 사용된 컴포넌트들이 만족해야 하는 설계자의 요구사항을 테스트 드라이버 형태로 생성하여 개발자에게 전달하여 설계자의 요구사항을 만족하는 시스템을 제공하는데 그 목적이 있다.
본 발명의 다른 목적은 컴포넌트 개발 시에 아키텍처 설계상의 요구사항이 만족하는지를 즉시 확인할 수 있도록 하여 컴포넌트 개발 시에 발생하는 오류를 조기에 줄여줄 수 있는 테스트 드라이버 생성 장치 및 방법을 제공하는데 있다.
본 발명의 또 다른 목적은 유닛 테스트를 수행하기 위하여 설계 단계에서 개별 컴포넌트를 시험할 수 있는 테스트 케이스를 생성해 내며, 이를 컴포넌트 개발자에게 테스트를 수행하면서 개발할 수 있도록 지원하여 소프트웨어 개발 중에 용이하게 사전 테스트를 수행할 수 있도록 하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 테스트 드라이버 생성 장치의 특징은 아키텍처 모델에 기술된 컴포넌트 모델 정보와 상기 컴포넌트의 인터페이스에 대한 스냅샷 정보를 이용하여 컴포넌트 골격코드를 생성하고, 상기 골격코드를 이용하여 테스트 환경 설정 및 테스트 수행 후 확인을 위한 테스트 드라이버 코드를 생성하는 테스트 드라이버 생성부와, 상기 테스트 드라이버 생성부에서 생성된 컴포넌트 골격코드 및 테스트 드라이버 코드를 이용하여 테스트를 수행하는 테스트 시험기와, 상기 테스트 시험기에서 수행된 결과를 비교하여 오류를 검출하는 테스트 결과 비교기를 포함하여 구성되는데 있다.
바람직하게 상기 테스트 드라이버 생성부는 그래픽 사용자 인터페이스인 소프트웨어 시스템을 통해 적어도 하나 이상의 컴포넌트로 구성된 아키텍처 모델을 입력하는 아키텍처 모델 작성기와, 상기 아키텍처 모델 작성기에서 입력되는 각 컴포넌트의 인터페이스 정보를 입력받아 컴포넌트의 인터페이스에 대한 스냅샷 정보를 분석하여 개별 컴포넌트의 상태변수를 추출하는 스냅샷 정보 분석기와, 상기 스냅샷 정보 분석기에서 분석된 스냅샷 정보를 이용하여 해당 컴포넌트에 정의된 상태변수를 포함한 컴포넌트 골격 코드를 생성하는 컴포넌트 골격 코드 생성기와, 상기 스냅샷 정보 분석기에서 분석된 컴포넌트의 상태변수에 접근하는 각 컴포넌트의 인터페이스를 이용하여 상태값이 기 설정된 기댓값에 이르렀는지 반복적 테스트 수행을 통해 테스트 드라이버 코드를 생성하는 테스트 드라이버 코드 생성기를 포함하여 구성되는 것을 특징으로 한다.
바람직하게 상기 테스트 드라이버 코드 생성기는 컴포넌트 골격 코드에 추가된 상태변수 접근 인터페이스를 이용하여 스냅샷에 정의된 상태변수의 상태를 설정하는 소스 코드 문장인 테스트 준비코드를 생성하는 테스트 준비코드 생성기와, 상기 테스트 준비코드 생성기에서 생성된 테스트 준비코드를 이용하여 테스트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 유닛 테스트용 소스 코드인 테스트 확인코드를 생성하는 테스트 확인코드 생성기를 포함하여 구성되는 것을 특징으로 한다.
바람직하게 상기 아키텍처 모델은 컴포넌트의 정의와 컴포넌트의 인터페이스 정보를 포함하는 것을 특징으로 한다.
바람직하게 상기 스냅샷 정보는 해당 스냅샷에 관련있는 상태변수들이 저장된 상태변수 리스트와, 상기 상태변수에 상응하는 상태값이 저장된 상태값 리스트와, 인터페이스의 파라미터로 들어가는 입력값이 저장된 입력값 리스트와, 상기 입력값에 대해서 얻고자 하는 기댓값이 저장된 기댓값 리스트 중 적어도 하나 이상으로 구성되는 것을 특징으로 한다.
바람직하게 상기 컴포넌트의 골격코드는 컴포넌트의 정의 부분, 상태변수의 정의부분, 일반 인터페이스의 정의부분 및 상태변수 인터페이스 정의부분 중 적어도 하나 이상으로 구성되는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 테스트 드라이버 생성 방법의 특징은 아키텍처 모델의 개별 컴포넌트의 인터페이스에 특정한 스냅샷 정보를 입력함으로써 컴포넌트의 상태정보를 저장하는 상태변수를 추출하는 단계와, 상기 추출된 상태변수를 설정 및 확인하는 컴포넌트의 인터페이스를 이용하여 각 컴포넌트들의 골격코드를 생성하는 단계와, 상기 설정된 상태변수에 접근하는 컴포넌트의 인터페이스를 통해 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 테스트 드라이버 코드를 자동으로 생성하는 단계를 포함하여 이루어지는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 테스트 드라이버 생성 방밥의 특징은 테스트를 위한 설계모델인 복수개의 컴포넌트들로 이루어진 아키텍처 모델을 입력하는 단계와, 상기 각각의 컴포넌트에 대해서 인터페이스 별로 특정한 스냅샷 정보를 입력하여 개별 컴포넌트의 상태정보를 저장하는 상태변수를 추출하는 단계와, 상기 입력된 아키텍처 모델을 통해 입력된 정보를 이용하여 컴포넌트의 유닛 테스트가 원활하게 이루어질 수 있는 각 컴포넌트들의 골격코드를 생성하는 단계와, 상기 추출된 상태변수에 접근하는 컴포넌트의 인터페이스를 통해 테스트 환경을 설정하는 테스트 준비코드 생성 단계와, 상기 생성된 테스트 준비코드를 이용하여 테스트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 유닛 테스트용 소스 코드인 테스트 확인코드를 생성하여 테스트 드라이버 코드를 자동으로 생성하는 단계와, 상기 생성된 컴포넌트 골격코드와 상기 생성된 테스트 드라이버 코드를 이용하여 테스트를 수행하고, 수행된 결과의 비교를 통해 컴포넌트 개발 시에 발생하는 오류를 조기에 검출하는 단계를 포함하여 이루어지는데 있다.
바람직하게 상기 아키텍처는 각 컴포넌트에 대한 정의와 컴포넌트 인터페이 스간의 정보를 저장하는 것을 특징으로 한다.
바람직하게 상기 컴포넌트는 자신의 상태를 표현하는 상태변수가 정의되어 있으며, 이 상태변수들에 대한 정보는 컴포넌트의 속성 정보 형태로 입력되는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 테스트 드라이버 생성 방법의 특징은 아키텍처 모델의 개별 컴포넌트의 인터페이스에 특정한 스냅샷 정보를 입력함으로써 컴포넌트의 상태정보를 저장하는 상태변수를 추출하는 단계와, 상기 추출된 상태변수를 설정 및 확인하는 컴포넌트의 인터페이스를 이용하여 각 컴포넌트들의 골격코드를 생성하는 단계와, 상기 설정된 상태변수에 접근하는 컴포넌트의 인터페이스를 통해 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 테스트 드라이버 코드를 자동으로 생성하는 단계를 포함하여 이루어지는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 테스트 드라이버 생성 방법의 다른 특징은 테스트를 위한 설계모델인 복수개의 컴포넌트들로 이루어진 아키텍처 모델을 입력하는 단계와, 상기 각각의 컴포넌트에 대해서 인터페이스 별로 특정한 스냅샷 정보를 입력하여 개별 컴포넌트의 상태정보를 저장하는 상태변수를 추출하는 단계와, 상기 입력된 아키텍처 모델을 통해 입력된 정보를 이용하여 컴포넌트의 유닛 테스트가 원활하게 이루어질 수 있는 각 컴포넌트들의 골격코드를 생성하는 단계와, 상기 추출된 상태변수에 접근하는 컴포넌트의 인터페이스를 통해 테스트 환경을 설정하는 테스트 준비코드 생성 단계와, 상기 생성된 테스트 준비코드 를 이용하여 테스트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 유닛 테스트용 소스 코드인 테스트 확인코드를 생성하여 테스트 드라이버 코드를 자동으로 생성하는 단계와, 상기 생성된 컴포넌트 모델 코드와 상기 생성된 테스트 드라이버 코드를 이용하여 테스트를 수행하고, 수행된 결과의 비교를 통해 컴포넌트 개발 시에 발생하는 오류를 조기에 검출하는 단계를 포함하여 이루어지는데 있다.
바람직하게 상기 아키텍처는 각 컴포넌트에 대한 정의와 컴포넌트 인터페이스간의 정보를 저장하는 것을 특징으로 한다.
바람직하게 상기 컴포넌트는 자신의 상태를 표현하는 상태변수가 정의되어 있으며, 이 상태변수들에 대한 정보는 컴포넌트의 속성 정보 형태로 입력되는 것을 특징으로 한다.
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 테스트 드라이버 생성 장치 및 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.
도 1 은 본 발명에 따른 테스트 드라이버 생성 장치를 나타낸 구성도이다.
도 1을 참조하여 설명하면, 아키텍처 모델에 기술된 컴포넌트 모델 정보와 상기 컴포넌트의 인터페이스에 대한 스냅샷 정보를 이용하여 컴포넌트 골격코드 및 테스트 드라이버 코드를 생성하는 테스트 드라이버 생성부(100)와, 상기 테스트 드라이버 생성부(100)에서 생성된 컴포넌트 모델 코드 및 테스트 드라이버 코드를 이 용하여 테스트를 수행하는 테스트 시험기(200)와, 상기 테스트 시험기(200)에서 수행된 결과를 비교하여 오류를 검출하는 테스트 결과 비교기(300)로 구성된다.
이때, 상기 테스트 드라이버 생성부(100)는 아키텍처 모델 작성기(110)와, 스냅샷 정보 분석기(120)와, 컴포넌트 골격 코드 생성기(130)와, 테스트 드라이버 코드 생성기(140)로 구성된다.
상기 아키텍처 모델 작성기(110)는 그래픽 사용자 인터페이스인 소프트웨어 시스템을 통해 적어도 하나 이상의 컴포넌트로 구성된 아키텍처 모델을 입력한다. 이때, 상기 아키텍처 모델 작성기(110)에 입력되는 아키텍처 모델은 컴포넌트의 정의와 컴포넌트의 인터페이스 정보를 포함하는 것이 바람직하다.
그리고 상기 스냅샷 정보 분석기(120)는 상기 아키텍처 모델 작성기(110)에서 입력되는 각 컴포넌트의 인터페이스 정보를 입력받아 컴포넌트의 인터페이스에 대한 스냅샷 정보를 분석하여 개별 컴포넌트의 상태정보를 저장하는 상태변수를 추출한다.
또한, 상기 컴포넌트 골격 코드 생성기(130)는 상기 스냅샷 정보 분석기(120)에서 분석된 스냅샷 정보를 이용하여 해당 컴포넌트에 정의된 상태변수를 포함한 컴포넌트 골격 코드를 생성한다. 이때, 상기 컴포넌트의 골격코드는 컴포넌트의 정의 부분, 상태변수의 정의부분, 일반 인터페이스의 정의부분 및 상태변수 인터페이스 정의부분 중 적어도 하나 이상으로 구성되는 것이 바람직하다.
마지막으로 상기 테스트 드라이버 코드 생성기(140)는 상기 스냅샷 정보 분석기(120)에서 분석된 컴포넌트의 상태변수에 접근하는 각 컴포넌트의 인터페이스 를 이용하여 테스트 환경을 설정하는 테스트 준비코드 및 각 컴포넌트 인터페이스 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 확인하는 테스트 확인코드를 생성하여 테스트 드라이버 코드를 자동으로 생성한다.
여기서 상기 테스트 드라이버 코드 생성기(140)는 테스트 준비코드 생성기(142)와, 테스트 확인코드 생성기(144)로 구성된다.
이때, 상기 테스트 준비코드 생성기(142)는 컴포넌트 골격 코드에 추가된 상태변수 접근 인터페이스를 이용하여 스냅샷에 정의된 상태변수의 상태를 설정하는 소스 코드 문장인 테스트 준비코드를 생성한다.
그리고 상기 테스트 확인코드 생성기(144)는 상기 테스트 준비코드 생성기(142)에서 생성된 테스트 준비코드를 이용하여 테스트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 판별하는 유닛 테스트용 소스 코드인 테스트 확인코드를 생성한다.
상기 스냅샷 정보는 해당 스냅샷에 관련있는 상태변수들이 저장된 상태변수 리스트와, 상기 상태변수에 상응하는 상태값이 저장된 상태값 리스트와, 인터페이스의 파라미터로 들어가는 입력값이 저장된 입력값 리스트와, 상기 입력값에 대해서 얻고자 하는 기댓값이 저장된 기댓값 리스트 중 적어도 하나 이상으로 구성되는 것이 바람직하다.
이와 같이 구성된 본 발명에 따른 테스트 드라이버 생성 방법을 첨부한 도면 을 참조하여 상세히 설명하면 다음과 같다.
도 3 은 본 발명에 따른 테스트 드라이버 생성 방법을 나타낸 흐름도이다.
도 3을 참조하여 설명하면, 먼저 본 시스템의 사용자가 아키텍처 모델 작성기(110)를 통해 복수개의 컴포넌트들로 이루어진 아키텍처 모델을 입력한다(S10).
이때, 상기 아키텍처는 도 2에서와 같이 복수개의 컴포넌트들이 서로 연결된 구조로 구성되며, 컴포넌트에 대한 정의와 컴포넌트의 인터페이스간의 정보를 저장하고 있다. 여기서 상기 컴포넌트들은 각각 컴포넌트의 상태를 표현하는 상태변수가 정의되어 있으며, 이 상태변수들에 대한 정보는 컴포넌트의 속성 정보 형태로 입력이 되어 있다.
다음으로 사용자가 스냅샷 정보 분석기(120)를 통해 상기 아키텍처에 구성되는 각각의 컴포넌트에 대해서 인터페이스 별로 특정한 스냅샷 정보를 입력하여 개별 컴포넌트의 상태정보를 저장하는 상태변수를 추출한다(S20).
이때, 상기 스냅샷 정보는 도 4에서 도시하고 있는 것과 같이 상태변수 리스트, 상태값 리스트, 입력값 리스트, 기댓값 리스트로 구성되며, 상기 상태변수 리스트는 해당 스냅샷에 관련있는 상태변수들의 리스트로 이루어진다. 또한, 상기 입력값 리스트는 컴포넌트 인테페이스의 파라미터로 들어가는 입력값들의 리스트로 이루어지며, 이러한 입력값은 자동 생성 기법을 이용하여 자동 생성하게 할 수도 있다. 그리고 상기 기댓값 리스트는 상기 입력값에 대해서 얻고자 하는 값들의 리스트로 이루어지는데, 이때 상기 기댓값에는 상태변수의 기댓값을 포함하여 반환되는 기댓값도 포함된다.
여기서 상기 스냅샷 정보는 설계자가 원하는 개수만큼 스냅샷 정보 분석기(120)를 통해 입력하도록 한다.
이어, 상기 아키텍처 모델 작성기(110)에서 입력된 아키텍처 모델을 통해 입력된 정보를 이용하여 컴포넌트의 유닛 테스트가 원활하게 이루어질 수 있는 각 컴포넌트들의 골격코드를 생성한다(S30).
이때, 상기 생성되는 컴포넌트들의 골격코드는 먼저 아키텍처 모델의 개별 컴포넌트의 인터페이스에 특정한 스냅샷 정보를 입력함으로써, 컴포넌트의 상태정보를 저장하는 상태 변수를 추출한다(401). 이어 상기 추출된 상태변수를 설정 및 확인하는 인터페이스를 추가하여 컴포넌트의 유닛 테스트가 원활하게 이루어지도록 한다(402)(403).
도 5 는 본 발명에 따른 테스트 드라이버 생성 방법에서 컴포넌트 골격코드를 생성하는 과정을 나타낸 흐름도이다.
도 5와 같이, 먼저 추출된 아키텍처 모델에서 컴포넌트 정의 리스트를 불러들인다(S100).
이어 해당되는 n번째 컴포넌트 정의에 따라 해당 언어에 맞게 소스코드를 생성하고(S120), 상기 컴포넌트의 속성 값에 따라서 변수를 생성한다(S130).
그리고 상기 추출된 아키텍처 모델의 스텝샷 정보에서 사용되는 모든 상태변수의 이름과 타입들을 추출한다(S140).
이렇게 추출된 상기 상태변수의 이름에 해당하는 설정 메소드(test_set_변수이름)를 생성하고(S150), 아울러 상기 상태변수의 이름에 해당하는 확인 메소드 변 수타입(test_get_변수이름)을 생성한다(S160).
그리고 모든(n) 컨포넌트에 대해서 생성하였는가를 판단하여(S170) 모두 처리하고(S180)(S110) 컴포넌트 골격코드 생성을 종료한다.
이렇게 생성되는 상기 각 컴포넌트의 골격코드에는 컴포넌트의 정의 부분, 상태변수의 정의 부분, 일반 인터페이스의 정의 부분, 상태변수 인터페이스 정의 부분으로 구성된다. 그리고 상기 상태변수 인터페이스 정의 부분은 테스트 과정을 위해서 상태변수를 설정하고, 상태변수의 값을 확인하기 위하여 사용된다. 이때, 이러한 상태변수 인터페이스 부분은 소프트웨어 시스템이 최종 완성되는 시점에서는 보안을 위하여 제거될 수 있다.
도 6 은 본 발명에 따른 테스트 드라이버 생성 방법에서 컴포넌트 골격코드를 Java 언어의 클래드 형태로 생성한 일 실시예를 나타내고 있다.
다음으로 테스트 준비코드 생성기(142)를 통해 상기 스냅샷 정보 분석기(120)에서 분석된 스냅샷 정보를 이용하여 상태 변수에 접근하는 컴포넌트 인터페이스를 이용하여 테스트 환경을 설정하는 테스트 준비코드를 생성한다(S40).
이때 상기 컴포넌트의 인터페이스 별로 테스트하기 위하여 각 스냅샷별로 상태변수와 상태값을 설정하는 방법을 호출하는 코드를 작성한다.
이어 테스트 확인코드 생성기(144)를 통해 상기 테스트 준비코드 생성기(142)에서 생성된 테스트 준비코드를 이용하여 테스트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 유닛 테스트용 소스 코드인 테스트 확인코드를 생성하여 테스트 드라이버 코드를 자동으로 생성한다(S50). 즉, 상기 테스트 확인 코드 생성기는 메소드 수행 후에 각 상태변수 값들이 인터페이스 호출 후에 제대로 변경되었는지를 확인하게 된다.
도 7 은 본 발명에 따른 테스트 드라이버 생성 방법에서 테스트 드라이버 코드를 생성하는 과정을 나타낸 흐름도이다.
도 7과 같이, 먼저 스냅샷의 n번째 열(Row)에서 상태변수 리스트를 읽어 들인다(S200). 그리고 상기 스냅샷의 n번째 열에서 상태변수 값을 읽어 들인다(S220).
이어 테스트 대상 클래스를 생성하는 코드를 생성하고, 상태변수에 상태변수 값을 셋팅하는 메소드를 추가한다(S230).
그리고 상기 스냅샷의 n번째 열에서 입력값을 읽어 들이고(S240), 상기 읽어들인 테스트 대상 클래스의 입력값에 해당하는 메소드를 호출하는 테스트 준비코드를 생성한다(S240)
아울러 상기 스냅샷의 n번째 열에서의 기댓값을 읽어 들인다(S250).
그리고 상기 테스트 대상 클래스의 상태값을 읽어서 상기 기댓값과 맞는지 확인하는 테스트 확인 코드를 생성한다.
이와 같은 동작이 스탭샷의 모든 줄에 대해서 테스트 드라이버 코드를 생성하는지를 판단하여(S280), 모두 처리하고(S290)(S200) 테스트 드라이버 코드의 생성을 종료한다.
도 8 은 본 발명에 따른 테스트 드라이버 생성 방법에서 테스트 드라이버 코 드를 Java 언어의 클래드 형태로 생성한 일 실시예를 나타내고 있다.
이와 같이 상기 컴포넌트 골격 코드 생성기(130)에서 생성된 컴포넌트 모델 코드와 상기 테스트 드라이버 코드 생성기(140)에서 생성된 테스트 드라이버 코드를 이용하여 테스트 시험기(200)에서 테스트를 수행하게 된다. 그리고 상기 테스트 시험기(200)에서 수행된 결과를 테스트 결과 비교기(300)를 통해 비교하여 컴포넌트 개발 시에 발생하는 오류를 조기에 검출하게 된다.
이상에서와 같이 상세한 설명과 도면을 통해 본 발명의 최적 실시예를 개시하였다. 용어들은 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상에서 설명한 바와 같은 본 발명에 따른 테스트 드라이버 생성 장치 및 방법은 다음과 같은 효과가 있다.
첫째, 일반적인 유닛 테스트 프레임 워크의 규칙에 맞게 테스트 드라이버 코드를 생성하여 유닛 테스트 프레임 워크를 수행시킴으로써, 컴포넌트 개발 시에 아키텍처 설계상의 요구사항이 만족하는지를 즉시 확인할 수 있도록 하여 컴포넌트 개발 시에 발생하는 오류를 조기에 줄여주는 효과가 있다.
둘째, 아키텍처 설계자의 의도대로 소프트웨어 시스템이 개발될 수 있도록 유닛 테스트를 통해 확인할 수 있는 효과가 있다.
셋째, 일반적인 유닛 테스트를 수행하기 위하여 설계 단계에서 개별 컴포넌트를 시험할 수 있는 테스트 케이스를 생성해내며, 이를 컴포넌트 개발자에게 테스트를 수행하면서 개발할 수 있도록 지원함으로써, 소프트웨어 개발 중에 용이하게 사전 테스트를 수행할 수 있는 효과가 있다.

Claims (11)

  1. 그래픽 사용자 인터페이스인 소프트웨어 시스템을 통해 적어도 하나 이상의 컴포넌트로 구성된 아키텍처 모델을 입력하는 아키텍처 모델 작성기와,
    상기 아키텍처 모델 작성기에서 입력되는 각 컴포넌트의 인터페이스 정보를 입력받아 컴포넌트의 인터페이스에 대한 스냅샷 정보를 분석하여 개별 컴포넌트의 상태변수를 추출하는 스냅샷 정보 분석기와,
    상기 스냅샷 정보 분석기에서 분석된 스냅샷 정보를 이용하여 해당 컴포넌트에 정의된 상태변수를 포함한 컴포넌트 골격 코드를 생성하는 컴포넌트 골격 코드 생성기와,
    상기 스냅샷 정보 분석기에서 분석된 컴포넌트의 상태변수에 접근하는 각 컴포넌트의 인터페이스를 이용하여 상태값이 기 설정된 기댓값에 이르렀는지 반복적 테스트 수행을 통해 테스트 드라이버 코드를 생성하는 테스트 드라이버 코드 생성기를 포함하여 구성되는 것을 특징으로 하는 테스트 드라이버 생성 장치.
  2. 제 1 항에 있어서, 상기 테스트 드라이버 코드 생성기는
    컴포넌트 골격 코드에 추가된 상태변수 접근 인터페이스를 이용하여 스냅샷에 정의된 상태변수의 상태를 설정하는 소스 코드 문장인 테스트 준비코드를 생성하는 테스트 준비코드 생성기와,
    상기 테스트 준비코드 생성기에서 생성된 테스트 준비코드를 이용하여 테스 트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 유닛 테스트용 소스 코드인 테스트 확인코드를 생성하는 테스트 확인코드 생성기를 포함하여 구성되는 것을 특징으로 하는 테스트 드라이버 생성 장치.
  3. 제 1 항에 있어서,
    상기 아키텍처 모델은 컴포넌트의 정의와 컴포넌트의 인터페이스 정보를 포함하는 것을 특징으로 하는 테스트 드라이버 생성 장치.
  4. 제 1 항에 있어서, 상기 스냅샷 정보는
    해당 스냅샷에 관련있는 상태변수들이 저장된 상태변수 리스트와,
    상기 상태변수에 상응하는 상태값이 저장된 상태값 리스트와,
    인터페이스의 파라미터로 들어가는 입력값이 저장된 입력값 리스트와,
    상기 입력값에 대해서 얻고자 하는 기댓값이 저장된 기댓값 리스트 중 적어도 하나 이상으로 구성되는 것을 특징으로 하는 테스트 드라이버 생성 장치.
  5. 제 1 항에 있어서, 상기 컴포넌트의 골격코드는
    컴포넌트의 정의 부분, 상태변수의 정의부분, 일반 인터페이스의 정의부분 및 상태변수 인터페이스 정의부분 중 적어도 하나 이상으로 구성되는 것을 특징으로 하는 테스트 드라이버 생성 장치.
  6. (a) 아키텍처 모델의 개별 컴포넌트의 인터페이스에 특정한 스냅샷 정보를 입력함으로써 컴포넌트의 상태정보를 저장하는 상태변수를 추출하는 단계와,
    (b) 상기 추출된 상태변수를 설정 및 확인하는 컴포넌트의 인터페이스를 이용하여 각 컴포넌트들의 골격코드를 생성하는 단계와,
    (c) 상기 설정된 상태변수에 접근하는 컴포넌트의 인터페이스를 통해 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 테스트 드라이버 코드를 자동으로 생성하는 단계를 포함하여 이루어지는 것을 특징으로 하는 테스트 드라이버 생성 방법.
  7. 제 6 항에 있어서, 상기 (b) 단계는
    추출된 아키텍처 모델에서 컴포넌트 정의 리스트를 검출하는 단계와,
    상기 해당 컴포넌트 정의에 따라 해당 언어에 맞는 소스코드를 생성하고, 상기 컴포넌트의 속성 값에 따른 변수를 생성하는 단계와,
    상기 아키텍처 모델의 스텝샷 정보에서 사용되는 모든 상태변수의 이름과 타입들을 추출하는 단계와,
    상기 추출된 상태변수의 이름에 해당하는 설정 메소드(test_set_변수이름) 및 확인 메소드 변수타입(test_get_변수이름)을 생성하여 각 컴포넌트들의 골격코드를 생성하는 단계를 포함하여 이루어지는 테스트 드라이버 생성 방법.
  8. 제 6 항에 있어서, 상기 (c) 단계는
    스냅샷의 해당 열(Row)에서 상태변수 리스트를 읽어 상태변수 값을 추출하는 단계와,
    테스트 대상 클래스를 생성하는 코드를 생성하고, 상기 상태변수에 상태변수 값을 셋팅하는 메소드를 추가하는 단계와,
    상기 스냅샷의 해당 열에서 입력값을 읽고, 상기 읽은 테스트 대상 클래스의 입력값에 해당하는 메소드를 호출하는 테스트 준비코드를 생성하는 단계와,
    상기 스냅샷의 해당 열에서의 기댓값을 추출하는 단계와,
    상기 테스트 대상 클래스의 상태값을 상기 기댓값과 맞는지 확인하는 테스트 확인코드를 생성하는 단계를 포함하는 것을 특징으로 하는 테스트 드라이버 생성 방법.
  9. 제 6 항에 있어서, 상기 (c) 단계는
    상기 컴포넌트 골격 코드에 추가된 상태변수 접근 인터페이스를 이용하여 스냅샷에 정의된 상태변수의 상태를 설정하는 소스 코드 문장인 테스트 준비코드를 생성하는 단계와,
    상기 생성된 테스트 준비코드를 이용하여 테스트하려는 컴포넌트 인터페이스의 수행 후 상태값이 기 설정된 기댓값에 이르렀는지 비교를 통한 반복적 테스트 수행을 통해 유닛 테스트용 소스 코드인 테스트 확인코드를 생성하는 단계를 포함하는 것을 특징으로 하는 테스트 드라이버 생성 방법.
  10. 제 6 항에 있어서.
    상기 컴포넌트는 자신의 상태를 표현하는 상태변수가 정의되어 있으며, 이 상태변수들에 대한 정보는 컴포넌트의 속성 정보 형태로 입력되는 것을 특징으로 하는 테스트 드라이버 생성 방법.
  11. 아키텍처 모델에 기술된 컴포넌트 모델 정보와 상기 컴포넌트의 인터페이스에 대한 스냅샷 정보를 이용하여 컴포넌트 골격코드를 생성하고, 상기 골격코드를 이용하여 테스트 환경 설정 및 테스트 수행 후 확인을 위한 테스트 드라이버 코드를 생성하는 테스트 드라이버 생성부와,
    상기 테스트 드라이버 생성부에서 생성된 컴포넌트 골격코드 및 테스트 드라이버 코드를 이용하여 테스트를 수행하는 테스트 시험기와,
    상기 테스트 시험기에서 수행된 결과를 비교하여 오류를 검출하는 테스트 결과 비교기를 포함하여 구성되는 것을 특징으로 하는 테스트 드라이버 생성 시스템.
KR1020050116819A 2005-08-19 2005-12-02 테스트 드라이버 생성 장치 및 방법 KR100777103B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050116819A KR100777103B1 (ko) 2005-08-19 2005-12-02 테스트 드라이버 생성 장치 및 방법
US11/323,213 US7895575B2 (en) 2005-08-19 2005-12-30 Apparatus and method for generating test driver

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050076084 2005-08-19
KR1020050116819A KR100777103B1 (ko) 2005-08-19 2005-12-02 테스트 드라이버 생성 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20070021879A true KR20070021879A (ko) 2007-02-23
KR100777103B1 KR100777103B1 (ko) 2007-11-19

Family

ID=41637512

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050116819A KR100777103B1 (ko) 2005-08-19 2005-12-02 테스트 드라이버 생성 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100777103B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100949800B1 (ko) * 2007-12-18 2010-03-30 한국전자통신연구원 단위 테스트 코드를 이용하는 단위 코드의 테스트 방법 및테스트 장치
KR101019209B1 (ko) * 2007-04-25 2011-03-04 이화여자대학교 산학협력단 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법
KR102021447B1 (ko) * 2018-04-06 2019-09-16 서울대학교산학협력단 컴퓨팅 장치 및 그것의 동작 방법
KR20220067366A (ko) * 2020-11-17 2022-05-24 전북대학교산학협력단 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799266A (en) * 1996-09-19 1998-08-25 Sun Microsystems, Inc. Automatic generation of test drivers
US6243835B1 (en) * 1998-01-30 2001-06-05 Fujitsu Limited Test specification generation system and storage medium storing a test specification generation program
US6353897B1 (en) * 1999-01-06 2002-03-05 International Business Machines Corporation Object oriented apparatus and method for testing object oriented software
US6976246B1 (en) * 2000-05-26 2005-12-13 Microsoft Corporation Finite state model-based testing user interface
US6505342B1 (en) * 2000-05-31 2003-01-07 Siemens Corporate Research, Inc. System and method for functional testing of distributed, component-based software
KR20020095723A (ko) * 2001-06-15 2002-12-28 삼성전자 주식회사 소프트웨어 통합 테스팅을 위한 자동화 방법 및 도구
KR100501412B1 (ko) * 2002-12-10 2005-07-18 한국전자통신연구원 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법
KR100511870B1 (ko) * 2003-02-21 2005-09-02 슈어소프트테크주식회사 소프트웨어 테스트 장치 및 방법
KR20030044959A (ko) * 2003-05-12 2003-06-09 정안모 클라이언트 측 메타데이터와 글루 코드를 이용한 컴포넌트 구현 및 조립방법
KR101008977B1 (ko) * 2004-02-25 2011-01-17 삼성전자주식회사 OSGi 서비스 플랫폼 테스트 방법 및 이를 이용한테스트 툴
US7552422B2 (en) * 2004-03-31 2009-06-23 Microsoft Corporation Test case inheritance controlled via attributes
KR100672894B1 (ko) * 2004-12-21 2007-01-22 한국전자통신연구원 제품 계열 아키텍처의 표현 및 검증 장치와 그 방법
KR100812229B1 (ko) * 2005-12-05 2008-03-13 한국전자통신연구원 소프트웨어 아키텍처 평가 장치 및 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019209B1 (ko) * 2007-04-25 2011-03-04 이화여자대학교 산학협력단 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법
US8255874B2 (en) 2007-04-25 2012-08-28 Samsung Electronics Co., Ltd. Apparatus and method for automatically extracting interface of embedded software
KR100949800B1 (ko) * 2007-12-18 2010-03-30 한국전자통신연구원 단위 테스트 코드를 이용하는 단위 코드의 테스트 방법 및테스트 장치
KR102021447B1 (ko) * 2018-04-06 2019-09-16 서울대학교산학협력단 컴퓨팅 장치 및 그것의 동작 방법
US10977012B2 (en) 2018-04-06 2021-04-13 Seoul National University R&Db Foundation Computing device for accelerating a data type check and operating method thereof
KR20220067366A (ko) * 2020-11-17 2022-05-24 전북대학교산학협력단 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치

Also Published As

Publication number Publication date
KR100777103B1 (ko) 2007-11-19

Similar Documents

Publication Publication Date Title
US7895575B2 (en) Apparatus and method for generating test driver
US8924937B1 (en) Method and system for generating verification information and tests for software
US8522214B2 (en) Keyword based software testing system and method
US6622298B1 (en) Method and apparatus for testing software having a user interface
EP1089172A2 (en) Compiler and method for compiling specification language into implementation language
CN109189479B (zh) 一种用于处理器指令集的并行自动化验证方法
Burdonov et al. Kvest: Automated generation of test suites from formal specifications
CN107329889B (zh) 一种c编译器自动化测试的方法
CN105389262B (zh) 一种针对界面测试生成测试建议的方法和装置
Brown et al. Software testing
Ratiu et al. Automated testing of DSL implementations: experiences from building mbeddr
US9058427B2 (en) Iterative generation of symbolic test drivers for object-oriented languages
KR100777103B1 (ko) 테스트 드라이버 생성 장치 및 방법
US20090112554A1 (en) Test Bench, Method, and Computer Program Product for Performing a Test Case on an Integrated Circuit
CN117009231B (zh) 基于对话式大语言模型的高可靠单元测试自动生成方法及装置
KR20190094779A (ko) Plc 명령어 컴파일러 테스트케이스 자동 생성 장치
CN116069635A (zh) Soc系统的测试方法、装置、计算机设备及存储介质
US6546526B2 (en) Active trace debugging for hardware description languages
CN115034165A (zh) 一种芯片仿真验证方法、系统、设备以及存储介质
US9489284B2 (en) Debugging method and computer program product
CN115168131A (zh) 一种故障注入的cpu异常功能验证方法
CN114153742A (zh) 单元测试方法、装置、电子设备和存储介质
Vilela et al. PARADIGM-COV: A multimensional test coverage analysis tool
CN112580282B (zh) 用于集成电路设计验证的方法、装置、设备以及存储介质
CN111752823A (zh) 一种车载电源应用软件的测试方法、装置及设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131024

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee