KR101269549B1 - 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법 - Google Patents

오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법 Download PDF

Info

Publication number
KR101269549B1
KR101269549B1 KR1020090040284A KR20090040284A KR101269549B1 KR 101269549 B1 KR101269549 B1 KR 101269549B1 KR 1020090040284 A KR1020090040284 A KR 1020090040284A KR 20090040284 A KR20090040284 A KR 20090040284A KR 101269549 B1 KR101269549 B1 KR 101269549B1
Authority
KR
South Korea
Prior art keywords
error injection
error
software
delegate
injection
Prior art date
Application number
KR1020090040284A
Other languages
English (en)
Other versions
KR20100121226A (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 KR1020090040284A priority Critical patent/KR101269549B1/ko
Priority to US12/560,070 priority patent/US20100287535A1/en
Publication of KR20100121226A publication Critical patent/KR20100121226A/ko
Application granted granted Critical
Publication of KR101269549B1 publication Critical patent/KR101269549B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

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

Abstract

본 발명은 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법에 관한 것으로서, 일면에 따른 소프트웨어 신뢰성 테스트 시스템은 대상 시스템의 소프트웨어들 중 테스트 대상으로 선택된 소프트웨어에 오류를 주입할 오류 주입 대리자를 생성하는 오류 주입 시스템; 및 상기 선택된 소프트웨어로 상기 생성된 오류 주입 대리자에 의해 상기 오류가 주입되어 유발될 수 있도록 상기 오류 주입 시스템의 제어에 따라 상기 선택된 소프트웨어에 부하를 발생시키는 부하 발생 시스템을 포함한다.
Figure R1020090040284
신뢰성 테스트, 오류 주입, 오류 주입 대리자, 부하생성기

Description

오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법{SYSTEM AND METHOD FOR TESTING SOFTWARE RELIABILITY USING FAULT INJECTION}
본 발명은 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법에 관한 것으로서, 보다 구체적으로는 테스트 대상으로 선택된 소프트웨어에 오류를 주입할 오류 주입 대리자를 생성하고, 생성된 오류 주입 대리자를 대상 시스템에 로딩하여 선택된 소프트웨어에 오류를 주입하고, 선택된 소프트웨어의 특성을 고려한 부하 발생을 통해 테스트를 수행하는 소프트웨어 신뢰성 테스트 시스템 및 방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호:2008-F-026-01,과제명:공개 SW 플랫폼 고도화를 위한 리눅스 커널 기술개발].
일반적인 오류 주입 및 부하 발생을 통한 소프트웨어 신뢰성 테스트 방법은 다양한 디바이스 드라이버 및 동적 로딩되는 실행 코드의 개발에 사용되고 있다. 또한 시스템의 가용성 시험이나, 고장 감내(fault-tolerant) 시스템의 벤치마킹에도 다양하게 사용되고 있다.
오류 주입 방식은 정적인 오류 주입 및 동적인 오류 주입 방식으로 구분된다.
정적인 오류 주입 방식은 테스트 대상의 소스 코드에 오류 코드를 추가한 후 재컴파일하여 생성된 실행 코드를 재실행함으로써 테스트 대상의 프로그램 지점에 오류 주입을 정적으로 수행하는 방식이다.
동적인 오류 주입 방식은 특정 메모리 영역이나 레지스터의 값을 변경하는 방식과 실행되는 프로그램의 바이너리 이미지에 동적으로 코드를 삽입하여 오류를 주입하는 방식으로 구분된다.
소스 변경을 통한 정적인 오류 주입 방식은 사용자가 원하는 영역에 오류 주입이 가능하지만 소스의 변경, 재컴파일 및 재실행이 요구되고, 다른 대상 시스템의 소프트웨어에 오류를 주입하려면 동일한 작업을 반복적으로 수행해야 하는 번거로움이 있다.
메모리 영역이나 레지스터의 값을 변경하는 동적인 오류 주입 방식은 테스트 대상의 소스 코드의 수정이나 재컴파일 없이 오류의 자유로운 주입이 가능하지만, 오류가 테스트 대상의 어느 부분에 주입될지 알 수가 없다. 즉, 테스트 대상의 소프트웨어 전체를 테스트할 때는 적합하지만 사용자가 원하는 특정 소프트웨어에 대한 오류 시험에는 사용이 적합하지 않다. 동적 코드 삽입을 이용한 오류 주입 방식은 대상 소프트웨어에 대한 실행 중의 동적인 오류 주입이 가능하지만, 대상 소프트웨어마다 오류 주입을 할 지점을 파악하고 오류 값을 지정해야 하므로 소스에 대한 흐름을 파악해야 하는 등의 복잡성이 증가한다.
이러한 일반적인 소프트웨어 신뢰성 테스트 방법은 오류를 테스트 대상 시스템의 특정 소프트웨어에 주입하지 못하고 테스트 대상 시스템 전체에 오류가 주입되도록 하여 소프트웨어의 신뢰성 테스트가 어렵다는 문제점이 있다. 소프트웨어에 대한 오류 주입 기법들에서는 코드 변경에 의한 재컴파일이 요구되거나, 소프트웨어의 흐름을 파악하고 오류 주입 지점을 파악해서 지정해야 하는 복잡한 과정이 필요하다. 또한, 주입된 오류의 활성화를 위한 부하 발생에 있어서도 테스트 대상의 소프트웨어적 동작 특성을 고려한 집중적 부하 발생이 어렵다는 문제점이 있다.
본 발명은 상기와 같은 문제점을 감안하여 창출한 것으로서, 대상 시스템 상에 동작 중인 복수의 소프트웨어 중 테스트 대상으로 선택된 소프트웨어에 오류를 주입하기 위한 오류 주입 대리자와 대상 소프트웨어의 특성을 고려한 부하 발생을 이용하여 소프트웨어를 테스트하는 소프트웨어 신뢰성 테스트 시스템 및 방법을 제공하는 데 그 목적이 있다.
본 발명의 다른 목적은 실행중인 바이너리 이미지에 삽입되는 동적 코드는 오류 대리자 수행을 위해 트랩을 발생시키는 최소한의 탐침 코드 형태를 갖고 오류 주입을 수행하는 별도의 오류 주입 대리자를 통한 동적 오류 주입 방식으로 복잡성 제거 및 다양한 시스템 수준의 오류 주입 정책을 지원할 수 있는 소프트웨어 신뢰성 테스트 시스템 및 방법을 제공함에 있다.
전술한 목적을 달성하기 위하여, 본 발명의 일면에 따른 소프트웨어 신뢰성 테스트 시스템은 대상 시스템의 소프트웨어들 중 테스트 대상으로 선택된 소프트웨어에 오류를 주입할 오류 주입 대리자를 생성하는 오류 주입 시스템; 및 상기 선택된 소프트웨어로 상기 생성된 오류 주입 대리자에 의해 상기 오류가 주입되어 유발될 수 있도록 상기 오류 주입 시스템의 제어에 따라 상기 선택된 소프트웨어에 부하를 발생시키는 부하 발생 시스템을 포함하고, 상기 오류 주입 시스템은, 상기 선택된 소프트웨어의 오류 주입 정보 및 부하 정보를 입력받는 오류 주입 관리자; 및 상기 선택된 소프트웨어로부터 추출된 메타데이터와 오류 유형을 근거로 오류 주입 지점을 결정하고, 상기 결정된 오류 주입 지점, 상기 오류 주입 정보 및 오류 유형별 오류 주입 루틴이 정의된 라이브러리 형태의 오류 주입 템플릿을 근거로 상기 오류 주입 대리자를 생성하는 오류 대리자 생성기를 포함한다.
본 발명의 다른 면에 따른 소프트웨어 신뢰성 테스트 방법은 대상 시스템의 소프트웨어들 중 테스트할 소프트웨어를 선택하는 단계; 상기 선택된 소프트웨어로 오류를 주입하는 오류 주입 대리자를 생성하는 단계; 및 상기 생성된 오류 주입 대리자가 상기 선택된 소프트웨어에 오류를 주입할 수 있도록 상기 선택된 소프트웨어에 부하를 발생시키는 단계를 포함하고, 상기 오류 주입 대리자를 생성하는 단계는, 상기 선택된 소프트웨어로부터 추출된 메타데이터와 오류 유형을 근거로 오류 주입 지점을 결정하는 단계; 및 상기 오류 주입 대리자를 상기 결정된 오류 주입 지점, 입력된 상기 소프트웨어의 오류 주입 정보 및 오류 유형별 오류 주입 루틴이 정의된 라이브러리 형태의 오류 주입 템플릿을 근거로 생성하는 단계를 포함한다.
본 발명에 따르면, 오류 주입 대리자를 생성하고, 생성된 오류 주입 대리자를 통해 테스트 대상으로 선택된 소프트웨어에 오류를 주입함으로써, 선택된 소프트웨어의 소스 코드 변경 및 변경된 소스 코드의 재컴파일 없이 소프트웨어 신뢰성 테스트를 할 수 있는 효과가 있다.
특히 동적으로 삽입되어 트랩을 발생시키는 탐침 코드와 분리된 별도의 오류 주입 대리자를 통해 동적 코드 삽입 방식에서 문제되었던 복잡성의 문제 없이 소프트웨어 신뢰성 테스트를 효율적으로 수행할 수 있는 이점이 있다.
또한, 분리된 오류 주입 대리자를 통해 특정 소프트웨어가 아닌 시스템적으로 오류 주입 정책을 효율적으로 적용할 수 있는 이점이 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알 려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 대하여 상세하게 설명한다.
도 1을 참조하여 본 발명의 일실시예에 따른 소프트웨어 신뢰성 테스트 시스템에 대하여 간략하게 설명한다. 도 1은 본 발명의 일실시예에 따른 소프트웨어 신뢰성 테스트 시스템을 설명하기 위한 개념도이다.
도 1에 도시된 바와 같이, 본 발명의 일실시예에 따른 소프트웨어 신뢰성 테스트 시스템은 오류 주입 시스템(100) 및 부하 발생 시스템(200)을 포함한다.
먼저 오류 주입 시스템(100)은 사용자(400)로부터 정보를 입력받고, 입력받은 정보를 근거로 오류 주입 대리자(131)를 생성하여 대상 시스템(300)에 로딩한다.
대상 시스템(300)에 로딩된 오류 주입 대리자(131)는 대상 시스템(300)의 소프트웨어들 중 사용자에 의해 테스트 대상으로 선택된 소프트웨어(310)에 오류(320)를 주입한다.
오류 주입 시스템(100)은 생성된 오류 주입 대리자(131)가 테스트 대상으로 선택된 소프트웨어(310)에 오류(320)를 주입하고, 주입된 오류(320)가 활성화될 수 있도록 부하 발생 시스템(200)을 제어한다.
부하 발생 시스템(200)은 오류 주입 시스템(100)의 제어에 따라 선택된 소프트웨어(310)에 적합한 부하(210)를 집중적으로 발생시킨다.
이하에서, 도 2를 참조하여 도 1의 오류 주입 시스템에 대한 구성 및 소프트웨어 신뢰성 테스트 시스템의 동작 방법에 대하여 보다 상세하게 설명한다. 도 2는 도 1의 오류 주입 시스템을 설명하기 위한 구성도이다.
도 2에 도시된 바와 같이, 오류 주입 시스템(100)은 오류 주입 관리자(110), 소프트웨어 분석기(120), 오류 주입 대리자 생성기(130), 오류 주입 대리자(131), 오류 주입 설정 적재기(140) 및 부하 조정기(150)를 포함한다.
먼저 오류 주입 관리자(110)는 명령 해석기(111) 및 작업 스케줄러(112)를 포함한다.
명령 해석기(111)는 명령도구 인터페이스를 사용자에게 제공하고, 사용자가 입력한 명령을 해석한다. 그리고 명령 해석기(111)는 해석된 명령을 테스트 대상으로 선택된 소프트웨어(310)의 정보, 선택된 소프트웨어(310)의 오류 주입 정보 및 선택된 소프트웨어(310)의 부하 정보로 파싱한다.
명령 해석기(111)는 파싱된 정보 중 필요한 정보를 소프트웨어 분석기(120), 오류 주입 대리자 생성기(130), 오류 주입 설정 적재기(140) 및 부하 조정기(150) 각각에 전달한다.
여기서 선택된 소프트웨어(310)의 정보는 필요에 따라 대상 시스템(300)에 로딩되어 동작할 수 있는 복수의 소프트웨어 중 어떤 소프트웨어가 테스트 대상으 로 선택되었는지를 알려주는 정보로서, 소프트웨어 A가 선택된 경우, 선택된 소프트웨어(310)의 정보는 테스트 대상으로 소프트웨어 A가 선택된 것을 나타내고, 오류 주입 정보는 선택된 소프트웨어(310)의 오류 유형, 오류 주입 주기, 오류 주입 간격, 오류 주입 최대 횟수 및 오류 주입 대리자(131)가 동작하는 제한시간을 포함하며, 부하 정보는 테스트가 아닌 정상 동작 중에 부하를 발생시키는 부하 발생 프로그램[예컨대, 부하 발생 시스템(200)에 포함된 복수의 부하 발생 프로그램 중 선택된 소프트웨어(310)에 적합한 부하를 발생시키는 부하 발생 프로그램] 및 부하 발생 프로그램의 수행에 필요한 옵션을 포함한다.
작업 스케줄러(112)는 소프트웨어 분석기(120), 오류 주입 대리자 생성기(130), 오류 주입 설정 적재기(140) 및 부하 조정기(150)의 동작을 기설정된 소프트웨어 신뢰성 테스트의 작업 순서에 따라 제어한다.
여기서 기설정된 작업 순서는 테스트 대상으로 선택된 소프트웨어(310)의 분석, 오류 주입 대리자(131)의 생성, 오류 주입 대리자(131)에 오류 주입 정보 설정, 선택된 소프트웨어(310)에 오류 주입, 선택된 소프트웨어(310)에 부하 발생 제어 및 소프트웨어 신뢰성 테스트의 종료 순으로 설정될 수 있다.
또한 테스트 대상으로 선택된 소프트웨어(310)의 분석은 소프트웨어 분석기(120)가 수행할 수 있고, 오류 주입 대리자(131)의 생성은 오류 주입 대리자 생성기(130)가 수행할 수 있으며, 오류 주입 대리자(131)에 오류 주입 정보 설정은 오류 주입 설정 적재기(140)가 수행할 수 있다. 선택된 소프트웨어(310)에 오류 주입은 오류 주입 대리자(131)가 수행할 수 있고, 선택된 소프트웨어(310)에 부하 발 생 제어는 부하 조정기(150)가 수행할 수 있으며, 소프트웨어 신뢰성 테스트의 종료는 작업 스케줄러(112)가 수행할 수 있다.
작업 스케줄러(112)는 작업 순서에 따라 각 작업이 진행될 수 있도록 소프트웨어 분석기(120), 오류 주입 대리자 생성기(130), 오류 주입 설정 적재기(140), 오류 주입 대리자(131) 및 부하 조정기(150)의 동작을 제어한다. 즉, 작업 스케줄러(112)는 현재 동작 중인 작업의 결과에 따라 다음 작업 순서를 결정하고, 결정된 순서에 따라 다음 작업이 진행될 수 있도록 소프트웨어 분석기(120), 오류 주입 대리자 생성기(130), 오류 주입 설정 적재기(140), 오류 주입 대리자(131) 및 부하 조정기(150)의 동작을 제어할 수 있다.
예컨대, 명령 해석기(111)가 사용자로부터 입력받은 명령을 파싱하여 소프트웨어 분석기(120), 오류 주입 대리자 생성기(130), 오류 주입 설정 적재기(140) 및 부하 조정기(150) 각각에 필요한 정보를 전달하면, 작업 스케줄러(112)는 설정된 작업 순서에 따라 테스트 대상으로 선택된 소프트웨어(310)의 분석이 진행될 수 있도록 소프트웨어 분석기(120)를 제어할 수 있다.
작업 스케줄러(112)는 현재 작업인 분석 작업에 대한 결과를 소프트웨어 분석기(120)로부터 리턴받아 확인하고, 확인결과, 정상일 경우, 다음 작업 순서를 오류 주입 대리자(131)의 생성으로 결정할 수 있다. 작업 스케줄러(112)는 결정된 다음 작업 순서에 따라 명령 해석기(111)에서 전달된 정보를 근거로 오류 주입 대리자(131)의 생성이 진행될 수 있도록 오류 주입 대리자 생성기(130)를 제어할 수 있다.
그러나, 확인결과, 분석 작업의 결과가 에러일 경우, 작업 스케줄러(112)는 기설정된 에러 처리를 수행한 후 다음 작업을 테스트 종료로 결정하고, 소프트웨어 신뢰성 테스트를 종료하기 위해 테스트 종료를 수행할 수 있다.
작업 스케줄러(112)는 기설정된 소프트웨어 신뢰성 테스트의 작업 순서뿐만 아니라 오류 주입 대리자(131)가 대상 시스템(300)에서 동작한 시간을 확인하여 다음 작업 진행을 제어할 수 있다.
예컨대, 오류 주입 대리자(131)가 대상 시스템(300)에서 동작한 시간이 제한시간을 초과한 경우, 작업 스케줄러(112)는 오류 주입 대리자(131) 및 부하 발생 프로그램을 종료시켜 소프트웨어 신뢰성 테스트를 종료할 수 있다.
소프트웨어 분석기(120)는 명령 해석기(111)에서 전달된 선택된 소프트웨어(310)의 정보를 근거로 선택된 소프트웨어(310)를 분석하여 메타데이터를 추출한다. 추출된 메타데이터에는 선택된 소프트웨어(310)에 대한 함수들과 함수들의 주소가 포함될 수 있다.
오류 주입 대리자 생성기(130)는 대상 시스템(300)에 로딩되어 선택된 소프트웨어(310)에 오류 주입(320)을 수행할 오류 주입 대리자(131)를 생성한다.
예컨대, 오류 주입 대리자 생성기(130)는 소프트웨어 분석기(120)에서 추출된 메타데이터와 오류 유형을 근거로 오류 주입 지점을 결정하고, 결정된 오류 주입 지점, 선택된 소프트웨어(310)의 정보, 오류 주입 정보 및 기저장된 오류 주입 템플릿(160)을 근거로 오류 주입 대리자(131)를 생성할 수 있다. 여기서 오류 주입 템플릿(160)은 선택된 소프트웨어(310)에 주입될 오류 유형별로 오류 주입(320)을 수행하는 루틴이 정의된 라이브러리 형태의 템플릿일 수 있다.
보다 구체적으로 오류 주입 대리자(131)의 생성을 설명하면, 오류 주입 대리자 생성기(130)는 추출된 메타데이터와 오류 유형을 근거로 선택된 소프트웨어(310)의 오류 주입 지점을 결정할 수 있다. 오류 주입 대리자 생성기(130)는 결정된 오류 주입 지점 및 오류 주입 템플릿(160)을 근거로 선택된 오류 유형에 따라 오류 주입 루틴을 작성할 수 있다. 오류 주입 루틴 작성을 완료한 후, 오류 주입 대리자 생성기(130)는 오류 주입 정보를 근거로 오류 주입 대리자(131)의 오류 주입 주기, 오류 주입 간격, 오류 주입 최대 횟수 및 작성된 오류 주입 루틴을 반영한 오류 주입 대리자(131)를 생성할 수 있다.
한편, 오류 주입 시스템(100)은 선택된 소프트웨어(310)의 오류 주입 지점에 트랩을 발생시키는 동적 탐침기(330)를 더 포함할 수 있고, 오류 주입 대리자(131)의 생성이 완료될 경우, 오류 주입 정보 및 추출된 메타데이터를 근거로 선택된 소프트웨어(310)의 오류 주입 지점에 대응하는 함수에 동적 탐침기(330)를 삽입할 수 있다.
생성된 오류 주입 대리자(131)는 대상 시스템(300)에 로딩되고, 선택된 소프트웨어(310)의 동적 탐침기(330)가 구동되어 트랩이 발생할 때까지 오류 주입 대기 상태에 있으며, 트랩이 발생하면 오류 주입 동작 상태로 전환한다.
오류 주입 설정 적재기(140)는 오류 주입 대리자(131)에게 오류 주입 주기, 오류 주입 간격 및 오류 주입 최대 횟수를 설정한다. 오류 주입 대리자(131)는 작성된 오류 주입 루틴에 따라 설정된 오류 주입 주기, 오류 주입 간격 및 오류 주입 최대 횟수를 근거로 선택된 소프트웨어(310)에 오류 주입(320)을 수행할 수 있다.
예컨대, 오류 주입 대리자(131)가 대상 시스템(300)에 로딩되고, 대상 소프트웨어의 바이너리 이미지[예컨대, 선택된 소프트웨어(310)의 오류 주입 지점]에 동적 탐침기(330)가 삽입된 후, 선택된 소프트웨어(310)의 오류 주입 지점이 수행되는 경우, 동적 탐침기(330)는 트랩을 발생시켜 오류 주입 대리자(131)의 오류 주입 루틴이 수행될 수 있도록 한다.
부하 조정기(150)는 선택된 소프트웨어(310)의 특성에 적합한 부하 발생 프로그램의 정보와 부하 발생 프로그램 수행에 필요한 옵션 정보를 명령 해석기(111)에서 전달받고, 전달된 정보를 근거로 오류 주입(320) 및 주입된 오류가 활성화될 수 있도록 부하 발생 시스템(200)의 부하 발생을 제어한다.
이상 소프트웨어 신뢰성 테스트 시스템의 동작에 대해 전반적으로 설명하였고, 이하에서, 동적 탐침기(330)를 통한 오류 주입 대리자(131)와 선택된 소프트웨어(310) 간의 동작 흐름 및 선택된 소프트웨어(310)에 오류를 주입하는 오류 주입 대리자(131)의 동작 방법을 상세하게 설명한다.
선택된 소프트웨어(310)가 동작 중에 오류 주입 지점에 대응하는 함수가 호출되어 선택된 소프트웨어(310)의 바이너리 이미지에 삽입된 동적 탐침기(330)에 의해 트랩이 발생할 경우, 제어권은 오류 주입 대리자(131)로 넘어가고, 오류 주입 대리자(131)는 오류 유형별 오류 주입 루틴을 근거로 오류 주입 동작을 수행한다.
예컨대, 제어권을 넘겨받은 오류 주입 대리자(131)는 오류 유형별 오류 주입 루틴에 따라 설정된 오류 주입 주기, 오류 주입 간격 및 오류 주입 최대 횟수를 검 사하고, 검사결과, 오류를 주입할 조건일 경우, 선택된 소프트웨어(310)의 오류 주입 지점에 오류를 주입한다.
오류 주입을 완료한 오류 주입 대리자(131)는 제어권을 다시 선택된 소프트웨어(310)로 넘기고, 제어권을 넘겨받은 선택된 소프트웨어(310)는 오류 주입 지점이후부터 다시 동작을 수행한다.
오류 주입 대리자(131)는 대상 시스템(300)에서 동작할 수 있는 동작시간이 만료될 때까지, 동적 탐침기(330)에 의해 트랩이 발생할 때마다 오류 주입을 수행할 수 있다.
동적 탐침기(330)와 생성된 오류 주입 대리자(131)를 이용하여 선택된 소프트웨어(310)의 오류 주입 지점으로 사용자가 지정한 오류 주입 주기, 오류 주입 간격, 오류 주입 최대 횟수에 따라 오류를 주입할 수 있어서 선택된 소프트웨어(310)의 소스 코드 변경, 재컴파일 및 재실행 없이 선택된 소프트웨어(310)에 대해 효율적으로 신뢰성 테스트를 할 수 있다.
이상 바람직한 실시예와 첨부도면을 참조하여 본 발명의 구성에 관해 구체적으로 설명하였으나, 이는 예시에 불과한 것으로 본 발명의 기술적 사상을 벗어나지 않는 범주내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일실시예에 따른 소프트웨어 신뢰성 테스트 시스템을 설명한 개념도.
도 2는 도 1의 오류 주입 시스템을 설명한 구성도.
<도면의 주요 참조부호에 대한 설명>
100 : 오류 주입 시스템 110 : 오류 주입 관리자
120 : 소프트웨어 분석기 130 : 오류 주입 대리자 생성기
131 : 오류 주입 대리자 140 : 오류 주입 설정 적재기
150 : 부하 조정기 160 : 오류 주입 템플릿
200 : 부하 발생 시스템 210 : 부하
300 : 대상 시스템 310 : 선택된 소프트웨어
320 : 오류 주입 330 : 동적 탐침기

