KR101008959B1 - 로봇 소프트웨어 컴포넌트의 계층별 테스트방법 - Google Patents

로봇 소프트웨어 컴포넌트의 계층별 테스트방법 Download PDF

Info

Publication number
KR101008959B1
KR101008959B1 KR1020080090357A KR20080090357A KR101008959B1 KR 101008959 B1 KR101008959 B1 KR 101008959B1 KR 1020080090357 A KR1020080090357 A KR 1020080090357A KR 20080090357 A KR20080090357 A KR 20080090357A KR 101008959 B1 KR101008959 B1 KR 101008959B1
Authority
KR
South Korea
Prior art keywords
test
testing
component
robot software
software component
Prior art date
Application number
KR1020080090357A
Other languages
English (en)
Other versions
KR20100031321A (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 KR1020080090357A priority Critical patent/KR101008959B1/ko
Publication of KR20100031321A publication Critical patent/KR20100031321A/ko
Application granted granted Critical
Publication of KR101008959B1 publication Critical patent/KR101008959B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Abstract

본 발명은 로봇 소프트웨어 컴포넌트의 계층별 테스트 자동화방법에 관한 것으로서, 로봇 소프트웨어 컴포넌트 테스트를 위한 단위 테스팅, 통합 테스팅, 시스템 테스팅 3계층으로 단계별로 테스트하고, 그 결과 얻어진 로그 결과를 로그저장소에 저장을 하고 로그데이터 분석 및 성능을 평가하는 방법에 대한 규격을 제시함으로써, 자동화된 로봇 컴포넌트 성능 평가가 가능하도록 하는데 그 목적이 있다.
본 발명의 목적을 달성하기 위해 RTC규격을 따르는 로봇 소프트웨어 컴포넌트를 구성하는 각 컴포넌트 내부함수에 대한 테스트를 수행하여 각 내부함수의 기능 요구사항을 테스트하는 단위테스트과정, 각 내부함수의 조합을 통해 구성되는 컴포넌트의 콜백함수에 대한 테스트를 수행하여 컴포넌트 간의 인터페이스와 시스템의 서로 다른 부분과의 상호 연동하는 동작 상태를 테스트하는 통합테스트과정, 로봇 소프트웨어 컴포넌트 자체를 테스팅 대상으로 하여 상태전이 테스팅을 통하여 각 컴포넌트의 동작을 필수 요구조건인 컴포넌트 상태전이를 테스트하는 시스템테스트 과정, 각 테스트과정에서 발생된 로그정보 분석을 통해 로봇 소프트웨어의 성능평가를 수행하는 성능평가자동화과정으로 이루어진 것을 특징으로 한다.
Figure R1020080090357
로봇, 소프트웨어, 컴포넌트, 테스트, 내부함수, 단위함수, 상태전이

Description

로봇 소프트웨어 컴포넌트의 계층별 테스트방법 {Method for layer test of Robot software component}
본 발명은 RTC(Robot Technology Component) 규격을 준수하는 로봇 소프트웨어 컴포넌트 테스트에 관한 것으로, 로봇 소프트웨어 컴포넌트 테스트를 위한 일련의 절차와 규격을 부여함으로써, 로봇 컴포넌트의 테스트 자동화가 가능하도록 하며, 또한 테스트를 통해 얻어진 로그(Log) 결과를 로그저장소(Log Repository)에 저장을 하고 로그데이터(Log Data) 분석 및 성능을 평가하는 방법에 대한 규격을 제시함으로써, 자동화된 로봇 컴포넌트 성능 평가가 가능하도록 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트 자동화방법에 관한 것이다.
RTC(Robot Technology Component) 규격은 로봇용 소프트웨어 컴포넌트 모델 로, 로봇 소프트웨어 컴포넌트들이 서로 조합되고, 접속되기 위한 컴포넌트들 간의 공통 인터페이스가 되도록 하기 위하여 OMG(Object Management Group)에 의하여 채택된 표준으로, 이와 같은 로봇 소프트웨어 컴포넌트는 표준화된 RTC 규격을 기반으로 설계되며 필요한 요소를 추가하거나 변경 및 보완하여 로봇을 위한 표준 소프트웨어 규격을 제공하고자 하는 목적이 있다.
또한, 로봇 소프트웨어 컴포넌트는 로봇에 존재하는 다양한 센서나 액추에이터와 같은 하드웨어를 제어하기 위한 장치 컴포넌트와 이러한 장치 컴포넌트를 이용하여 다양한 로봇 응용을 개발하기 위한 응용 컴포넌트를 포함한다. 이러한 로봇 소프트웨어 컴포넌트는 로봇 응용 개발을 위한 다양한 기반 서비스를 제공하여 로봇 응용 개발의 편리성을 제공하고 개발 기간 단축이 가능하며, 유지보수 비용을 절감 시킬 수 있으며, 프로그램 재사용성 향상 등을 기대할 수 있다.
각 로봇 소프트웨어 컴포넌트는 도 1과 같은 컴포넌트 구조를 가지며, 도 2와 같은 기본 컴포넌트 상태 전이를 갖는다. 또한, 각 로봇 소프트웨어 컴포넌트의 함수는 는 RTC 표준규격 명세서 Lightweight RTC M1 Illustration에 명시되어 있다.
도 1은 일반적인 로봇 소프트웨어 컴포넌트 구조도로, RTC에서 제시하고 있는 기본적인 로봇 소프트웨어 컴포넌트 구조를 기반으로 설계된 것이다.
컴포넌트는 다른 컴포넌트와의 데이터 중심 통신을 위한 데이터 포트와 컴포넌트의 내부함수를 다른 컴포넌트에게 제공하기 위한 서비스 포트를 가질 수 있다. 데이터 포트와 서비스 포트는 컴포넌트 개발자에 의해 정의된다.
컴포넌트 내의 내부함수는 외부에 공개되지 않는 함수로서, 컴포넌트의 기능 수행을 위해 꼭 필요한 기능을 미리 정의해 놓은 인터페이스를 의미한다.
예를 들어, 장치 컴포넌트의 경우, 내부함수는 하드웨어와의 연결 및 하드웨어 셋팅을 위한 인터페이스가 내부함수에 속할 수 있다. 각 내부함수들은 컴포넌트의 기본 콜백함수 등에서 호출돼서 사용이 된다. 여기서 콜백함수는 로봇 소프트웨 어 컴포넌트의 함수(Operation)를 호출함에 따라 각 함수에 상응하여 호출되는 기본 함수들을 의미한다.
컴포넌트의 Activity는 컴포넌트의 코어로직(core logic)을 포함하며, 코어로직은 Activity가 가진 state machine의 상태에 따라 동작하게 된다.
도 2는 도 1의 활성도(Activity) 상태머신(State machine)에서 관리하는 컴포넌트의 상태 전이 다이어그램으로, RTC 규격을 준수하는 컴포넌트는 기본적으로 "Created(101), Inactive(121), Active(122), Error(123)"의 생명주기상태를 가지며, 추가적으로 컴포넌트의 코어로직(core logic)의 행동을 제어하는 스레드(thread)의 상태인 "stopped(111), running(112)"을 갖는다.
RTC 컴포넌트가 실행되면 Created(101)상태를 거쳐 Alive(100) 상태가 된다. Alive 상태(100)는 기본적인 컴포넌트 생명주기상태에 포함되지 않는다. 그러나, Created(101)를 제외한 다른 생명주기상태(121∼123)는 Alive(100)상태에서 포함된다.
Activity의 상태머신은 도 2의 Alive 상태의 점선 아랫부분(120)과 같이 표현된다. Inactive(121) 상태에서는 아무 동작을 하지 않다가 Active(122) 상태가 되면 기능을 수행하기 시작한다. 그리고 Active(122)상태에서 오류가 발생하게 되면, Error(124)상태로 전이되고, Error(124)상태에서 reset(125)을 시켜주면 다시 Inactive(121)상태로 돌아간다.
코어로직이란 특정 목적을 가진 컴포넌트의 기능ㅇ동작이 구현되어 있는 부분이다. 예를 들면, 센서 데이터를 처리하여 액츄에이터(actuator)를 제어하는 알 고리즘이 구현된 부분을 말한다. 그리고 각 컴포넌트에는 실행컨텍스트(Execution Context)가 존재하며, 실행컨텍스트의 상태는 도 2의 Alive 상태의 점선 윗부분(110)과 같으며, 이것의 상태가 Running(112)상태일 경우에만 코어로직이 동작하게 되고, Stopped(111)상태인 경우에는 코어로직은 동작하지 않는다.
상기 로봇 소프트웨어 컴포넌트를 개발하는 과정에서 컴포넌트의 동작과 성능, 안정성이 요구하는 수준을 만족하는지 확인하기 위해 결함을 발견하는 테스트 과정이 필요하다. 테스트를 통해 컴포넌트의 결함을 발견하고 발견된 결함에 근거하여 품질을 측정한다.
상기 일반적 테스트 활동은 테스팅 계획과 제어 같은 활동이나 테스트 조건의 선택, 테스트 케이스의 설계, 테스트 수행 결과 점검, 테스트 완료 및 통과 조건의 평가, 테스트 프로세스와 테스트 중인 시스템에 대한 리포트, 마무리 또는 마감과 같은 일련의 활동들을 포함한다.
종래기술에 따른 로봇 소프트웨어 테스트는 일련의 정해진 절차나 규격 없이 테스터의 재량으로 테스트 대상에 맞추어 테스트 케이스를 작성하고 작성된 테스트 케이스만을 이용하여 테스트 하였다.
그러나, 이러한 종래의 로봇 소프트웨어 테스트 방식은 일련의 절차나 규격 없이 수행되었기 때문에 테스트 수행한 후 테스트가 불충분하거나 불완전한 부분이 발견될 수 있다.
또한, 테스트 종료 후, 별도의 분석을 통한 소프트웨어 성능평가가 이루어져야 하기 때문에 비용 및 시간적 측면에서 문제점이 있다.
따라서, 본 발명은 위의 문제를 해결하기 위한 것으로서, 로봇 소프트웨어 컴포넌트 테스트를 위한 단위 테스팅, 통합 테스팅, 시스템 테스팅 3계층으로 단계별로 테스트하고, 그 결과 얻어진 로그결과를 로그저장소에 저장을 하고 로그데이터 분석 및 성능을 평가하는 방법에 대한 규격을 제시함으로써, 자동화된 로봇 컴포넌트 성능 평가가 가능하도록 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트 자동화방법을 제공하는데 그 목적이 있다.
본 발명의 목적을 달성하기 위한 로봇 소프트웨어 컴포넌트의 계층별 테스트과정은 RTC규격을 따르는 로봇 소프트웨어 컴포넌트 구조에 맞춰 테스트 대상을 결정하고 각 테스트 대상을 테스트하는 로봇 소프트웨어의 테스트 방법에 있어서, 상기 로봇 소프트웨어 컴포넌트를 구성하는 각 컴포넌트 내부함수에 대한 테스트를 수행하여 상기 각 내부함수의 기능 요구사항을 테스트하는 단위테스트과정과, 상기 각 내부함수의 조합을 통해 구성되는 컴포넌트의 콜백(Callback)함수에 대한 테스트를 수행하여 컴포넌트 간의 인터페이스와 시스템의 서로 다른 부분과의 상호 연동하는 동작 상태를 테스트하는 통합테스트과정과, 상기 로봇 소프트웨어 컴포넌트 자체를 테스팅 대상으로 하여 상태전이 테스팅을 통하여 각 컴포넌트의 동작을 필수 요구조건인 컴포넌트 상태전이를 테스트하는 시스템테스트 과정과, 각 테스트과 정에서 발생된 로그(Log)정보 분석을 통해 로봇 소프트웨어의 성능평가를 수행하는 성능평가자동화과정을 포함하여 이루어지되, 상기 각 테스트과정은 테스트 대상에 따라 순차적으로 선택하여 수행하는 것을 특징으로 한다.
여기서, 단위테스트과정 및 통합테스트과정은 프로그램 코드 안에 테스트 코드를 삽입하여 프로그램 구조를 테스트하는 화이트박스 테스트와, 각 함수(단위테스트는 내부함수, 통합테스트는 콜백함수)의 기능 요구사항을 테스트하는 블랙박스 테스트와, 상기 각 테스트를 수행한 후 그 결과를 로그 데이터로 기록하는 단계로 이루어지되, 상기 블랙박스 테스트는 함수의 입력 값 필요 여부에 따라 결정 테이블 테스팅과 동등분할 및 경계값 분석 테스트로 분류되며, 함수에 입력값이 필요한 경우는 동등분할 및 경계값 테스트를 수행하며, 그렇지 않은 함수의 경우에는 요구사항 명세에 따라 작성된 테스트 케이스를 기반으로 하는 결정테이블 테스트를 수행하는 것을 특징으로 한다.
또한, 상기 시스템테스트 과정은 화이트박스 테스트를 수행한 후, 블랙박스 테스트를 실행하되, 상기 화이트박스 테스트는 로봇 소프트웨어 컴포넌트 수행 시 발생 가능한 메모리 누수 및 실행속도, CPU 점유율을 포함한 시스템 테스트를 수행하고, 상기 블랙박스 테스트는 로봇 소프트웨어 컴포넌트의 상태전이 테스트를 수행하는 것을 특징으로 한다.
이상에서 설명한 바와 같이 본 발명에 따른 로봇 소프트웨어 컴포넌트의 계 층별 테스트방법의 효과는 상기 로봇 소프트웨어 컴포넌트를 일련의 절차와 규격에 따라 테스트하기 때문에 테스트 종료 후 테스트가 불충분하거나 불완전한 부분이 발견될 확률이 줄어들어 테스트의 신뢰성이 향상되는 효과가 있다. 또한, 테스트 후, 별도의 분석을 통한 컴포넌트 성능 평가 없이 자동화된 성능평가를 통해 비용 절감 및 시간 단축의 효과를 기대할 수 있다.
본 발명의 실시예에 따른 구성 및 작용을 첨부된 도 3 내지 도 5를 참조하여 상세히 설명하면 다음과 같다.
도 3은 본 발명에 따른 RTC 규격을 따르는 로봇 소프트웨어 컴포넌트 구조에 맞춘 테스트 절차를 개략적으로 표시한 도로서, 일반적인 테스트 절차는 도의 왼쪽 편에서 제시된 바와 같이 단위 테스팅, 통합 테스팅, 시스템 테스팅의 순서로 진행된다.
본 발명에서는 이러한 테스트 절차를 RTC 규격을 따르는 로봇 소프트웨어 컴포넌트 구조에 맞추어 테스트 대상을 정하고 각 테스트 대상을 테스트하기에 적합한 테스트 기법을 제시하였다.
즉, 로봇 소프트웨어 컴포넌트를 구성하는 가장 기본적인 단위는 컴포넌트 내부함수들이다. 각 로봇 소프트웨어 컴포넌트는 컴포넌트 기능을 수행하기 위해 제공되어야 하는 필수적인 기능을 내부함수의 형태로 컴포넌트 내부에 포함하고 있다.
상기 내부함수는 컴포넌트를 구성하는 가장 기본적인 요소로 단위테스팅 레벨에서의 테스팅 대상이 된다. 각 내부함수는 화이트박스 테스트와 블랙박스 테스트를 통해 테스트되고, 상기 화이트박스 테스트로서는 프로그램 코드 안에 테스트 코드를 삽입하여 프로그램 구조를 테스트한다.
블랙 박스 테스트는 결정 테이블 테스팅 방법을 사용하여 각 내부 함수의 기능 요구사항을 테스트한다.
상기 단위 테스팅은 테스트 대상을 테스트 가능한(최소)단위로 분리된 소프트웨어(모듈, 프로그램, 객체, 클래스 등) 내에서 결함을 찾고 그 기능을 검증하는 것이다. 단위 테스팅은 개발 수명주기와 시스템에 의존적이면서도 시스템의 다른 부분에서 격리하여 독립적으로 수행할 수 있다.
상기 결정 테이블 테스팅 방법은 시스템 요구 사항 명세를 분석하고 시스템의 조건과 동작을 식별하여 입력조건과 동작을 유발시키는 조건 또는 상황, 그리고 각 해당 조합에 대한 예상 결과까지 포함하여 결정 테이블을 도출하고 이를 바탕으로 테스트 케이스를 만든다.
다음 표 1은 결정테이블의 예시도로서, 컴포넌트 요구 사항 명세를 분석하여 시스템의 조건과 동작을 식별하여 동작을 유발시키는 조건과 각 해당 조합에 대한 예상결과를 포함한 결정 테이블이다.
테스트케이스 ID
1 2 3
테스트 조건
센서장치의 연결 F T T
통신 연결함수의 매개변수(Port, Baudrat)가 유효한지 검사 F T
기대결과
사전조건 불일치 T
유효한지 않은 매개변수 T
센서장치와의 연결 성공 T
이와 같은 결정 테이블은 어떤 조건하에서 테스트 액션이 수행되어야 하는지를 결정하며 조건 부분과 결과 부분으로 나누어진다. 각 조건은 TRUE(T)는 FALSE(F)로 귀결되어야 하는 변수들 간의 관계를 나타내며, 각 조건의 TRUE/FALSE에 따라 기대결과의 TRUE/FALSE가 나타난다.
다음 표 2는 결정 테이블 테스팅 테스트 케이스를 나타낸 표로서, 표 1의 조건들의 모든 가능한 결합을 통하여 도출된 테스트 조건, 테스트 수행 순서, 테스트 기대 결과를 갖는 테스트 케이스들을 나타낸 것이다.
ID 사전조건 수행순서
(테스트 조건)
기대 결과 수행 결과 시험
통과
1 센서 장치가 연결되어 있지 않다. 함수 호출을 시도한다. PRECONDITION_NOT_MET    
2 센서 장치 연결 완료, 유효하지 않은 매개변수가 입력되었다. 함수 호출을 시도한다. BAD_PARAMETER    
3 센서 장치 연결 완료, 유효한 매개변수가 입력되었다. 함수 호출을 시도한다. OK    
상기 표 2에서 각 테스트 케이스에는 테스트를 통해 나타나는 수행 결과와 이에 따른 테스트 통과 여부를 나타내는 항목을 추가적으로 갖는다.
상기 통합 테스팅 레벨에서는 각 내부함수의 조합을 통해 구성되는 컴포넌트의 콜백함수에 대한 테스트가 수행되어야 한다.
상기 콜백함수는 컴포넌트간의 인터페이스와 시스템의 각기 다른 부분과 상호 연동하는 동작을 수행하기 때문에 통합 테스팅 레벨의 테스트 대상이 된다. 통합 테스팅 레벨에서도 단위 테스팅 레벨과 같이 화이트박스와 블랙박스 테스트를 통해 콜백함수가 테스트 된다.
상기 통합 테스팅은 컴포넌트 단위 사이의 상호작용을 테스트하며 단위 테스팅 이후에 수행된다.
상기 통합테스팅 레벨도 단위테스팅 레벨에서의 표 1, 표 2에 도시된 결정테이블 및 결정 테이블 테스팅 테스트 케이스와 같이, 상기 결정 테이블 테스팅 방법은 시스템 요구사항 명세를 분석하고 시스템의 조건과 동작을 식별하여 입력조건과 동작을 유발시키는 조건 또는 상황, 그리고 각 해당 조합에 대한 예상 결과까지 포함하여 결정 테이블을 도출하고 이를 바탕으로 테스트 케이스를 만든다.
상기 시스템테스팅 레벨에서의 테스팅은 로봇 소프트웨어 컴포넌트 자체를 테스팅 대상으로 한다.
로봇 소프트웨어 컴포넌트는 로봇을 구성하는 하나의 구성 요소이지만, 컴포넌트 자체는 하드웨어 장치나 알고리즘을 대표하는 하나의 시스템이기 때문에 시스템으로 간주하여 컴포넌트 테스트를 수행한다.
로봇 소프트웨어 컴포넌트는 상태전이 테스팅을 통하여 각 컴포넌트의 동작에 필수 요구 조건인 컴포넌트 상태전이를 테스트한다.
또한, 화이트박스 테스트를 통하여 로봇 소프트웨어 컴포넌트 수행 시 발생 가능한 메모리 누수 및 실행속도 CPU 점유율 들을 테스트한다.
상기 시스템 테스팅은 요구사항 명세서 및 기타 비즈니스 레벨의 시스템 동작 명세, OS 및 시스템 리소스와의 상호 작용 등의 테스트 베이시스를 바탕으로 전체 시스템의 동작과 관련된 시스템 요구사항을 테스트한다.
상기 상태 전이 테스팅은 시스템의 현재 상황(Conditions)이나 이전의 이력(History)을 반영하는 상태(States) 및 그 변화(Transition)에 따라 다르게 동작하는 측면을 상태전이 다이어그램으로 표현한다. 이를 통해 시스템 상태 사이의 관계 즉, 상태 간의 전이, 상태를 변화시키는 이벤트와 입력값, 상태의 변화로 유발되는 동작들을 테스트한다.
이와 같은 절차와 방법에 따라 로봇 소프트웨어 컴포넌트의 테스트가 수행된다.
도 4는 본 발명의 실시예에 따른 로봇 소프트웨어 컴포넌트의 계층별 테스트과정의 전체 흐름도로서, 도 3에서 제시하고 있는 테스팅 시스템은 단위 테스트, 통합 테스트, 시스템 테스트 순의 테스트 레벨에 따라 진행이 된다.
테스트 자동화 시스템에서는 테스트 레벨에 따라 그 테스트 과정과 테스트 대상이 다른 점을 고려하여, 테스트 레벨을 선정한다.
테스트 레벨이 선정된 후는 각 테스트 레벨에 맞는 테스트 기법을 선택하게 된다.
단위 테스트와 통합 테스트의 경우, 테스트 대상만 다를 뿐 테스트 처리 절차 및 기법이 동일하게 적용된다.
즉, 단위 테스트 레벨과 통합 테스트 레벨에서의 테스트 기법은 화이트박스 테스트와 블랙박스 테스트 기법으로 분류된다.
화이트박스 테스트의 경우 코드 안에 코드의 실행 여부를 확인할 수 있도록 로그(Log)기록을 위한 함수를 삽입해줌으로써 테스트 가능하다.
그리고 블랙박스 테스트의 경우, 단위테스트 레벨에서는 테스트 대상인 내부함수의 리스트 중에 테스트하려고 하는 함수를 선택하고, 통합테스트 레벨에서는 테스트 대상인 콜백함수의 리스트 중에서 테스트하려고 하는 함수를 선택한다.
함수를 선택한 후, 함수의 입력 값 필요 여부에 따라 결정 테이블 테스팅과 동등분할 및 경계 값 분석 테스트로 분류된다.
즉, 함수에 입력 값이 필요한 경우는 동등 분할 및 경계 값 테스트를 수행하게 된다. 그렇지 않은 함수의 경우에는 요구사항 명세에 따라 작성된 테스트 케이스를 기반으로 하는 결정 테이블 테스팅이 수행된다.
결정테이블 테스팅은 상기 표 2에 도출된 테스트 케이스를 바탕으로 사전 조건을 설정해주고 테스트를 수행하여 수행결과를 로그 데이터로 기록한다.
동등분할 및 경계 값 테스트의 경우는 입력 값을 기준으로 입력 값을 초과한 경우, 미만인 경우 등의 여러 입력 값을 만들어 테스트 한 후, 그 결과를 로그데이터로 기록한다.
상기 테스트 레벨 선택단계에서 시스템 테스트 레벨이 선정된 경우, 테스트 기법에 대한 선택이 요구된다. 테스트 기법이 선택된 후, 다른 테스트 레벨과 같은 방법의 화이트박스 테스팅이 적용된 후, 블랙박스 테스팅이 실행된다.
상기 시스템 테스트 과정에서의 블랙박스 테스팅은 상태전이 테스팅 기법으로 이루어진다.
각 컴포넌트는 기본적으로 컴포넌트의 기본 생명주기 상태를 갖는다. 그리고 각 상태에 따라 호출되는 콜백함수가 존재하고, 콜백함수 내에 내부함수의 수행이 따른다.
따라서, 상태전이 테스팅을 통해 각 상태를 테스트함으로써, 컴포넌트의 기본적인 기능 수행 및 작동에 대한 테스트를 동시에 수행이 가능하다.
도 5는 본 발명의 실시예에 따른 상태전이 테스팅의 가장 기본이 되는 도로서, OpenRTM에서 동작하는 RTC를 위한 상태전이도를 나타낸 것이다. 도 2를 기본으로 하였으므로, 상태전이에 필요한 이벤트들은 모두 표현하였으나, 이벤트에 따라 상태가 전이될 때 발생하는 콜백함수들은 표현하지 않았다. 이는 도 2를 참고하면 된다.
여기서, Stopped/Steady Error'(SS'), Stopped/Inactive'(SI'), Stopped/Active'(SA')상태들은 가상의 상태를 표현하였다. 실제로 Stopped/Inactive 상태에서 ExecutionContext::activate_component란 이벤트를 입력한 경우 컴포넌트는 아무런 반응을 보이지 않는다.
그리고 다시 ExecutionContext::start란 이벤트를 입력하면, Running/Inactive 상태로 전이하는 것이 아니라 Running/Active 상태로 전이를 하게 된다. 이와 같이 (SS')(SI')(SA') 세 가지 상태들은 모두 이 현상을 나타내기 위한 가상의 상태들이다.
다음 표 3은 도 5에 나타난 상태전이도의 모든 상태와 이벤트를 테이블로 구성하여 표현한 상태 전이 테이블의 일부분이다. 상태전이 테스팅을 하는데 있어서 상태전이도 다음으로 가장 기본이 되는 데이터이다.
상태
이벤트
Created RI RA RS RR SI SI' SA SA' SS SS'
Initialize RI                    
Finalize   1
RI
7
RA
14
RS
  22
Exit
28
Exit
34
Exit
40
Exit
46
Exit
52
Exit
ExecutionContext::start   2
RI
8
RA
15
RS
  23
RI
29
RA
35
RA
41
RI
47
RS
53
RR
도 6은 표 3을 토대로 나타낸 상태전이 테이블에 따른 상태전이트리(0-switch)의 일부분이다.
여기서는 한 번의 전이가 일어나는 경우를 정리한 0-switch 상태전이 트리를 구성하였다. 만약 1-switch 상태전이 트리라면, RA -> RI -> SI와 같이 두 번 전이하는 경우를 나타낸다.
다음 표 4는 표 3로부터 도출한 테스트 케이스의 일부를 정리한 표이다.
ID 이벤트 가드 액션 시작상태 종료상태
V001 Finalize - Error MSG RI RI
V002 ExecutionContext::start - Error MSG RI RI
상태전이 테스팅에서 테스트 케이스란 특정 상태에서 어떠한 이벤트가 발생했을 때 발생하는 액션과 차후의 상태를 기록해놓은 것으로 테스트되어야할 대상을 나타낸다.
다음 표 5는 표 4에 나타난 테스트 케이스들을 조합하여 만든 테스트 프로시저의 일부를 나타낸다.
TP1 V004 V009 V038 V041 V003 V023 V004 V012 V016 V051 V053 V020 V004 V012 V019
V020 V004 V011 V001 V002 V005 V006 V003 V024 V026 V027 V022
TP2 V003 V025 V030 V031 V032 V033 V028
TP3 V003 V015 V029 V007 V008 V010 V013 V009 V035 V009 V036 V037 V039 V034
여기서, 조합한다는 의미는 V004->V009->V035와 같이 테스트를 연속적으로 수행할 수 있도록 전이가 끝난 "종료상태"와 동일한 상태로 시작하는 "시작상태"를 가지는 테스트 케이스를 이어서 순서를 정하는 것을 말한다.
상기 표 4와 같이 도출된 모든 테스트 케이스들을 수행하기 위해선 다수의 프로시저가 필요한데, 그것을 tp1, tp2, ..., tpn으로 표현하였다. 그리고 각각의 프로시저가 포함하고 있는 테스트 케이스들을 표를 통해 체크함으로써 n개의 프로시저를 통해 모든 테스트 케이스가 포함되었는지 확인할 수 있다.
이와 같이, 상태전이 테스팅은 상기 표 5의 테스트 케이스 프로시저를 수행함으로써 RTC 상태 전이도에서 도출된 모든 테스트케이스를 수행한다.
상기와 같은 테스트 절차에 따라 테스트가 진행이 되고 각 테스트 과정에서 발생하는 로그정보를 수집하여 로그정보를 분석하는 단계가 별도로 필요하다.
이 단계에서는 로그 정보가 일정한 규칙을 따르기 때문에 쉽게 분석이 가능하다.
또한, ISO 9126 소프트웨어 품질 특성에 따라 성능 지표의 측정방법을 기준으로 로그를 분석하여 성능을 평가할 수 있다. 로그정보로는 함수 ID, 함수 호출 시간, 함수 응답 시간, 함수 수행 시간, 수행 결과 등이 기록된다.
도 1 은 일반적인 로봇 소프트웨어 컴포넌트의 구조도이고,
도 2는 일반적인 로봇 소프트웨어 컴포넌트의 상태 전이 다이어그램이고,
도 3은 본 발명에 따른 로봇 소프트웨어 컴포넌트의 계층별 테스트 절차를 개략적으로 표시한 도이고,
도 4는 본 발명의 실시예에 따른 로봇 소프트웨어 컴포넌트의 계층별 테스트과정의 흐름도이고,
도 5는 본 발명의 실시예에 따른 로봇 소프트웨어 컴포넌트의 상태전이 다이어그램이고,
도 6은 상태전이 테이블에 따른 상태전이 트리를 표시한 도이다.

Claims (10)

  1. RTC규격을 따르는 하드웨어를 동작시키는 로봇 소프트웨어 컴포넌트를 테스트 하기 위한 테스트 레벨, 테스트 기법 및 테스트 종류가 선택됨에 따라 테스트자동화 시스템에 의해 로봇 소프트웨어 컴포넌트의 구조에 맞춰 테스트 대상을 결정하고 테스트를 수행하는 로봇 소프트웨어의 테스트 방법에 있어서,
    상기 로봇 소프트웨어 컴포넌트의 테스트 종류를 선택하고, 해당 테스트 종류에 따라 내부함수를 실행시켜 선택된 컴포넌트에 대한 블랙박스 테스트를 수행한 후 로그정보를 발생하는 단위테스트과정;
    상기 각 내부함수의 조합을 통해 구성되는 컴포넌트의 콜백함수를 실행시켜 블랙박스 테스트를 수행한 후 로그정보를 발생하여 컴포넌트 간의 인터페이스와 시스템의 서로 다른 부분과의 상호 연동하는 동작 상태를 테스트하는 통합테스트과정;
    상기 로봇 소프트웨어 컴포넌트 자체를 테스팅 대상으로 하여 블랙박스 테스트 방법으로 각 컴포넌트의 동작 필수 요구조건인 컴포넌트 상태전이 테스트를 수행하는 시스템테스트과정; 및
    각 테스트과정에서 발생된 로그(Log)정보 분석을 통해 로봇 소프트웨어의 성능평가를 수행하는 성능평가자동화과정;을 포함하여 이루어지되,
    상기 각 테스트과정 및 성능평가자동화과정은 상기 테스트자동화시스템에 의해 테스트 대상에 따라 순차적으로 선택하여 수행하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
  2. 제 1 항에 있어서,
    상기 테스트 자동화시스템은 상기 각 단위테스트, 통합테스트 및 시스템 테스트과정에 대하여 블랙박스 테스트를 수행하기 전에 프로그램 코드 안에 테스트 코드를 삽입하여 프로그램 구조를 테스트하는 화이트박스 테스트과정을 수행하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
  3. 제 1 항에 있어서,
    상기 테스트 자동화시스템에 의한 단위테스트과정에서 상기 테스트의 종류는 내부함수의 입력 값 필요 여부에 따라 결정 테이블 테스팅과 동등분할 및 경계값 분석 테스트로 분류되며,
    상기 내부함수에 입력값이 필요한 경우는 동등분할 및 경계값 테스트를 수행하며, 그렇지 않은 함수의 경우에는 요구사항 명세에 따라 작성된 테스트 케이스를 기반으로 하는 결정테이블 테스트를 수행하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 테스트 자동화시스템에 의한 통합테스트과정은 상기 각 콜백함수의 기능 요구사항을 테스트하는 블랙박스 테스트 단계; 및
    상기 각 테스트를 수행한 후 그 결과를 로그 데이터로 기록하는 단계;로 이루어지되,
    상기 블랙박스 테스트는 콜백함수의 입력 값 필요 여부에 따라 결정 테이블 테스팅과 동등분할 및 경계값분석 테스트로 분류되며, 콜백함수에 입력값이 필요한 경우는 동등분할 및 경계값 테스트를 수행하며, 그렇지 않은 함수의 경우에는 요구사항 명세에 따라 작성된 테스트 케이스를 기반으로 하는 결정테이블 테스팅이 수행되는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
  6. 삭제
  7. 삭제
  8. 제 1 항에 있어서,
    상기 시스템테스트 과정은 테스트 자동화시스템에 의해 화이트박스 테스트를 수행한 후, 블랙박스 테스트를 실행하되,
    상기 화이트박스 테스트는 로봇 소프트웨어 컴포넌트 수행 시 발생 가능한 메모리 누수 및 실행속도, CPU 점유율을 포함한 시스템 테스트를 수행하고,
    상기 블랙박스 테스트는 로봇 소프트웨어 컴포넌트의 상태전이 테스트를 수행하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
  9. 제 8 항에 있어서,
    상기 상태전이 테스트는 시스템의 현재상황(Conditions), 이전의 이력(History)을 반영하는 상태(States) 및 그 변화(Transition)에 따라 다르게 동작하는 측면을 상태전이 다이어그램으로 표현하는 단계;
    상기 상태전이 다이어그램을 통해 상태 간의 전이, 상태를 변화시키는 이벤 트와 입력값, 상태의 변화로 유발되는 동작을 포함한 시스템 상태 사이의 관계를 테스트하는 단계를 포함하여 이루어진 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
  10. 제 1 항에 있어서,
    상기 시스템 테스트 과정은 테스트 자동화시스템에 의하여 요구사항 명세서 및 비즈니스 레벨의 시스템 동작 명세, OS 및 시스템 리소스와의 상호작용을 포함한 테스트 베이시스를 바탕으로 전체 시스템의 동작과 관련된 시스템 요구사항을 테스트하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트의 계층별 테스트방법.
KR1020080090357A 2008-09-12 2008-09-12 로봇 소프트웨어 컴포넌트의 계층별 테스트방법 KR101008959B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080090357A KR101008959B1 (ko) 2008-09-12 2008-09-12 로봇 소프트웨어 컴포넌트의 계층별 테스트방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080090357A KR101008959B1 (ko) 2008-09-12 2008-09-12 로봇 소프트웨어 컴포넌트의 계층별 테스트방법

Publications (2)

Publication Number Publication Date
KR20100031321A KR20100031321A (ko) 2010-03-22
KR101008959B1 true KR101008959B1 (ko) 2011-01-17

Family

ID=42181016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080090357A KR101008959B1 (ko) 2008-09-12 2008-09-12 로봇 소프트웨어 컴포넌트의 계층별 테스트방법

Country Status (1)

Country Link
KR (1) KR101008959B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101168896B1 (ko) 2011-03-30 2012-08-06 홍익대학교 산학협력단 가상환경에서 로봇에 대한 모델링과 시뮬레이션 기반의 테스트 케이스 자동 생성 및 수행 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101132560B1 (ko) * 2010-06-09 2012-04-03 강원대학교산학협력단 로봇 소프트웨어 컴포넌트를 위한 시뮬레이션 기반 인터페이스 테스팅 자동화 시스템 및 그 방법
KR101648307B1 (ko) * 2015-05-27 2016-08-23 경북대학교 산학협력단 임베디드 소프트웨어 단위 테스트를 위한 로그 기반 테스팅 장치 및 그 방법
CN110023913A (zh) * 2017-11-02 2019-07-16 深圳市汇顶科技股份有限公司 测试软件的方法和装置
KR102103591B1 (ko) * 2018-02-02 2020-04-23 주식회사 한글과컴퓨터 동등분할 및 경계값 분석 기법을 적용한 테스트 케이스 추출 방법 및 이를 이용하는 테스트 케이스 추출 장치
CN111190780B (zh) * 2019-12-30 2023-10-20 杭州涂鸦信息技术有限公司 一种支持多平台的产测方法、产测设备及产测系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330821A (ja) * 1999-05-21 2000-11-30 Mitsubishi Electric Corp 組み込みシステム用ソフトウェアの製作方法
JP2001142600A (ja) * 1999-11-15 2001-05-25 Canon Inc 多国語表示切替装置およびその切替方法
KR20040075464A (ko) * 2003-02-21 2004-08-30 슈어소프트테크주식회사 소프트웨어 테스트 장치 및 방법
KR20080042659A (ko) * 2006-11-09 2008-05-15 한국전자통신연구원 소프트웨어 결함 유발 데이터를 삽입한 파일을 이용하여소프트웨어의 결함을 검출하는 자동화 시스템 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330821A (ja) * 1999-05-21 2000-11-30 Mitsubishi Electric Corp 組み込みシステム用ソフトウェアの製作方法
JP2001142600A (ja) * 1999-11-15 2001-05-25 Canon Inc 多国語表示切替装置およびその切替方法
KR20040075464A (ko) * 2003-02-21 2004-08-30 슈어소프트테크주식회사 소프트웨어 테스트 장치 및 방법
KR20080042659A (ko) * 2006-11-09 2008-05-15 한국전자통신연구원 소프트웨어 결함 유발 데이터를 삽입한 파일을 이용하여소프트웨어의 결함을 검출하는 자동화 시스템 및 그 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101168896B1 (ko) 2011-03-30 2012-08-06 홍익대학교 산학협력단 가상환경에서 로봇에 대한 모델링과 시뮬레이션 기반의 테스트 케이스 자동 생성 및 수행 방법

Also Published As

Publication number Publication date
KR20100031321A (ko) 2010-03-22

Similar Documents

Publication Publication Date Title
KR101008959B1 (ko) 로봇 소프트웨어 컴포넌트의 계층별 테스트방법
US6889158B2 (en) Test execution framework for automated software testing
US20070006037A1 (en) Automated test case result analyzer
CN108427613B (zh) 异常接口定位方法、装置、计算机设备和存储介质
Marijan et al. A learning algorithm for optimizing continuous integration development and testing practice
CN103150249A (zh) 一种自动化测试的方法和系统
US20080033686A1 (en) Method and system to develop a process improvement methodology
EP1179776A1 (en) Test automation framework
US7685471B2 (en) System and method for detecting software defects
US20090319317A1 (en) Or Relating To A Method and System for Testing
KR101440299B1 (ko) 자가 치유 시스템 및 그 방법
CN109669436B (zh) 一种基于电动汽车的功能需求的测试用例生成方法和装置
CN110069414A (zh) 回归测试方法及系统
CN110990289B (zh) 一种自动提交bug的方法、装置、电子设备及存储介质
US9971321B2 (en) Method for influencing a control program
Flemström et al. Exploring test overlap in system integration: An industrial case study
CN111767218B (zh) 一种用于持续集成的自动化测试方法、设备及存储介质
KR20110067418A (ko) 자가치유 시스템의 모니터링 및 치유성능 평가를 위한 시스템 및 방법
CN113886262A (zh) 软件自动化测试方法、装置、计算机设备和存储介质
US8249728B2 (en) Method for operating a management system of function modules
Schneidewind What can software engineers learn from manufacturing to improve software process and product?
Bauer et al. Virtual validation of the system architecture design of a production plant with regard to fault tolerance
Lim et al. Efficient testing of self-adaptive behaviors in collective adaptive systems
CN107102938B (zh) 测试脚本的更新方法及装置
Kawane Fault detection effectiveness of UML design model test adequacy criteria

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20140106

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150112

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee