KR101695015B1 - 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템 - Google Patents

오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템 Download PDF

Info

Publication number
KR101695015B1
KR101695015B1 KR1020120073379A KR20120073379A KR101695015B1 KR 101695015 B1 KR101695015 B1 KR 101695015B1 KR 1020120073379 A KR1020120073379 A KR 1020120073379A KR 20120073379 A KR20120073379 A KR 20120073379A KR 101695015 B1 KR101695015 B1 KR 101695015B1
Authority
KR
South Korea
Prior art keywords
error
program
programs
test
test data
Prior art date
Application number
KR1020120073379A
Other languages
English (en)
Other versions
KR20140008547A (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 KR1020120073379A priority Critical patent/KR101695015B1/ko
Priority to US13/645,555 priority patent/US8954807B2/en
Publication of KR20140008547A publication Critical patent/KR20140008547A/ko
Application granted granted Critical
Publication of KR101695015B1 publication Critical patent/KR101695015B1/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/362Software debugging

Landscapes

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

Abstract

오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 장치가 개시된다. 본 발명에 따른 소프트웨어 시험 방법은 시험 대상 프로그램에 오류(fault)를 주입하여 복수의 오류 프로그램를 생성하는 단계, 생성된 복수의 오류 프로그램을 시험 데이터 각각에 대해 복수의 그룹으로 그룹핑하고, 그룹 각각에 대하여 대표 오류 프로그램을 선정하는 단계 및 대표 오류 프로그램들을 대응된 시험 데이터에 대하여 실행한 결과에 오류(error)가 검출된 경우 대응되는 그룹의 모든 오류 프로그램들에 대해서도 오류가 검출된 것으로 간주하는 단계를 포함하여 구성될 수 있다.

Description

오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템{METHOD OF TESTING A SOFTWARE BASED ON A FAULT-INJECTION AND SYSTEM FOR THE SAME}
본 발명은 소프트웨어의 품질을 평가하기 위한 방법 및 장치에 관한 것으로, 더욱 상세하게는 오류 주입(fault injection)을 통하여 소프트웨어의 품질을 평가하는 오류 기반 소프트웨어 시험 기술에 관한 것이며, 소프트웨어 시험에 소요되는 시간과 비용을 줄일 수 있는 오류 기반 소프트웨어 시험 방법 및 이를 위한 장치에 관한 것이다.
오류 기반 시험(failure-directed testing)이란 과거에 많이 발생한 오류 타입이 현재 시험 중인 시스템이나 시스템 컴포넌트 또는 프로그램에서도 많이 발생할 것이라는 예측적 지식에 근거하여 주로 이러한 것들의 발견에 중점을 두고 시험 데이터를 선택하는 방법이다.
이러한 오류 기반 시험은 소프트웨어 공학에 적용될 수 있는데, 개발된 프로그램(시험 대상 프로그램)에 대한 오류 기반 시험은, 시험 대상 프로그램에 대하여 인위적인 오류 주입(fault-injection)을 통해 복수의 오류 프로그램을 생성하고, 생성된 오류 프로그램을 시험 데이터를 이용하여 실행하는 것에 의해서 수행된다.
도 1은 종래의 오류 기반 소프트웨어 시험 시스템의 일반적인 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 종래의 오류 기반 소프트웨어 시험 시스템(100)은 오류 프로그램 생성부(110)와 시험 수행부(120)를 포함하여 구성될 수 있다.
오류 프로그램 생성부(110)는 시험 대상 프로그램과 오류 유형 목록을 입력받고, 시험 대상 프로그램을 분석하여 입력된 오류 유형 목록에 해당하는 오류들을 생성해낸다.
이 때, 오류 유형은 시스템에서 자주 발생할 것이라 예측되는 오류 유형을 의미한다. 예를 들면, 오류의 유형은 소프트웨어의 경우 산술 연산자(arithmetic operator)의 잘못된 사용(예:'+' 산술 연산자를 '―' 산술 연산자로 잘못 사용), 논리 연산자(logical operator)의 잘못된 사용(예: '>'논리 연산자를 '≥' 논리 연산자로 잘못 사용) 등이 빈번히 발생하는 오류의 유형에 해당한다.
오류 프로그램 생성부(110)의 결과물은 주어진 오류 유형에 따라 시험 대상 프로그램을 변형시킨 프로그램들(mutant)로, 도 1에서는 오류 프로그램 #1, 오류 프로그램 #2, …, 오류 프로그램 #M으로 모두 M개의 오류 프로그램들이 생성되었음을 표현한다.
생성된 오류 프로그램들은 시험 수행부(120)를 통해 실행된다. 오류 프로그램들은 오류 프로그램 생성부(110)에 의하여 변형된 코드에 의한 오류(error)가 발견될 때까지 N개의 시험 데이터들의 집합인 시험 집합을 이용하여 수행된다.
도 2는 오류 기반 소프트웨어 시험 시스템의 시험 수행부의 동작 과정의 일 예를 설명하기 위한 순서도이다.
도 2를 참조하면, 시험 수행부(120)는 N개의 시험 데이터로 구성된 시험 집합을 이용하여 M개의 오류 프로그램들을 수행시키는 과정을 나타낸다.
먼저, 단계(S210)에서는 해당 오류 프로그램에서 오류가 검출되었는지를 표시하는 오류 검출 플래그 배열 Error[]의 모든 요소(element)들을 오류가 검출되지 않은 상태를 지시하는 'UNDETECED'로 설정한다.
이후, 시험 데이터를 지시하는 변수 i(i=1, …,N)와 오류 프로그램을 지시하는 변수(j=1, …, M)을 이용하여, 각각의 시험 데이터에 대해서 오류 프로그램들을 실행시키며 오류 프로그램에 의한 오류의 검출 여부를 파악하게 된다(S220~S221).
먼저, 해당 오류 프로그램j가 이미 다른 시험 데이터에 의해서 오류가 검출되었는지를 판단하고(S222), 이미 오류가 검출된 오류 프로그램이라면 해당 시험 데이터에 대한 실행은 생략된다. 오류 프로그램 j를 시험 데이터 i를 이용하여 실행하고(S223), 오류의 검출 여부를 확인(S224)한다. 만약, 오류가 검출되지 않았으면 다음 오류 프로그램(j+1번째)으로 S222 단계부터 반복하며, 오류가 검출되었다면 해당 오류 프로그램 j에 대한 오류 검출 플래그(Error[j])를 'DEDECTED'로 설정한다(S225).
기존 오류기반 시스템의 문제는 오류 프로그램 생성 및 수행에 지나치게 많은 시간과 비용이 소모된다는 것이다. 참고로 논문(A. J. Offutt, Ammei Lee, G. Rothermel, R. Untch and C. Zapf. "A experimental determination of sufficient mutation operators.", ACM Transaction of Software engineering methodology, 5(2):99-118, April 1996)에 따르면 28라인 규모의 간단한 프로그램 코드에 대해서 도 2에서 상술된 시험 방법(뮤테이션 시험)을 이용할 경우, 951개의 오류 프로그램이 생성되었다고 하며, 프로그램의 사이즈가 클수록 생성되는 오류 프로그램들의 수는 급증한다.
즉, 도 2를 통하여 예시된 오류 기반 시험 수행 절차와 같이, 오류 프로그램들은 해당 오류가 검출될 때까지 반복적으로 수행되는데, 오류기반 시험 방법 중 하나인 뮤테이션 시험의 경우, 생성되는 오류 프로그램들의 개수가 많다는 점 때문에 이들의 반복적 수행은 시험 수행 기간을 오래 걸리도록 만든다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 오류 기반 시험 방법 중 하나인 뮤테이션 시험에 있어서, 오류 프로그램의 수행 회수를 줄여 오류기반 시험 비용을 줄일 수 있는 오류 기반 소프트웨어 시험 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 오류 기반 시험 방법 중 하나인 뮤테이션 시험을 수행하는 시스템에 있어서, 오류 프로그램의 수행 회수를 줄여 오류기반 시험 비용을 줄일 수 있는 오류 기반 소프트웨어 시험 시스템을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명은, 시험 대상 프로그램에 오류(fault)를 주입하여 복수의 오류 프로그램을 생성하는 단계(a), 상기 생성된 복수의 오류 프로그램을 적어도 하나의 시험 데이터 각각에 대해 복수의 그룹으로 그룹핑하고, 그룹 각각에 대하여 적어도 하나의 대표 오류 프로그램을 선정하는 단계(b) 및 상기 대표 오류 프로그램들을 대응된 시험 데이터에 대하여 실행시키고 수행 결과에 오류(error)가 검출된 경우, 상기 대표 오류 프로그램이 속한 그룹의 모든 오류 프로그램들에 대해서도 상기 대응된 시험 데이터에 대한 실행으로 오류가 검출된 것으로 간주하는 단계(c)를 포함한 오류 기반 소프트웨어 시험 방법을 제공한다.
여기에서, 상기 단계(a)는, 상기 시험 대상 프로그램을 분석하여 입력된 오류 유형 목록에 해당하는 오류를 생성하고 상기 생성된 오류를 상기 시험 대상 프로그램에 주입하여 복수의 오류 프로그램을 생성하도록 구성될 수 있다. 이때, 상기 오류 유형 목록은 상기 시험 대상 프로그램과 동종의 시스템에서 자주 발생되는 것으로 예측된 오류 유형을 포함하여 구성될 수 있다.
여기에서, 상기 단계(b)는 주어진 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 동일한 그룹으로 그룹핑하고, 상기 각 그룹에 속한 적어도 하나의 오류 프로그램을 각 그룹의 대표 오류 프로그램으로 선정하도록 구성될 수 있다. 이때, 상기 주어진 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 찾는 과정은, 주어진 시험 데이터에 대하여 동일한 중간 결과를 도출하는 오류 프로그램들을 동일한 최종 결과를 도출하는 오류 프로그램들로 간주하는 과정을 포함할 수 있다.
상기 다른 목적을 달성하기 위한 본 발명은, 시험 대상 프로그램과 오류 유형 목록을 입력받고, 상기 시험 대상 프로그램을 분석하여 입력된 오류 유형 목록에 해당하는 오류를 생성하고 상기 생성된 오류를 상기 시험 대상 프로그램에 주입하여 복수의 오류 프로그램을 생성하는 오류 프로그램 생성부, 상기 생성된 복수의 오류 프로그램들을 적어도 하나의 시험 데이터 각각에 대해 복수의 그룹으로 그룹핑하고, 그룹 각각에 대하여 적어도 하나의 대표 오류 프로그램을 선정하는 오류 프로그램 그룹핑부, 상기 오류 프로그램 그룹핑부가 선정한 대표 오류 프로그램들을 대응된 시험 데이터에 대하여 실행시키는 대표 오류 프로그램 수행부 및 상기 대표 오류 프로그램 수행부의 대표 오류 프로그램 수행 결과에 오류(error)가 검출된 경우, 상기 대표 오류 프로그램이 속한 그룹의 모든 오류 프로그램들에 대해서도 오류가 검출된 것으로 간주하는 시험 결과 분석부를 포함한 오류 기반 소프트웨어 시험 장치를 제공한다.
여기에서, 상기 오류 프로그램 생성부가 입력받는 상기 오류 유형 목록은 상기 시험 대상 프로그램과 동종의 시스템에서 자주 발생되는 것으로 예측된 오류 유형을 포함하도록 구성될 수 있다.
여기에서, 상기 오류 프로그램 그룹핑부는 주어진 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 동일한 그룹으로 그룹핑하고, 상기 각 그룹에 속한 적어도 하나의 오류 프로그램을 각 그룹의 대표 오류 프로그램으로 선정하도록 구성될 수 있다. 이때, 상기 오류 프로그램 그룹핑부가 상기 주어진 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 찾는 과정은, 주어진 시험 데이터에 대하여 동일한 중간 결과를 도출하는 오류 프로그램들을 동일한 최종 결과를 도출하는 오류 프로그램들로 간주하는 과정을 포함하여 구성될 수 있다.
본 발명의 구성에 따르면 주어진 시험 데이터에 대해 동일한 결과를 산출할 오류 프로그램들을 그룹핑하여 이들 중 하나만 수행함으로써, 실제 수행되는 오류 프로그램의 수를 줄여 오류 기반 시험 수행 비용을 줄인다. 그룹핑 되는 오류 프로그램들이 많을 경우 감소되는 수행 비용은 크다는 이점이 있다.
도 1은 종래의 오류 기반 소프트웨어 시험 시스템의 일반적인 구성을 설명하기 위한 블록도이다.
도 2는 오류 기반 소프트웨어 시험 시스템의 시험 수행부의 동작 과정의 일 예를 설명하기 위한 순서도이다.
도 3은 본 발명에 따른 오류 기반 소프트웨어 시험 방법의 일예를 설명하기 위한 순서도이다.
도 4는 본 발명에 따른 오류 프로그램 그룹핑 방법의 일예를 설명하기 위한 프로그램 실행 결과표이다.
도 5는 본 발명에 따른 오류 기반 소프트웨어 시험 방법의 일예를 보다 구체적으로 설명하기 위한 순서도이다.
도 6은 본 발명에 따른 오류 기반 소프트웨어 시험 시스템의 구성을 설명하기 위한 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 3은 본 발명에 따른 오류 기반 소프트웨어 시험 방법의 일 예를 설명하기 위한 순서도이다.
도 3을 참조하면, 본 발명에 따른 오류 기반 소프트웨어 시험 방법의 일 예는, 시험 대상 프로그램에 오류(fault)를 주입하여 복수의 오류 프로그램를 생성하는 단계(S310), 생성된 복수의 오류 프로그램을 적어도 하나의 시험 데이터 각각에 대해 복수의 그룹으로 그룹핑하고, 그룹 각각에 대하여 적어도 하나의 대표 오류 프로그램을 선정하는 단계(S320) 및 상기 대표 오류 프로그램들을 대응된 시험 데이터에 대하여 실행시키고 수행 결과에 오류(error)가 검출된 경우, 상기 대표 오류 프로그램이 속한 그룹의 모든 오류 프로그램들에 대해서도 상기 대응된 시험 데이터에 대한 실행으로 오류가 검출된 것으로 간주하는 단계(S330)를 포함하여 구성될 수 있다.
먼저, 단계(S310)에서는, 시험 대상 프로그램과 오류 유형 목록을 입력받고, 시험 대상 프로그램을 분석하여 입력으로 받은 오류 유형 목록에 해당하는 오류들을 주입하여 복수의 오류 프로그램들을 생성한다. 이 때, 오류 유형 목록이 포함하는 오류의 유형은 시스템에서 자주 발생할 것이라 예측되는 오류 유형을 의미한다.
오류 유형의 예로는 산술 연산자(arithmetic operator)의 잘못된 사용이나 논리 연산자(logical operator)의 잘못된 사용 등이 빈번히 발생하는 오류의 유형에 해당한다.
다음으로, 단계(S320)에서는 생성된 복수의 오류 프로그램을 적어도 하나의 시험 데이터 집합 각각에 대해 복수의 그룹으로 그룹핑하고, 그룹 각각에 대하여 적어도 하나의 대표 오류 프로그램을 선정하게 된다.
이때, 오류 프로그램들을 그룹핑하는 방법의 일 예로는, 주어진 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 동일한 그룹으로 그룹핑하는 방법이 대표적이다.
단계(S320)에서 주어진 시험 데이터에 대해 동일한 결과를 발생시키는 프로그램을 그룹핑 하기 위해서는 이를 판별하는 방법이 필요하다. 본 발명에서는 단계(S320)의 오류 프로그램 그룹핑 방법의 일예로서 프로그램 중간 상태(결과)를 비교하여 중간 상태(결과)가 같으면 최종 결과도 같다고 보고 중간 상태가 같은 오류프로그램들을 동일한 그룹으로 그룹핑하는 구성을 취할 수 있다.
아래 프로그램 코드를 예를 들어 본 발명에서 제안하는 오류 프로그램 그룹핑 방법의 일예를 설명한다.
Figure 112012053929926-pat00001

예제 프로그램 코드와 같이 8라인으로 구성되는 myFunction 함수에서 3번째 라인의 문장에서 논리 연산자 '>'을 변형 시킴으로써 오류 프로그램을 만든다고 가정한다.
도 4는 본 발명에 따른 오류 프로그램 그룹핑 방법의 일 예를 설명하기 위한 프로그램 실행 결과표이다.
도 4를 참조하면, 앞서 살펴본 프로그램 코드 예제는 논리 연산자('>')의 변형에 의해서 5개의 오류 프로그램(ROR1, ROR2, ROR3, ROR4, ROR5)으로 변형이 가능하며 변경된 코드는 도 4에서 보여진 표의 "오류 코드" 항목과 같다.
도 4는 두 개의 시험 데이터 t1과 t2에 대한 최종 수행 결과를 나타낸다. 주어진 예제에 대하여 도 4의 결과에 따르면 중간 결과가 같으면 최종 결과도 동일함을 알 수 있다. 참고할 만한 사항은 시험 데이터에 따라 그룹핑이 다르게 된다는 것이다. 시험 데이터 t1에 의해서 {{ROR1, ROR5}, {ROR2, ROR3, ROR4}}의 그룹이 파악되는 반면 시험 데이터 t2에 의해서 {{ROR1, ROR3, ROR4}, {ROR2, ROR5}}의 그룹이 만들어진다. 따라서 시험 데이터별로 오류 프로그램 그룹핑 작업을 수행 해야 한다.
주어진 시험 데이터에 대하여 오류 프로그램들의 그룹핑이 완료되면, 각 그룹에 속한 적어도 하나의 오류 프로그램을 각 그룹의 대표 오류 프로그램으로 선정하게 된다.
다음으로, 단계(S330)에서는 대표 오류 프로그램들을 대응된 시험 데이터에 대하여 실행시키고 수행 결과에 오류(error)가 검출된 경우, 상기 대표 오류 프로그램이 속한 그룹의 모든 오류 프로그램들에 대해서도 상기 대응된 시험 데이터에 대한 실행으로 오류가 검출된 것으로 간주하는 단계이다. 이때, 대표 오류 프로그램은 대응된 시험 데이터에 대하여 실행되어야 한다. 시험 데이터별로 오류 프로그램 그룹핑이 달라지므로 대표 오류 프로그램도 시험 데이터별로 대응 관계가 발생되기 때문이다.
도 5는 본 발명에 따른 오류 기반 소프트웨어 시험 방법의 일예를 보다 구체적으로 설명하기 위한 순서도이다.
도 5를 참조하면, 앞서 도 4를 통하여 설명된 단계(S320) 및 단계(S330)가 보다 구체적으로 설명될 수 있다. 도 5에서 설명되는 단계(S510) 내지 단계(S526)는 도 4를 통하여 설명된 단계(S320)와 단계(S330)를 보다 세부적으로 설명하기 위한 것이며, 단계(S320) 및 단계(S330) 이후에 수행되는 단계들이 아님에 유의하여야 한다.
단계(S510)에서는 해당 오류 프로그램(오류 프로그램 #1, …, #M)에서 오류가 검출되었는지를 표시하는 오류 검출 플래그 Error[]를 모두 오류가 검출되지 않은 상태를 지시하는 'UNDETECED'로 설정한다.
이후, 시험 데이터를 지시하는 변수 i(i=1, …,N)를 이용하여, 각각의 시험 데이터에 대해서 오류 프로그램들을 실행시키며 오류 프로그램에 의한 오류의 검출 여부를 파악하게 된다(S520~S226).
먼저, 시험 데이터 i에 대하여 M개의 오류 프로그램들을 K개의 그룹으로 그룹핑을 하게 된다(S521). 이때, 오류 프로그램들의 그룹핑 과정은 앞서 도 3 및 도 4를 통하여 설명된 단계(S320)의 과정이 적용될 수 있으며, K는 M보다 적은 값이 될 수 있다.
일단 시험 데이터 i에 대하여 M개의 오류 프로그램들을 K개로 그룹핑하게 되면, 그룹 k(k=1, …, K)에 대하여 대표 오류 프로그램을 선정하고(S523), 대응되는 시험 데이터 i에 대해 선정된 대표 오류 프로그램을 실행하게 된다(S524). 대표 오류 프로그램의 실행 결과에 오류가 검출되었는지를 판별하여(S525), 오류가 검출되었다면 해당 대표 오류 프로그램이 속한 그룹의 모든 오류 프로그램들에게도 오류가 검출된 것으로 간주하여 해당 오류 프로그램들의 오류 검출 플래그들을 모두 'DETECTED' 상태로 설정한다(S526).
도 2와 도 5를 비교하여 보면, 도 2에서 예시되었던 기존의 오류 프로그램 실행 방법에서는 주어진 시험 데이터에 대한 오류 프로그램 수행 회수가 오류가 검출되지 않은 모든 오류 프로그램들의 개수였던 것에 반해 본 발명은 그 수행 회수를 그룹의 개수로 줄여준다. 만일 그룹의 개수가 오류 프로그램들의 개수보다 현저히 작을 경우, 이를 통하여 큰 시험 수행 비용의 감소를 가져올 수 있다.
도 6은 본 발명에 따른 오류 기반 소프트웨어 시험 시스템의 구성을 설명하기 위한 블록도이다.
도 6을 참조하면, 본 발명에 따른 오류 기반 소프트웨어 시험 시스템(600)은 오류 프로그램 생성부(610)와, 오류 프로그램 그룹핑부(621), 대표 오류 프로그램 수행부(622) 및 시험 결과 분석부(623)를 포함한 시험 수행부(620)를 포함하여 구성될 수 있다.
먼저, 오류 프로그램 생성부(610)는 시험 대상 프로그램과 오류 유형 목록을 입력받고, 시험 대상 프로그램을 분석하여 입력으로 받은 오류 유형 목록에 해당하는 오류들을 생성해낸다. 이 때, 오류 유형은 시스템에서 자주 발생할 것이라 예측되는 오류 유형을 의미한다.
예를 들면, 오류의 유형은 소프트웨어의 경우 산술 연산자(arithmetic operator)의 잘못된 사용, 논리 연산자(logical operator)의 잘못된 사용 등이 빈번히 발생하는 오류의 유형에 해당한다. 오류 프로그램 생성부(110)의 결과물은 주어진 오류 유형에 따라 시험 대상 프로그램을 변형시킨 프로그램들(mutant)로, 도 6에서는 오류 프로그램 #1, 오류 프로그램 #2, …, 오류 프로그램 #M 으로 모두 M개의 오류 프로그램들이 생성되었음을 표현한다.
한편, 본 발명에 따른 오류 프로그램 생성부(610)는 도 1에서 예시된 기존의 오류 프로그램 생성부(110)와는 달리, 시험 수행부(620)에 오류 정보를 추가로 제공한다. 오류 정보는 오류 프로그램들에 삽입된 오류들의 요약 정보이다. 이 정보는 오류가 삽입된 코드의 위치와 오류 형태를 포함한다. 이 정보는 추후 오류 프로그램 그룹핑부(621)의 입력으로 사용되어, 오류 프로그램들을 그룹핑 하는데 이용된다.
다음으로, 시험 수행부(620)는 오류 프로그램 그룹핑부(621), 대표 오류 프로그램 수행부(622), 시험 결과 분석부(623)를 포함하여 구성될 수 있다.
오류 프로그램 그룹핑부(621)는 특정 시험 데이터에 대해 같은 결과를 발생시킬 것이라 기대되는 오류 프로그램들을 그룹핑한다. 그룹핑된 오류 프로그램들은 그룹 내 하나의 오류 프로그램만 수행시켜도 나머지 결과를 알 수 있다. 즉, 그룹 내 한 프로그램의 수행 결과는 그룹 내 다른 프로그램의 수행 결과를 의미한다. 따라서 기존의 방법처럼 모든 오류 프로그램들을 일일이 수행시키지 않고, 본 발명을 통한 오류 프로그램 그룹핑을 통해 각각의 그룹에서 하나의 오류 프로그램만 수행시키면 된다.
대표 오류 프로그램 수행부(622)는 오류 프로그램 그룹핑부(621)로부터 받은 대표 오류 프로그램들, 각 그룹에서 선발된 대표 프로그램들에 대해서만 시험을 수행하고 그 결과를 시험 결과 분석부(212)에게 전달한다.
시험 결과 분석부(623)는 검출된 대표 오류 프로그램들과 같은 그룹에 속한 다른 오류 프로그램들을 파악하여 이들을 모두 검출되었다고 표시한다. 이 과정은 각각의 시험 데이터 별로 반복한다. 왜냐하면 시험 데이터 1에 대해서 같은 결과를 발생시키는 오류 프로그램 1과 오류 프로그램 2가 있었다고 하더라도 이 들 오류 프로그램들이 시험 데이터 2에 대해서 같은 결과를 발생시키지 않을 수 있기 때문이다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
600: 오류 기반 소프트웨어 시험 시스템
610: 오류 프로그램 생성부
620: 시험 수행부
621: 오류 프로그램 그룹핑부 622: 대표 오류 프로그램 수행부
623: 시험 결과 분석부

Claims (9)

  1. 시험 대상 프로그램에 오류들(faults)를 주입하여 복수의 오류 프로그램을 생성하는 단계(a);
    상기 오류들이 주입된 복수의 오류 프로그램을 적어도 하나의 시험 데이터를 이용하여 복수의 그룹으로 그룹핑하고, 각 그룹에 대하여 상기 오류들이 주입된 복수의 오류 프로그램 중에서 적어도 하나를 상기 각 그룹의 대표 오류 프로그램으로 선정하는 단계(b); 및
    상기 적어도 하나의 시험 데이터를 이용하여 상기 각 그룹의 대표 오류 프로그램을 실행시키고, 실행 결과에 오류(error)가 검출된 경우, 상기 각 그룹 내에 상기 오류들이 주입된 오류 프로그램들 모두에 대해서도 상기 적어도 하나의 시험 데이터에 따른 오류가 검출된 것으로 간주하는 단계(c)를 포함한 오류 기반 소프트웨어 시험 방법.
  2. 청구항 1에 있어서,
    상기 단계(a)는, 상기 시험 대상 프로그램을 분석하고, 오류 유형 목록을 입력받은 후, 입력받은 오류 유형 목록을 이용하여 상기 오류들을 생성하고 상기 생성된 오류들을 상기 시험 대상 프로그램에 주입하여 상기 복수의 오류 프로그램을 생성하는 오류 기반 소프트웨어 시험 방법.
  3. 청구항 2에 있어서,
    상기 오류 유형 목록은 상기 시험 대상 프로그램과 동종의 시스템에서 자주 발생되는 것으로 예측된 오류 유형을 포함한 것을 특징으로 하는 오류 기반 소프트웨어 시험 방법.
  4. 청구항 1에 있어서,
    상기 단계(b)는 상기 적어도 하나의 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 동일한 그룹으로 그룹핑하는 단계를 포함하는 오류 기반 소프트웨어 시험 방법.
  5. 청구항 4에 있어서,
    상기 동일한 그룹으로 그룹핑하는 단계는, 상기 적어도 하나의 시험 데이터에 대하여 동일한 중간 결과를 도출하는 오류 프로그램들을 동일한 최종 결과를 도출하는 오류 프로그램들로 간주하는 단계를 포함하는 오류 기반 소프트웨어 시험 방법.
  6. 시험 대상 프로그램과 오류 유형 목록을 입력받고, 상기 시험 대상 프로그램을 분석하여 입력된 오류 유형 목록에 해당하는 오류들을 생성하고 상기 생성된 오류들을 상기 시험 대상 프로그램에 주입하여 복수의 오류 프로그램을 생성하는 오류 프로그램 생성부;
    상기 오류들이 주입된 복수의 오류 프로그램들을 적어도 하나의 시험 데이터를 이용하여 복수의 그룹으로 그룹핑하고, 각 그룹에 대하여 상기 오류들이 주입된 복수의 오류 프로그램 중에서 적어도 하나를 상기 각 그룹의 대표 오류 프로그램으로 선정하는 오류 프로그램 그룹핑부;
    상기 적어도 하나의 시험 데이터를 이용하여 상기 오류 프로그램 그룹핑부가 선정한 대표 오류 프로그램들을 실행시키는 대표 오류 프로그램 수행부; 및
    상기 대표 오류 프로그램 수행부의 상기 대표 오류 프로그램들의 실행 결과에 오류(error)가 검출된 경우, 상기 각 그룹 내에 상기 오류들이 주입된 오류 프로그램들 모두에 대해서도 오류가 검출된 것으로 간주하는 시험 결과 분석부를 포함한 오류 기반 소프트웨어 시험 장치.
  7. 청구항 6에 있어서,
    상기 오류 프로그램 생성부가 입력받는 상기 오류 유형 목록은 상기 시험 대상 프로그램과 동종의 시스템에서 자주 발생되는 것으로 예측된 오류 유형을 포함한 것을 특징으로 하는 오류 기반 소프트웨어 시험 장치.
  8. 청구항 6에 있어서,
    상기 오류 프로그램 그룹핑부는 상기 적어도 하나의 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 동일한 그룹으로 그룹핑하는 오류 기반 소프트웨어 시험 장치.
  9. 청구항 8에 있어서,
    상기 오류 프로그램 그룹핑부는,
    상기 적어도 하나의 시험 데이터에 대하여 동일한 중간 결과를 도출하는 오류 프로그램들을 동일한 최종 결과를 도출하는 오류 프로그램들로 간주함으로써, 상기 적어도 하나의 시험 데이터에 대하여 동일한 결과를 도출하는 오류 프로그램들을 동일한 그룹으로 그룹핑하는 오류 기반 소프트웨어 시험 장치.
KR1020120073379A 2012-07-05 2012-07-05 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템 KR101695015B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120073379A KR101695015B1 (ko) 2012-07-05 2012-07-05 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템
US13/645,555 US8954807B2 (en) 2012-07-05 2012-10-05 Fault-based software testing method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120073379A KR101695015B1 (ko) 2012-07-05 2012-07-05 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템

Publications (2)

Publication Number Publication Date
KR20140008547A KR20140008547A (ko) 2014-01-22
KR101695015B1 true KR101695015B1 (ko) 2017-01-11

Family

ID=49879464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120073379A KR101695015B1 (ko) 2012-07-05 2012-07-05 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템

Country Status (2)

Country Link
US (1) US8954807B2 (ko)
KR (1) KR101695015B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
US9836389B2 (en) * 2013-02-17 2017-12-05 International Business Machines Corporation Test data generation utilizing analytics
HK1197787A2 (en) * 2014-01-20 2015-02-13 馮衍聰 Juice extraction devices with hollow juice extraction screw
US20160283521A1 (en) * 2015-03-24 2016-09-29 International Business Machines Corporation Matching untagged data sources to untagged data analysis applications
US20160283522A1 (en) * 2015-03-24 2016-09-29 International Business Machines Corporation Matching untagged data sources to untagged data analysis applications
US9983986B2 (en) 2015-09-28 2018-05-29 International Business Machines Corporation Testing code response to injected processing errors
KR101935105B1 (ko) * 2016-11-15 2019-01-03 국방과학연구소 오류 모의 함수를 이용한 자동화 기반 강건성 검증 장치 및 방법
US10073763B1 (en) * 2017-12-27 2018-09-11 Accenture Global Solutions Limited Touchless testing platform
CN110297755B (zh) * 2018-03-23 2023-09-12 龙芯中科技术股份有限公司 一种软件测试方法和装置
US11003574B2 (en) * 2018-06-06 2021-05-11 Sap Se Optimized testing system
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
KR102141287B1 (ko) 2018-12-04 2020-08-04 이화여자대학교 산학협력단 Autosar 기반 차량 소프트웨어의 결함 테스트 방법 및 결함 테스트 시스템
KR20210004656A (ko) 2019-07-05 2021-01-13 현대자동차주식회사 차량 기능 테스트 장치 및 그 제어 방법
CN110941548A (zh) * 2019-10-21 2020-03-31 北京航空航天大学 一种嵌入式软件多故障并发条件下的测试方法
KR20210092488A (ko) 2020-01-16 2021-07-26 에스케이이노베이션 주식회사 배터리 관리 시스템
CN112884475A (zh) * 2021-01-22 2021-06-01 支付宝(杭州)信息技术有限公司 一种智能合约资损监控系统的测试方法及系统
CN112967059A (zh) * 2021-05-18 2021-06-15 支付宝(杭州)信息技术有限公司 一种测试资损监控系统的变异智能合约生成方法和系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289487A1 (en) * 2010-05-18 2011-11-24 International Business Machines Corporation Framework for a software error inject tool

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826194B1 (en) * 1999-01-20 2004-11-30 Tadiran Telecom Business Systems Ltd. Method for serving IP users by graphically-based interaction to agents of a call center
US6701460B1 (en) * 1999-10-21 2004-03-02 Sun Microsystems, Inc. Method and apparatus for testing a computer system through software fault injection
US7464374B2 (en) * 2005-05-26 2008-12-09 International Business Machines Corporation System and method for error checking of failed I/O open calls
US7707559B2 (en) * 2005-08-30 2010-04-27 International Business Machines Corporation Analysis of errors within computer code
US8561034B2 (en) 2006-06-22 2013-10-15 Infosys Technologies, Ltd. Software fault injection in java enterprise applications
KR101266359B1 (ko) 2009-05-08 2013-05-22 한국전자통신연구원 선택적 오류 주입 활성화를 통한 저비용 소프트웨어 신뢰성 시험 방법, 소프트웨어 신뢰성 시험을 지정 대상 모듈로 한정하는 방법, 소프트웨어 신뢰성 시험을 위한 대상 모듈에 부하를 발생시키는 방법 및 이러한 방법들을 사용하여 소프트웨어 신뢰성 시험을 하는 컴퓨팅 장치
KR101012108B1 (ko) 2009-07-21 2011-02-07 한국원자력연구원 임베디드 시스템 결함검출률 평가 장치 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289487A1 (en) * 2010-05-18 2011-11-24 International Business Machines Corporation Framework for a software error inject tool

Also Published As

Publication number Publication date
US20140013164A1 (en) 2014-01-09
US8954807B2 (en) 2015-02-10
KR20140008547A (ko) 2014-01-22

Similar Documents

Publication Publication Date Title
KR101695015B1 (ko) 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템
US9389849B2 (en) Test case pattern matching
US8464222B2 (en) Method, apparatus or software for identifying dependencies between components for a given build of a componentised product
CN103019936B (zh) 一种数控软件测试系统
US20080126867A1 (en) Method and system for selective regression testing
Arrieta et al. Spectrum-based fault localization in software product lines
US9274930B2 (en) Debugging system using static analysis
Briand A critical analysis of empirical research in software testing
CN108595343A (zh) 应用程序的测试方法及装置
Nugroho et al. Assessing uml design metrics for predicting fault-prone classes in a java system
CN105302719A (zh) 一种变异测试方法及装置
CN105786678A (zh) 一种基于相关性模型的测试性预计方法
CN103530209B (zh) 一种密码键盘自动化测试方法
CN101482596B (zh) 多因素工业系统的故障快速识别方法
CN109977012B (zh) 系统的联调测试方法、装置、设备及计算机可读存储介质
KR101940486B1 (ko) 저비용 오류 기반 프로그램 테스트 장치 및 그 방법
Pinte et al. Techniques and tools for the automatic generation of optimal test data at code, model and interface level
CN106354930B (zh) 一种空间飞行器的自适应重构方法及系统
CN104142885A (zh) 一种用于对被测程序进行异常测试的方法和装置
Liu et al. Efficient testing based on logical architecture
CN112416807A (zh) 一种测试用例结果分析及关联的系统及方法
Jeong et al. VIS analyzer: A visual assistant for VIS verification and analysis
CN102521124A (zh) 一种失败原因的输出方法和系统
CN111382059A (zh) 代码质量评价方法及系统
JP2009129132A (ja) ソフトウェア部分テストシステム、それに用いる方法およびプログラム

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: 20191223

Year of fee payment: 4