Claims (16)

  1. 대상 시스템의 소프트웨어들 중 테스트 대상으로 선택된 소프트웨어에 오류를 주입할 오류 주입 대리자를 생성하는 오류 주입 시스템; 및
    상기 선택된 소프트웨어로 상기 생성된 오류 주입 대리자에 의해 상기 오류가 주입되어 유발될 수 있도록 상기 오류 주입 시스템의 제어에 따라 상기 선택된 소프트웨어에 부하를 발생시키는 부하 발생 시스템을 포함하고,
    상기 오류 주입 시스템은,
    상기 선택된 소프트웨어의 오류 주입 정보 및 부하 정보를 입력받는 오류 주입 관리자; 및
    상기 선택된 소프트웨어로부터 추출된 메타데이터와 오류 유형을 근거로 오류 주입 지점을 결정하고, 상기 결정된 오류 주입 지점, 상기 오류 주입 정보 및 오류 유형별 오류 주입 루틴이 정의된 라이브러리 형태의 오류 주입 템플릿을 근거로 상기 오류 주입 대리자를 생성하는 오류 대리자 생성기를 포함하는 것
    인 소프트웨어 신뢰성 테스트 시스템.
  2. 제1항에 있어서, 상기 오류 주입 시스템은,
    상기 선택된 소프트웨어의 오류 유형, 오류 주입 주기, 오류 주입 간격, 오류 주입 최대 횟수 및 상기 오류 주입 대리자가 상기 대상 시스템에서 동작할 수 있는 제한시간 중 적어도 어느 하나를 포함하는 오류 주입 정보 및 상기 선택된 소프트웨어의 정보를 입력받아 이를 근거로 상기 오류 주입 대리자를 생성하는 것인 소프트웨어 신뢰성 테스트 시스템.
  3. 제2항에 있어서, 상기 오류 주입 시스템은,
    상기 생성된 오류 주입 대리자를 상기 대상 시스템에 동적 로딩하고, 상기 오류 주입 대리자가 상기 대상 시스템에서 동작한 시간을 체크하여 상기 동작한 시간이 상기 제한시간을 초과한 경우, 상기 오류 주입 대리자를 종료시키는 것인 소 프트웨어 신뢰성 테스트 시스템.
  4. 삭제
  5. 제1항에 있어서, 상기 오류 주입 시스템은,
    상기 생성된 오류 주입 대리자에게 오류 주입 주기, 오류 주입 간격 및 오류 주입 최대 횟수를 설정하는 오류 주입 설정 적재기를 더 포함하는 것인 소프트웨어 신뢰성 테스트 시스템.
  6. 제1항에 있어서, 상기 오류 주입 관리자는,
    사용자에게 인터페이스를 제공하고, 상기 사용자가 입력한 명령을 해석하여 상기 선택된 소프트웨어의 정보, 상기 오류 주입 정보 및 상기 부하 정보로 파싱하는 명령 해석기; 및
    상기 오류 주입 대리자가 상기 대상 시스템에서 동작한 시간을 체크하여 상기 동작한 시간이 상기 대상 시스템에서 동작할 수 있는 제한시간을 초과한 경우, 상기 오류 주입 대리자를 종료시키는 작업 스케줄러
    를 포함하는 것인 소프트웨어 신뢰성 테스트 시스템.
  7. 제1항에 있어서,
    상기 오류 주입 대리자가 상기 선택된 소프트웨어에 상기 오류를 주입하여 상기 오류가 유발될 수 있도록 상기 부하 발생 정보를 근거로 상기 부하 발생 시스템을 제어하는 부하 조정기를 더 포함하는 것인 소프트웨어 신뢰성 테스트 시스템.
  8. 제1항에 있어서, 상기 오류 주입 시스템은,
    상기 선택된 소프트웨어의 오류 주입 지점에 트랩을 발생시키는 동적 탐침기를 더 포함하는 것인 소프트웨어 신뢰성 테스트 시스템.
  9. 제8항에 있어서, 상기 오류 주입 시스템은,
    상기 오류 주입 정보 및 추출된 메타데이터를 근거로 선택된 소프트웨어의 오류 주입 지점에 대응하는 함수에 상기 동적 탐침기를 삽입하고,
    상기 삽입된 동적 탐침기에 의해 상기 오류 주입 지점에 대응하는 함수에 트랩이 발생할 경우, 상기 오류 유형별 오류 주입 루틴에 따라 상기 오류 주입 지점으로 오류를 주입하는 것인 소프트웨어 신뢰성 테스트 시스템.
  10. 대상 시스템의 소프트웨어들 중 테스트할 소프트웨어를 선택하는 단계;
    상기 선택된 소프트웨어로 오류를 주입하는 오류 주입 대리자를 생성하는 단계; 및
    상기 생성된 오류 주입 대리자가 상기 선택된 소프트웨어에 오류를 주입할 수 있도록 상기 선택된 소프트웨어에 부하를 발생시키는 단계를 포함하고,
    상기 오류 주입 대리자를 생성하는 단계는,
    상기 선택된 소프트웨어로부터 추출된 메타데이터와 오류 유형을 근거로 오류 주입 지점을 결정하는 단계; 및
    상기 오류 주입 대리자를 상기 결정된 오류 주입 지점, 입력된 상기 소프트웨어의 오류 주입 정보 및 오류 유형별 오류 주입 루틴이 정의된 라이브러리 형태의 오류 주입 템플릿을 근거로 생성하는 단계
    를 포함하는 소프트웨어 신뢰성 테스트 방법.
  11. 삭제
  12. 삭제
  13. 제10항에 있어서, 상기 오류 주입 대리자를 생성하는 단계는,
    상기 생성된 오류 주입 대리자에게 오류 주입 주기, 오류 주입 간격 및 오류 주입 최대 횟수를 설정하는 단계 및
    상기 설정된 오류 주입 대리자를 상기 대상 시스템에 동적 로딩하는 단계
    를 더 포함하는 것인 소프트웨어 신뢰성 테스트 방법.
  14. 제13항에 있어서, 상기 동적 로딩하는 단계는,
    트랩을 발생시키는 동적 탐침기를 상기 결정된 오류 주입 지점에 삽입하는 단계; 및
    상기 오류 주입 지점이 수행되어 상기 트랩이 발생될 경우, 상기 오류 유형별 오류 주입 루틴에 따라 상기 오류 주입 지점으로 오류를 주입하는 단계
    를 포함하는 것인 소프트웨어 신뢰성 테스트 방법.
  15. 제13항에 있어서, 상기 동적 로딩하는 단계는,
    상기 오류 주입 대리자가 상기 대상 시스템에서 동작한 시간을 체크하는 단계; 및
    상기 동작한 시간이 상기 대상 시스템에서 동작할 수 있는 제한시간을 초과한 경우, 상기 오류 주입 대리자를 종료시키는 단계
    를 포함하는 것인 소프트웨어 신뢰성 테스트 방법.
  16. 제10항에 있어서, 상기 부하를 발생시키는 단계는,
    상기 선택된 소프트웨어에 대응하는 부하 발생 정보를 근거로 상기 생성된 오류 주입 대리자가 상기 선택된 소프트웨어에 오류를 주입하고, 주입된 오류가 유발될 수 있도록 부하를 발생시키는 단계인 것인 소프트웨어 신뢰성 테스트 방법.
KR1020090040284A 2009-05-08 2009-05-08 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법 KR101269549B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090040284A KR101269549B1 (ko) 2009-05-08 2009-05-08 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
US12/560,070 US20100287535A1 (en) 2009-05-08 2009-09-15 System and method for testing software reliability using fault injection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090040284A KR101269549B1 (ko) 2009-05-08 2009-05-08 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20100121226A KR20100121226A (ko) 2010-11-17
KR101269549B1 true KR101269549B1 (ko) 2013-06-04

Family

ID=43063133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090040284A KR101269549B1 (ko) 2009-05-08 2009-05-08 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법

Country Status (2)

Country Link
US (1) US20100287535A1 (ko)
KR (1) KR101269549B1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070162602A1 (en) * 2006-01-06 2007-07-12 International Business Machines Corporation Template-based approach for workload generation
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8949801B2 (en) * 2009-05-13 2015-02-03 International Business Machines Corporation Failure recovery for stream processing applications
US8458650B2 (en) * 2010-03-29 2013-06-04 International Business Machines Corporation Injecting a fault into a stream operator in a data stream processing application
US8826243B2 (en) 2010-12-14 2014-09-02 International Business Machines Corporation System, method, and computer program product for error code injection
CN102624574B (zh) * 2011-01-27 2015-07-01 西门子公司 一种对协议实现进行安全测试的方法及装置
US9208064B2 (en) * 2011-08-09 2015-12-08 Red Hat, Inc. Declarative testing using dependency injection
KR101940486B1 (ko) * 2011-08-25 2019-01-21 한국전자통신연구원 저비용 오류 기반 프로그램 테스트 장치 및 그 방법
US8752027B2 (en) 2011-09-14 2014-06-10 Microsoft Corporation Injecting faults into program for testing software
CN103036730B (zh) * 2011-09-29 2015-09-23 西门子公司 一种对协议实现进行安全测试的方法及装置
CN102541737B (zh) * 2011-11-30 2014-07-23 北京航空航天大学 一种嵌入式软件可靠性测试缺陷注入与控制方法
US9317408B2 (en) * 2011-12-15 2016-04-19 The Mathworks, Inc. System and method for systematic error injection in generated code
CN103379481B (zh) * 2012-04-26 2015-05-06 腾讯科技(深圳)有限公司 一种实现安全防护的方法
KR101440995B1 (ko) * 2012-11-07 2014-09-17 한국항공우주연구원 우주 비행체 시뮬레이션 장치 및 방법
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
US10235278B2 (en) * 2013-03-07 2019-03-19 International Business Machines Corporation Software testing using statistical error injection
CA2923231C (en) 2013-09-12 2020-06-02 Virsec Systems, Inc. Automated runtime detection of malware
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
WO2015200508A1 (en) 2014-06-24 2015-12-30 Virsec Systems, Inc Automated root cause analysis of single or n-tiered applications
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
KR20160000758A (ko) 2014-06-25 2016-01-05 주식회사 알티베이스 품질테스트장치 및 방법
US9571465B1 (en) * 2014-09-18 2017-02-14 Amazon Technologies, Inc. Security verification by message interception and modification
US9753826B2 (en) 2015-07-21 2017-09-05 International Business Machines Corporation Providing fault injection to cloud-provisioned machines
CN105045714A (zh) * 2015-07-25 2015-11-11 北京金山安全软件有限公司 一种应用软件启动时长的测试方法、装置及终端
US9983986B2 (en) 2015-09-28 2018-05-29 International Business Machines Corporation Testing code response to injected processing errors
CN105893258A (zh) * 2016-03-31 2016-08-24 中电海康集团有限公司 一种基于人工鱼群算法的性能调优方法及工具
WO2017218872A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US9858151B1 (en) * 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
CN107038303B (zh) * 2017-04-13 2020-08-18 西北工业大学 用于机械可靠性分析与设计的基于代理模型的双层实验设计方法
WO2019110121A1 (en) * 2017-12-08 2019-06-13 Huawei Technologies Co., Ltd. Fault injection system and method of fault injection
CN108196533A (zh) * 2018-03-28 2018-06-22 中汽研(天津)汽车工程研究院有限公司 一种通道可复用且集成故障注入功能的智能接线装置
US11080157B1 (en) * 2019-03-22 2021-08-03 Amazon Technologies, Inc. Automated resiliency analysis in distributed systems
KR20210004656A (ko) * 2019-07-05 2021-01-13 현대자동차주식회사 차량 기능 테스트 장치 및 그 제어 방법
CN113326159B (zh) * 2020-02-29 2023-02-03 华为技术有限公司 用于故障注入的方法、装置、系统及计算机可读存储介质
CN112015604B (zh) * 2020-07-22 2023-06-20 河海大学常州校区 一种基于Zynq FPGA的自动化可靠性评估系统及评估方法
US11567855B1 (en) * 2020-09-09 2023-01-31 Two Six Labs, LLC Automated fault injection testing
CN112306877B (zh) * 2020-10-30 2024-02-20 山东山大电力技术股份有限公司 一种电力系统故障运维方法及系统
US11748242B2 (en) * 2021-02-17 2023-09-05 Atlassian Pty Ltd. Proactive monitoring of a software application framework
CN113778834B (zh) * 2021-11-10 2022-03-18 统信软件技术有限公司 一种应用软件的系统性能测试方法、装置与计算设备
KR102696928B1 (ko) * 2022-02-10 2024-08-20 피카디 주식회사 소프트웨어의 잠재적 오류 테스트 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050084A (ja) * 2003-07-28 2005-02-24 Ns Solutions Corp 障害時動作検証装置及び障害時動作検証方法
KR20080042659A (ko) * 2006-11-09 2008-05-15 한국전자통신연구원 소프트웨어 결함 유발 데이터를 삽입한 파일을 이용하여소프트웨어의 결함을 검출하는 자동화 시스템 및 그 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1715436A3 (fr) * 2005-04-21 2007-03-28 St Microelectronics S.A. Protection du déroulement d'un programme exécuté par un circuit intégré ou de données contenues dans ce circuit
US7444267B2 (en) * 2005-10-12 2008-10-28 Lsi Corporation System and method to synchronize and coordinate parallel, automated fault injection processes against storage area network arrays
US7757215B1 (en) * 2006-04-11 2010-07-13 Oracle America, Inc. Dynamic fault injection during code-testing using a dynamic tracing framework
US8051346B2 (en) * 2009-02-25 2011-11-01 Cisco Technology, Inc. Fault injection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050084A (ja) * 2003-07-28 2005-02-24 Ns Solutions Corp 障害時動作検証装置及び障害時動作検証方法
KR20080042659A (ko) * 2006-11-09 2008-05-15 한국전자통신연구원 소프트웨어 결함 유발 데이터를 삽입한 파일을 이용하여소프트웨어의 결함을 검출하는 자동화 시스템 및 그 방법

Also Published As

Publication number Publication date
US20100287535A1 (en) 2010-11-11
KR20100121226A (ko) 2010-11-17

Similar Documents

Publication Publication Date Title
KR101269549B1 (ko) 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
KR101266359B1 (ko) 선택적 오류 주입 활성화를 통한 저비용 소프트웨어 신뢰성 시험 방법, 소프트웨어 신뢰성 시험을 지정 대상 모듈로 한정하는 방법, 소프트웨어 신뢰성 시험을 위한 대상 모듈에 부하를 발생시키는 방법 및 이러한 방법들을 사용하여 소프트웨어 신뢰성 시험을 하는 컴퓨팅 장치
JP4901075B2 (ja) コンピュータ読取可能な媒体、方法及びコンピューティングデバイス
US8930912B2 (en) Method and system for performing software verification
US20070168998A1 (en) System and method for dynamic instrumentation
EP0752653B1 (en) Method and system for synchronizing the execution of events during software testing
US20050223362A1 (en) Methods and systems for performing unit testing across multiple virtual machines
CN111026601A (zh) Java应用系统的监控方法、装置、电子设备及存储介质
US20070010975A1 (en) Probabilistic regression suites for functional verification
US9274930B2 (en) Debugging system using static analysis
RU2010114709A (ru) Способ автоматического генерирования сценария для проверки правильности функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для применения способа
US8448147B2 (en) Heterogenic Coverage Analysis
US7404107B2 (en) Fault injection selection
KR20120139403A (ko) 게임 서버의 작업 파일 실행 장치 및 방법
US20080127118A1 (en) Method and system for dynamic patching of software
US20080172579A1 (en) Test Device For Verifying A Batch Processing
US20080127061A1 (en) Method and system for editing code
CN108572892B (zh) 一种基于PowerPC多核处理器的离线测试方法和装置
CN115390809A (zh) 一种仿真调度方法及系统
Barbosa et al. Verification and validation of (real time) COTS products using fault injection techniques
CN114168454A (zh) 一种基于动态插桩-销桩技术的异步测试方法
Schwahn et al. FastFI: Accelerating software fault injections
Ahmadi et al. mCUTE: a model-level concolic unit testing engine for UML state machines
EP3619612B1 (en) Temporary de-optimization of target functions in a cloud debugger
JP2008135008A (ja) プログラムモジュール検証方式

Legal Events

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

Payment date: 20170523

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180521

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190520

Year of fee payment: 7