KR20180134677A - 결함 주입 테스트 방법 및 장치 - Google Patents

결함 주입 테스트 방법 및 장치 Download PDF

Info

Publication number
KR20180134677A
KR20180134677A KR1020170072731A KR20170072731A KR20180134677A KR 20180134677 A KR20180134677 A KR 20180134677A KR 1020170072731 A KR1020170072731 A KR 1020170072731A KR 20170072731 A KR20170072731 A KR 20170072731A KR 20180134677 A KR20180134677 A KR 20180134677A
Authority
KR
South Korea
Prior art keywords
defect
task
electronic control
information
control unit
Prior art date
Application number
KR1020170072731A
Other languages
English (en)
Other versions
KR102020994B1 (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 KR1020170072731A priority Critical patent/KR102020994B1/ko
Publication of KR20180134677A publication Critical patent/KR20180134677A/ko
Application granted granted Critical
Publication of KR102020994B1 publication Critical patent/KR102020994B1/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

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)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은 결함 주입 테스트 방법 및 장치에 관한 것으로, 좀 더 상세하게는 전자제어장치에 인위적으로 주입할 결함을 자동으로 생성하고, 결함이 주입된 전자제어장치의 동작을 모니터링할 수 있는 결함 주입 테스트 방법 및 장치에 관한 것이다.
실시 형태에 따른 결함 주입 방법은, 전자제어장치의 결함 시나리오를 포함하는 결함 정보를 생성하는, 결함 정보 생성 단계; 생성된 상기 결함 정보를 상기 전자제어장치에 주입하는, 결함 정보 주입 단계; 및 상기 결함 정보가 주입된 상기 전자제어장치로부터 태스크 실행 정보와 변수값 정보를 수신받아 상기 전자제어장치의 동작을 모니터링하는, 모니터링 단계;를 포함한다.

Description

결함 주입 테스트 방법 및 장치{METHOD AND APPARATUS FOR FAULT INJECTION TEST}
본 발명은 결함 주입 테스트 방법 및 장치에 관한 것으로, 좀 더 상세하게는 전자제어장치에 인위적으로 주입할 결함을 자동으로 생성하고, 결함이 주입된 전자제어장치의 동작을 모니터링할 수 있는 결함 주입 테스트 방법 및 장치에 관한 것이다.
최근 자동차에 다양한 기능이 탑재됨에 따라 이를 처리하기 위한 전자제어장치(ECU)가 많이 사용되고 있다. 기계식 제어장치가 전자제어장치로 대체됨에 따라, 도요타 사태와 같은 안전 관련 이슈가 발생될 때마다 전자제어장치에 탑재된 소프트웨어(SW)에 대한 신뢰성에 의문을 제기하고 있다. 이에 따라 ISO26262 표준에서는 기존의 안전산업 분야(철도, 항공, 원자력 등)에서 적용되던 기능 안정성(Functional Safety)을 자동차산업 분야에 적용하여, 안전에 민감한 SW 컴포넌트에 대해 결함 주입 테스트(Fault Injection Test)를 수행할 것을 규정하고 있다.
전자제어장치는 기본적으로 결함(Fault)를 회피하고 예방할 수 있도록 설계되어야 한다. 만약, 결함이 발생하더라도 빠른 시간 안에 에러(Error)를 감지하고 자가 복구를 할 수 있는 매커니즘을 갖추어야 한다. 따라서, 비록 실제 상황에서 발생 확률이 낮지만 발생할 수도 있는 결함들을 강제로 유발시켜 자가 복구가 원활이 이루어지는지를 검증하는 방법이 필요하다.
종래에는 설계자가 디버거(debugger)를 통해 전자제어장치에 인위적인 결함을 일일이 주입하고, 결함 주입 전과 후를 모니터링하여 설계자가 직접 수기로 테스트 결과 보고서를 작성해야 하는 시간적, 비용적 불편함이 존재하였다.
따라서, 전자제어장치에 결함을 자동으로 유발시키고, 결함이 주입된 전자제어장치의 동작을 실시간으로 모니터링하며, 테스트 결과 보고서를 자동으로 생성할 수 있는 결함 주입 자동화 테스트 방법이 절실히 필요한 실정이다.
본 발명의 해결하고자 하는 과제는, 전자제어장치에 인위적인 결함을 자동으로 생성 및 주입시킬 수 있는 결함 주입 테스트 방법과 장치를 제시하는 것을 목적으로 한다.
또한, 결함이 주입된 전자제어장치가 정상적으로 동작하는지를 모니터링할 수 있는 결함 주입 테스트 방법과 장치를 제시하는 것을 목적으로 한다.
또한, 결함이 주입된 전자제어장치의 테스트 결과 보고서를 자동으로 생성할 수 있는 결함 주입 테스트 방법과 장치를 제시하는 것을 목적으로 한다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
실시 형태에 따른 결함 주입 방법은, 전자제어장치의 결함 시나리오를 포함하는 결함 정보를 생성하는, 결함 정보 생성 단계; 생성된 상기 결함 정보를 상기 전자제어장치에 주입하는, 결함 정보 주입 단계; 및 상기 결함 정보가 주입된 상기 전자제어장치로부터 태스크 실행 정보와 변수값 정보를 수신받아 상기 전자제어장치의 동작을 모니터링하는, 모니터링 단계;를 포함한다.
상기 결함 정보 생성 단계에서, 상기 결함 시나리오는 상기 전자제어장치의 설정정보와 입력창으로 입력된 사용자 선택정보에 기초하여 생성될 수 있다.
상기 결함 정보 생성 단계에서, 상기 결함 시나리오는 상기 전자제어장치의 설정정보에서 발생 가능한 모든 결함들을 조합하여 추출될 수 있다.
상기 결함 정보 생성 단계에서, 상기 결함 시나리오는 결함의 발생 시점, 결함의 대상, 결함의 유형 및 결함의 발생 횟수 중 적어도 하나 이상을 포함할 수 있다.
상기 결함의 유형은, 태스크 실행 중단, 스케줄러에 의한 태스크 재실행 방지, 알람(Alarm) 발생 방해를 통한 태스크 재실행 방지, 이벤트 대기 후 태스크 재실행 방지, 리소스 대기 중 데드락(Deadlock) 유도로 태스크 재실행 방지, 스택 오버플로우(Stack overflow) 발생 유도하여 태스크 재실행 방지, 태스크 오버런(Task overrun), 변수값의 오염, 코드 변이, CPU 레지스터 값 오염, S/W 컴포넌트 오염, 및 비트 플립(Bit Flip) 중 적어도 하나 이상을 포함할 수 있다.
상기 모니터링 단계는, 상기 전자제어장치의 상기 태스크 실행 정보에 기초한 태스크 상태 변화 그래프와 상기 전자제어장치의 상기 변수값 정보에 기초한 변수값 상태 변화 그래프를 디스플레이할 수 있다.
상기 태스크 상태 변화 그래프는, 시간에 흐름에 따른 태스크별 상태의 변화, 결함 발생 시점 및 시스템 리셋 시점을 포함할 수 있다.
상기 변수값 변화 그래프는, 시간에 흐름에 따른 변수값(들)의 추이, 결함 발생 시점 및 시스템 리셋 시점을 포함할 수 있다.
상기 변수값 변화 그래프는, 변수값이 미리 설정된 임계치를 초과하는지 여부를 알려주는 알림을 포함할 수 있다.
상기 모니터링 단계는, 상기 전자제어장치의 태스크의 시작과 종료 정보를 추출하고, 추출된 상기 태스크의 시작과 종료 정보를 기초로 모니터링 주기를 보정할 수 있다.
여기서, 테스트 결과 보고서를 생성하는, 테스트 결과 보고서 생성 단계;를 더 포함하고, 상기 테스트 결과 보고서는, 상기 태스크 상태 변화와 상기 변수값 추이를 문자로 출력한 부분을 포함할 수 있다.
실시 형태에 따른 결함 주입 테스트 장치는, 전자제어장치의 결함 시나리오를 포함하는 결함 정보를 생성하는, 테스트 시나리오 관리 모듈; 생성된 상기 결함 정보를 상기 전자제어장치에 주입시기 위한 테스트를 실행하는, 테스트 실행 모듈; 상기 결함 정보가 주입된 상기 전자제어장치로부터 태스크 실행 정보를 수신받아 상기 전자제어장치 내의 태스크의 상태 변화를 모니터링하는, 태스크 모니터링 모듈; 및 상기 결함 정보가 주입된 상기 전자제어장치로부터 변수값 정보를 수신받아 상기 전자제어장치의 변수값의 변화 추이를 모니터링하는, 변수값 모니터링 모듈;를 포함한다.
상기 전자제어장치에 결함이 발생하기 전과 발생된 후의 상기 태스크의 상태 변화와 상기 변수값의 추이 변화를 포함하는 테스트 결과 보고서를 생성하는, 보고서 생성 모듈;을 더 포함할 수 있다.
본 발명의 실시 형태에 따른 결함 주입 테스트 방법과 장치를 사용하면, 전자제어장치에 인위적인 결함을 자동으로 생성 및 주입시킬 수 있는 이점이 있다.
또한, 결함이 주입된 전자제어장치가 정상적으로 동작하는지를 모니터링할 수 있는 이점이 있다.
또한, 결함이 주입된 전자제어장치의 테스트 결과 보고서를 자동으로 생성할 수 있는 이점이 있다.
또한, ISO26262 기반의 테스트 환경을 확대할 수 있는 이점이 있다.
또한, 테스트 자동화에 따른 비용을 절감할 수 있는 이점이 있다.
또한, 비정상 상황 테스트를 위한 인프라를 구축할 수 있는 이점이 있다.
또한, 코드 수정 없이 테스팅 범위를 BSW까지 확대할 수 있는 이점이 있다.
또한, 결함 발견 프로세스에 대한 선제적 대응전략을 마련할 수 있는 이점이 있다.
도 1은 본 발명의 실시 형태에 따른 결함 주입 테스트 방법이 구현될 수 있는 시스템 구성도의 일 예이다.
도 2는 본 발명의 실시 형태에 따른 결함 주입 테스트 장치와 전자제어장치의 내부 구성도이다.
도 3은 본 발명의 실시 형태에 따른 결함 주입 테스트 방법의 순서도이다.
도 4는 도 3에 도시된 본 발명의 실시 형태에 따른 결함 주입 테스트 방법을 설명하기 위한 개념도이다.
도 5는 태스크 상태 변화 그래프의 일 예를 보여주는 도면이다.
도 6은 변수값 변화 그래프의 일 예를 보여주는 도면이다.
도 7은 생성된 테스트 결과 보고서의 일 예를 보여주는 도면이다.
도 8 및 도 9는 <표 2>에 기재된 결함의 유형 중 '태스크 실행 중단'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 10 및 도 11은 <표 2>에 기재된 결함의 유형 중 '스케줄러에 의한 태스크 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 12 및 도 13은 <표 2>에 기재된 결함의 유형 중 '알람(Alarm) 발생 방해를 통한 태스크 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 14 및 도 15는 <표 2>에 기재된 결함의 유형 중 '이벤트 대기 후 Task 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 16은 <표 2>에 기재된 결함의 유형 중 '리소스 대기 중 Deadlock 유도로 Task 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 17 및 도 18은 <표 2>에 기재된 결함의 유형 중 'Stack overflow 발생 유도하여 Task 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 19 및 도 20은 <표 2>에 기재된 결함의 유형 중 'Task overrun(다른 Task omission, delay 유발)'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 21 및 도 22는 <표 2>에 기재된 결함의 유형 중 '변수 값의 오염'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 23은 <표 2>에 기재된 결함의 유형 중 '코드 변이'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 24 및 도 25는 <표 2>에 기재된 결함의 유형 중 'CPU 레지스트 값 오염'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 26 및 도 27은 <표 2>에 기재된 결함의 유형 중 'Bit Flip'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 28은 도 3에 도시된 본 발명의 실시 형태에 따른 결함 주입 테스트 방법에서 전자제어장치의 동작을 모니터링하는 단계(s350)를 설명하기 위한 예시 도면이다.
도 29는 메모리 폴링에 의한 모니터링 오차를 보완하는 기능을 설명하기 위한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시 형태를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시 형태는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시형태는 서로 다르지만 상호 배타적일 필요는 없음을 이해하여야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시형태에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시형태로 구현될 수 있다. 또한, 각각의 개시된 실시 형태 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정될 수 있다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭할 수 있다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시 형태에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 실시 형태에 따른 결함 주입 테스트 방법이 구현될 수 있는 시스템 구성도의 일 예이다.
도 1을 참조하면, 실시 형태에 따른 결함 주입 테스트 방법이 구현될 수 있는 시스템은, 결함 주입 테스트 장치(10), 인터페이스 장치(30) 및 전자제어장치(ECU, 50)을 포함한다.
결함 주입 테스트 장치(10)는 본 발명의 실시 형태에 따른 결함 주입 테스트 방법을 수행한다. 여기서, 결함 주입 테스트 장치(10)는 노트북, 랩탑, 태블릿 및 스마트폰 중 어느 하나에 설치된 프로그램(또는 어플리케이션)일 수도 있고, 결함 주입 테스트 방법만을 수행하는 전용 단말기일 수도 있다.
인터페이스 장치(30)는 전자제어장치(50)를 디버깅하는 디버거(Debugger)일 수 있다. 인터페이스 장치(30)를 통해 전자제어장치(50)의 CPU 레지스터 또는 메모리에 접근할 수 있다. 또한, 태스크(Task) 스케쥴링, 인터럽트(interrupt) 등의 RTOS(Real Time Operating System)의 커널 영역도 접근할 수 있다. 인터페이스 장치(30)를 통해 결함 주입 테스트 장치(10)에서 생성된 인위적인 결함을 전자제어장치(50)로 주입할 수 있다. 인터페이스 장치(30)는 결함 주입 테스트 장치(10)와 유선(예를 들면, USB 케이블) 또는 무선으로 연결될 수 있다.
또는, 인터페이스 장치(30)는 전자제어장치(50)로 CAN 데이터를 송신하고, 전자제어장치(50)로부터 CAN 데이터를 수신할 수 있는 어댑터(Adapter)일 수도 있다.
전자제어장치(50)는 차량용 전자제어장치일 수 있다. 인터페이스 장치(30)와 디버깅용 JTAG 포트에 의해 연결될 수 있고, CAN 통신이 가능하도록 유선 또는 무선으로 연결될 수 있다. 여기서, 전자제어장치(50)가 차량용 전자제어장치로 한정되는 것은 아니다. 전자제어장치(50)는 차량 산업뿐만 아니라 다른 산업에서 사용되는 전자제어장치일 수 있다. 예를 들어, 전자제어장치(50)는 전력 시스템에서 사용되는 RTU(Remote Terminal Unit)일 수 있다. 전자제어장치(50)가 다른 산업에서 사용되는 전자제어장치인 경우, 인터페이스 장치(30)와 전자제어장치(50)는 이더넷, USB, 또는 시리얼 통신으로 서로 연결될 수 있다. 본 발명의 실시 형태를 상세히 설명함에 있어서 편의상 전자제어장치(50)가 차량용 전자제어장치인 것으로 가정한다.
도 2는 본 발명의 실시 형태에 따른 결함 주입 테스트 장치와 전자제어장치의 내부 구성도이다.
도 2를 참조하면, 본 발명의 실시 형태에 따른 결함 주입 테스트 장치(10)는 운영체제(OS, 11), 테스트 시나리오 관리 모듈(12), 테스트 실행 모듈(13), 태스크 모니터링 모듈(14), 변수 모니터링 모듈(15), 테스트 결과 관리 모듈(16), 보고서 생성 모듈(17), 통신 모듈(18), 및 GUI(19)를 포함할 수 있다.
운영체제(11)는 윈도우(Windows)일 수 있으나, 이에 한정하지 않고 리눅스, 맥, 안드로이드 등 다양한 운영체제일 수 있다.
테스트 시나리오 관리 모듈(12)는 전자제어장치(50)에 인위적으로 주입될 결함(Fault) 정보를 생성한다. 예를 들어 결함 시나리오를 생성할 수 있다.
테스트 실행 모듈(13)은 생성된 결함 정보를 전자제어장치(50)에 주입시키기 위한 테스트를 실행한다. 테스트 실행 모듈(13)은 미리 정해진 시간에 전자제어장치(50)에서 결함이 발생되도록 한다. 예를 들어, 테스트 실행 모듈(13)은 미리 정해진 시간에 전자제어장치(50)의 메모리 값을 변경시키는 제어를 수행하거나 메모리 값 변경을 위한 CAN 신호를 전송하도록 제어한다.
태스크 모니터링 모듈(14)은 전자제어장치(50) 내에서 동작되는 태스크의 상태 변화를 모니터링한다. 예를 들어, 태스크의 상태 변화를 그래프 또는 목록으로 디스플레이한다.
변수 모니터링 모듈(15)은 전자제어장치(50)의 변수값의 변화 추이를 모니터링한다. 예를 들어, 변수값의 변화 추이를 그래프 또는 목록으로 디스플레이한다.
테스트 결과 관리 모듈(16)은 테스트 결과를 저장하거나 분석한다.
보고서 생성 모듈(17)은 전자제어장치(50)에 결함이 발생하기 전과 발생된 후의 태스크 상태와 변수값의 추이에 대한 테스트 결과 보고서를 자동으로 생성한다.
통신 모듈(18)은 테스트 시나리오 관리 모듈(12)에서 생성된 결함 정보를 전자제어장치(50)로 출력하고, 전자제어장치(50)로부터 태스크 실행 정보와 변수값 정보를 수신한다.
GUI(19)는 테스트 시나리오 관리 모듈(12), 테스트 실행 모듈(13), 태스크 모니터링 모듈(14), 변수 모니터링 모듈(15), 테스트 결과 관리 모듈(16), 보고서 생성 모듈(17) 및 통신 모듈(18)을 사용자가 제어 및 모니터링할 수 있는 인터페이스를 제공한다.
도 2에 도시된 전자제어장치(50)는 운영체제(51)와 다수의 태스크(53)들을 포함한다.
운영체제(51)는 RTOS(Real Time Operating System)일 수 있다. 여기서, 운영체제(51)가 RTOS로 한정되는 것은 아니다. 본 발명의 실시 형태를 설명함에 있어서 전자제어장치(50)를 차량용 전자제어장치로 예를 든 것이기 때문에, 운영체제(51)를 RTOS로 가정한 것임을 유의해야 한다. 따라서, 운영체제(51)는 전자제어장치(50)에 따라 달라질 수 있다.
RTOS는 주어진 작업을 정해진 시간 안에 수행할 수 있는 환경을 제공한다. 각 작업은 태스크(Task, 53) 단위로 동작하며, 태스크(53)는 실행(Running), 중지(Suspended), 대기(Waiting), 준비(Ready)의 네 가지 상태를 가진다. 또한, 한 순간에는 하나의 태스크(53)만 실행할 수 있기 때문에, 모든 태스크(53)들은 스케쥴러에 의해 관리되며, 태스크 우선순위에 따라 동작한다.
RTOS의 대표적인 예로서, 임베디드 분야에서 사용되는 OSEK/VDX가 있다. OSEK/VDX는 아래의 <표 1>에 기재된 요소들로 구성된다. <표 1>에 나타난 요소들을 이용하여 본 발명의 실시 형태에 따른 결함 주입 방법과 장치는, 결함을 인위적으로 생성할 수 있다.
Task RTOS의 가장 기본이 되는 실행 단위
Interrupt 하드웨어 mechanism. 비동기적 이벤트를 처리 시 사용
Resource Task간의 자원을 공유하는데 사용
Alarm 주기적으로 Task를 실행 가능함
Event Task 간 이벤트 신호에 의해 동기화 처리
Message Task 간 데이터 전송에 사용
여기서, 유의할 점은, 본 발명의 실시 형태에 따른 결함 주입 테스트 방법과 결함 주입 테스트 장치가 OSEK/VDX 운영체제로 한정되는 것은 아니고, 다른 운영체제에서 동일 또는 유사하게 적용될 수 있다.
한편, 전자제어장치(50)의 운영체제(51)는 필수적인 것은 아니다. 소정의 전자제어장치(50)는 별도의 운영체제없이 펌웨어(Firmware)로 동작할 수도 있다.
도 3은 본 발명의 실시 형태에 따른 결함 주입 테스트 방법의 순서도이고, 도 4는 도 3에 도시된 본 발명의 실시 형태에 따른 결함 주입 테스트 방법을 설명하기 위한 개념도이다.
도 3 및 도 4를 참조하면, 본 발명의 실시 형태에 따른 결함 주입 테스트 방법은, 결함 정보(500)를 생성하는 단계(s310), 생성된 결함 정보(500)를 전자제어장치(50)에 주입하는 단계(s330), 전자제어장치(50)의 동작을 모니터링하는 단계(s350) 및 테스트 결과 보고서(800)를 생성하는 단계(s370)를 포함할 수 있다.
결함 정보(500)를 생성하는 단계(s310)는, 결함 주입 대상인 전자제어장치(50)의 설정정보(100)와 입력창(400)으로 입력된 사용자 선택정보에 기초하여 결함 시나리오를 생성하는 단계일 수 있다. 여기서, 결함 정보(500)는 생성된 결함 시나리오를 포함한다.
결함 시나리오는, 결함의 발생 시점, 결함의 대상, 결함의 유형, 및 결함의 발생 횟수 중 적어도 하나 이상을 포함한다. 여기서, 결함 시나리오는 결함의 발생 시점, 결함의 대상, 결함의 유형, 및 결함의 발생 횟수 중 둘 이상을 조합한 것일 수도 있다.
결함의 발생 시점은, 결함 발생 시간, 태스크 실행 횟수, 및 변수값을 포함한다.
결함의 대상은, 태스크, 메모리, CPU 레지스터, 태스크 스케줄러, 시스템, 변수 또는 코드 영역, 및 S/W 컴포넌트를 포함한다.
결함의 발생 횟수는, 결함이 반복적으로 발생되도록 하기 위한 것으로서, 결함의 발생 간격과 종료 값을 포함한다.
결함의 유형은, 아래 <표 2>에 나타난 유형들 중 적어도 하나 이상을 포함한다.
결함(Fault) 유형 결함(Fault)의 설명과 유발 방법의 예시
1 Task 실행 중단 실행중인 Task를 강제로 중단시킴.
Instruction Pointer 조작: 실행중인 Task의 오동작 유도.
2 스케줄러에 의한 Task 재실행 방지 Task가 스케줄링에 의해 대기상태로 간 후 다시 실행되지 않도록 방해.
Active_count 값을 변경하여 실행중인 Task의 오동작 유도.
3 Alarm 발생 방해를 통한 Task 재실행 방지 Alarm에 의해 주기적으로 실행되는 Task를 실행되지 않도록 방해.
Alarm주기를 조작하여 실행 방해.
4 이벤트 대기 후 Task 재실행 방지 Task를 Event 대기 상태로 만든 후 다시 실행되지 못하도록 방해.
대기 Event Mask를 조작하여 재실행 방해.
5 리소스 대기 중 Deadlock 유도로 Task 재실행 방지 Resource를 사용하는 Task의 Resource 해제를 방해하여 해제를 기다리는 다른 Task의 실행을 방해.
리소스 ID를 조작하여 태스크 정상 동작을 방해.
6 Stack overflow 발생 유도하여 Task 재실행 방지 실행중인 Task의 Stack을 Full로 만들어 overflow 유발.
Stack Pointer에 Max값을 할당하여 전체 시스템 오동작 유도.
7 Task overrun (다른 Task omission, delay 유발) 1) Task 실행시간을 예측한 시간보다 지연시킴.
Task 실행 중 실행시간이 긴 다른 function으로 전이 시킴. (지연된 Task에 의해 다음 실행할 Task가 누락되거나 지연됨)

2) Task overrun을 배제한 Task omission 유도.
실행 시간이 긴 Task를 짧은 Task보다 우선순위를 높임.
8 변수값의 오염 특정 변수 값을 임의의 값으로 변경시킴(범위 내 또는 이를 벗어난 값).
Map 파일을 참고하여 특정 변수 주소의 값을 변경.
9 코드 변이 코드 영역의 코드 값을 임의의 값으로 변경 시킴.
Map 파일을 참고하여 코드 주소 영역의 코드 값을 변경.
10 CPU 레지스터 값 오염 레지스터 값을 임의의 값으로 변경 시킴.
레지스터 값을 변경.
11 S/W 컴포넌트 오염 S/W 컴포넌트를 구분하고 Event, Runable 등의 정보를 변경시킴.
Event 설정정보 변경, Runable 함수 주소 변경.
12 Bit Flip 임의의 메모리 영역의 비트 하나를 변경.
Bit단위로 특정 메모리의 값을 변경.
전자제어장치(50)의 설정정보(100)는 전자제어장치(50)별 고유한 정보이다. 예를 들어, 전자제어장치(50)가 OSEK/VDX 운영체제를 갖는 경우, 설정정보(100)는 전자제어장치(50)의 설계정보를 포함하는 *.oil 파일과 해당 전자제어장치(50)의 어드레스 또는 심볼 정보를 포함하는 *.map 파일을 포함할 수 있다. 여기서, 전자제어장치(50)가 OSEK/VDX 운영체제가 아닌 다른 운영체제를 갖는 경우, 전자제어장치(50)의 설정정보는 다른 유형의 파일 또는 소스코드 자체에 의해 정의될 수 있다.
입력창(400)은 전자제어장치(50)의 설정정보(100)에서 결함 시나리오를 생성하기 위해 필요한 정보들을 사용자에게 보기 쉽게 제공한다. 입력창(400)을 통해 제공되는 정보들을 중 사용자가 원하는 정보를 선택하면, 입력창(400)으로 입력된 사용자 선택정보가 생성되고, 생성된 사용자 선택정보에 결합하여 결함 시나리오가 생성된다.
한편, 결함 정보(500)를 생성하는 단계(s310)는, 기본 테스트 시나리오를 생성할 수 있다. 여기서, 기본 테스트 시나리오는 전자제어장치(50)의 설정정보(100)에서 발생 가능한 모든 결함(Fault)들을 조합하여 자동으로 추출된 결함 시나리오이다.
생성된 결함 정보(500)를 전자제어장치(50)에 주입하는 단계(s330)는, 결함 시나리오에 따라 결함 정보(500)를 전자제어장치(50)로 주입하는 단계이다. 여기서, 결함 정보(500)를 전자제어장치(50)로 주입하는 방법은, 결함 시나리오에 기입된 미리 정해진 시간에 전자제어장치(50)의 메모리 값을 직접 변경하거나 메모리 값 변경 CAN 신호를 전송하는 것에 의할 수 있다.
전자제어장치(50)의 동작을 모니터링하는 단계(s350)는, 전자제어장치(50)에서 출력되는 태스크 실행 정보와 변수값 정보를 수신하고, 수신된 태스크 실행 정보와 변수값 정보 각각을 모니터링부(600)를 통해 디스플레이하는 단계이다. 여기서, 태스크 실행 정보와 변수값 정보는 그래프 형태로 디스플레이 될 수 있다. 예를 들어, 태스크 실행 정보는 태스크 상태 변화 그래프로 디스플레이되고, 변수값 정보는 변수값 변화 그래프로 디스플레이될 수 있다.
도 5에 태스크 상태 변화 그래프의 일 예가 도시되어 있다. 도 5를 참조하면, 태스크 상태 변화 그래프는 시간에 흐름에 따른 태스크별 상태의 변화, 결함 발생 시점(610) 및 와치독(Watchdog)에 의한 시스템 리셋 시점(630)을 표시할 수 있다.
도 6에 변수값 변화 그래프의 일 예가 도시되어 있다. 도 6을 참조하면, 변수값 변화 그래프는 시간에 흐름에 따른 변수값(들)의 추이, 결함 발생 시점(650) 및 시스템 리셋 시점(670)을 표시할 수 있다. 또한, 변수값 변화 그래프는 변화되는 변수값이 미리 설정된 임계치를 초과하는지를 알려주는 알림(690)을 설정 및 표시할 수 있다. 알림(690)은 해당 변수값 곡선에서 임계치를 초과하는 부분만 굵게 표시하도록 설정될 수 있다.
다시, 도 3 및 도 4를 참조하면, 테스트 결과 보고서(800)를 생성하는 단계(s370)는, 전자제어장치(50)에 결함을 주입하기 전과 주입한 후의 정보가 포함된 테스트 결과 보고서(800)를 생성하는 단계이다.
도 7에 생성된 테스트 결과 보고서의 일 예가 도시되어 있다. 도 7을 참조하면, 테스트 결과 보고서(800)는 태스크 상태 변화와 변수값 추이를 문자로 출력하는 '특이사항' 부분(810)을 포함한다. '특이사항' 부분(810)은 태스크 실행 정보와 변수값 정보에서 결함 주입 전과 후에서의 특이한 변화나 상태를 글로 자동으로 출력하는 부분이다. 이러한 '특이사항' 부분(810)이 테스트 결과 보고서(800)에 포함되면, 사용자가 직접 보고서를 써야하는 불편함과 사용자가 모니터링부(600)를 통해 제공되는 그래프를 잘못 이해할 수 있는 오류를 사전에 차단할 수 있다.
도 7에 도시된 테스트 결과 보고서(800)는, 테스트 제목, 보고서 종류, 시나리오 명, 시나리오 설명, 테스트 시간 검사유형, 테스트 시간 검사대상, 테스트 시간 조건, 테스트 대상, 테스트 시작시간, 테스트 종료시간, 테스트 킬 시도 시간, ECU 리셋 추정 시간, 테스트 결과 개요, 조치 결과, 변수 목록, 변수 모니터링, 태스크 상태 변화 그래프 및 변수값 변화 그래프를 더 포함할 수 있다. 이러한 정보들도 사용자가 직접 작성하는 것이 아니라 자동으로 출력된다.
도 3에 도시된 결함 정보(500)를 생성하는 단계(s310), 생성된 결함 정보(500)를 전자제어장치(50)에 주입하는 단계(s330), 전자제어장치(50)의 동작을 모니터링하는 단계(s350) 및 테스트 결과 보고서(800)를 생성하는 단계(s370)는, 도 2에 도시된 결함 주입 테스트 장치(10)에서 수행될 수 있다. 예를 들어, s310 단계는 도 2에 도시된 테스트 시나리오 관리 모듈(12)에서, s330 단계는 도 2에 도시된 테스트 실행 모듈(13)과 통신 모듈(18)에서, s350 단계는 도 2에 도시된 태스크 모니터링 모듈(14)와 변수값 모니터링 모듈(15)에서, s370 단계는 도 2에 도시된 보고서 생성 모듈(17)에서 수행될 수 있다.
도 8 및 도 9는 <표 2>에 기재된 결함의 유형 중 '태스크 실행 중단'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 8을 참조하면, '태스크 실행 중단'의 결함 시나리오는, 입력창(400)의 테스트 실행 조건 입력부(410)와 결함 유도 방법 입력부(430)를 통해 제공되는 정보들 중에서 사용자가 선택한 정보들을 결합하여 생성될 수 있다.
입력창(400)의 테스트 실행 조건 입력부(410)와 결함 유도 방법 입력부(430) 각각에 포함된 정보는, 결함을 주입할 대상인 전자제어장치(50)의 설정정보(100)로부터 구성될 수 있다. 전자제어장치(50)의 설정정보(100)에 따라 테스트 실행 조건 입력부(410)와 결함 유도 방법 입력부(430) 각각에 포함된 정보는 결정된다. 전자제어장치(50)별로 설정정보(100)에 차이가 있으며, 설정정보(100)의 차이에 의해서 테스트 실행 조건 입력부(410)와 결함 유도 방법 입력부(430) 각각에 포함된 정보는 달라진다.
예를 들어, 도 8에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 'Instruction Pointer 조작'이라는 Fault 유도 방법을 선택하며, 'Task_A'라는 실행 중단의 대상 태스크를 선택하며, 'R.S IP'라는 레지스터 이름을 기재하며, 'Task_B_function'이라는 대체 함수를 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '태스크 실행 중단'의 결함 시나리오를 포함하는 결함 정보(500)가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보(500)가 전자제어장치(50)에 주입되면, 도 9의 붉은색 박스와 같이, TASK_A_function 주소(현재 실행중인 위치)를 TASK_B_function 주소로 대체하여 TASK_A이름으로 TASK_B 기능이 수행됨을 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 10 및 도 11은 <표 2>에 기재된 결함의 유형 중 '스케줄러에 의한 태스크 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 10에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '재실행정보 조작'이라는 Fault 유도 방법을 선택하며, 'Task_C'라는 재실행 방지 대상 태스크를 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '스케줄러에 의한 태스크 재실행 방지'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 11의 붉은색 박스와 같이, Task_C가 킬(Kill)되었음을 태스크 정보창과 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 12 및 도 13은 <표 2>에 기재된 결함의 유형 중 '알람(Alarm) 발생 방해를 통한 태스크 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 12에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_E'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '알람 주기를 조작'이라는 Fault 유도 방법을 선택하며, 라는 알람을 실행시키는 태스크 E가 동작되지 않도록 하는 'ALARM_E'를 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '알람(Alarm) 발생 방해를 통한 태스크 재실행 방지'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 13의 붉은색 박스와 같이, Task_E의 알람이 한 번 실행되고 더 이상 실행되지 않음을 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 14 및 도 15는 <표 2>에 기재된 결함의 유형 중 '이벤트 대기 후 Task 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 14에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '20'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '대기 Event Mask 조작'이라는 Fault 유도 방법을 선택하며, 'Task_D_task_evts (0x40000128)'라는 이벤트를 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '이벤트 대기 후 Task 재실행 방지'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 20회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 15의 붉은색 박스와 같이, Task_E가 킬(Kill)되었음을 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 16은 <표 2>에 기재된 결함의 유형 중 '리소스 대기 중 Deadlock 유도로 Task 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 16에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '리소스 대기 중 Deadlock 유도'라는 Fault 유도 방법을 선택하며, 'RES_DATA_1'이라는 이벤트를 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '리소스 대기 중 Deadlock 유도로 Task 재실행 방지'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
도 17 및 도 18은 <표 2>에 기재된 결함의 유형 중 'Stack overflow 발생 유도하여 Task 재실행 방지'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 17에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 'Stack Pointer에 Max값 할당'이라는 Fault 유도 방법을 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 'Stack overflow 발생 유도하여 Task 재실행 방지'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 18의 붉은색 박스와 같이, Segmentation fault 오류가 발생하고 시스템 전체가 킬(Kill)되었음을 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 19 및 도 20은 <표 2>에 기재된 결함의 유형 중 'Task overrun(다른 Task omission, delay 유발)'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 19에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '실행중인 Task의 함수 교체'라는 Fault 유도 방법을 선택하며, 'Task_A'를 태스크로 선택하며, 'Task_F_function (0x000058FE)'라는 대체할 함수를 선택한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 'Task overrun'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 20의 붉은색 박스와 같이, Task_A가 실행될 부분에서 Task_F의 함수를 실행되면서 Task_A 의 실행부분이 길어지는 '태스크 오버런'이 발생하였음을 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 다른 태스크의 함수 교체가 시작된 시점을 의미한다.
도 21 및 도 22는 <표 2>에 기재된 결함의 유형 중 '변수 값의 오염'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 21에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '메모리 오염'이라는 Fault 유도 방법을 선택하며, 메모리 오염 입력창(450)을 통해 특정 변수값을 변경한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '변수 값의 오염'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 22의 파란색 타원 부분과 같이, 변수값 변경에 따라 변수값 변화 그래프의 모양이 달라짐을 확인할 수 있다. 참고로, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 23은 <표 2>에 기재된 결함의 유형 중 '코드 변이'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 23에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '메모리 오염'이라는 Fault 유도 방법을 선택하며, 메모리 오염 입력창(450)을 통해 'Task_A_function'이라는 이름, '0x00005742'라는 주소, '3'이라는 오프셋, '184'라는 크기를 지정한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 '코드 변이'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
도 24 및 도 25는 <표 2>에 기재된 결함의 유형 중 'CPU 레지스트 값 오염'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
도 24에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 'CPU 레지스터 값 오염'이라는 Fault 유도 방법을 선택하며, 'R.S R1'이라는 레지스터 이름(스택포인터)을 지정하며, '4000000'이라는 설정 값(16진수)을 지정한 후 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 'CPU 레지스트 값 오염'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 25와 같이, 시스템 다운이 발생하였음을 태스크 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 박스는 전자제어장치(50)의 각 태스크들이 정상적으로 동작하고 있음을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 26 및 도 27은 <표 2>에 기재된 결함의 유형 중 'Bit Flip'의 결함 시나리오를 생성하는 방법을 설명하기 위한 도면이다.
여기서, 'Bit Flip'이란 HW의 충격에 의해서 특정 memory의 data(bit)가 0에서 1 또는 1에서 0으로 변경되는 것을 의미한다.
도 26에 도시된 바와 같이, 테스트 실행 조건 입력부(410)에서 사용자가 'Task_A'라는 태스크를 선택하며, '10'라는 태스크 실행 횟수를 지정하며, '1000'이라는 결함 발생 시간(또는, 대기시간)을 지정하고, 결함 유도 방법 입력부(430)에서 사용자가 '메모리 오염'이라는 Fault 유도 방법을 선택하며, 메모리 오염 입력창(450)을 통해 'value'라는 이름, '0x40000114'라는 주소, '3'이라는 오프셋, '4'라는 크기를 지정하고, 변경할 값 입력창(470)을 통해 8bit 중 바꾸고 싶은 bit를 선택한 후에 확인을 누르면, 위에서 선택 및 지정된 정보들이 결합된 'Bit Flip'의 결함 시나리오를 포함하는 결함 정보가 자동으로 생성된다. 여기서, 대기시간은, Task_A가 10회 실행한 시점에 바로 결함을 주입하지 않고 1000ms를 기다렸다가 주입한다는 의미이다.
생성된 결함 정보가 전자제어장치(50)에 주입되면, 도 27과 같이, 변수값이 변경되었음을 변수값 변화 그래프를 통해 확인할 수 있다. 참고로, 파란색 타원은 비트값 변경에 따른 그래프의 모양을 보여주고, 붉은색 실선은 결함이 시작된 시점을 의미한다.
도 3에 도시된 본 발명의 실시 형태에 따른 결함 주입 테스트 방법에서 전자제어장치의 동작을 모니터링하는 단계(s350)는, 도 28에 도시된 바와 같이, 모니터링부(600)뿐만 아니라 프로젝트 관리부(2810), 테스트 시나리오 관리부(2830) 및 태스크/변수 상태정보 조회부(2850)를 디스플레이할 수 있다.
테스트 시나리오 관리부(2830)는 전자제어장치(50)에 주입할 수 있는 다수의 시나리오를 디스플레이한다. 여기서, 다수의 시나리오는 사용자의 선택에 따라 전부 또는 일부의 시나리오들 일괄적으로 실행될 수도 있다.
태스크/변수 상태정보 조회부(2850)는 전자제어장치(50)의 태스크별/변수별 정보를 행렬로 표시하여 디스플레이 한다. 여기서, 태스크의 상태가 변경되면 구별되는 색상으로 변경된 태스크가 표시될 수도 있다.
도 3에 도시된 본 발명의 실시 형태에 따른 결함 주입 테스트 방법에서 전자제어장치의 동작을 모니터링하는 단계(s350)는, 메모리 폴링에 의한 모니터링 오차를 보완할 수 있다. 도 29를 참조하여 구체적으로 설명한다.
도 29는 메모리 폴링에 의한 모니터링 오차를 보완하는 기능을 설명하기 위한 도면이다. 여기서, 도 29의 (a)는 메모리 폴링 방법에 의한 모니터링 오차가 발생되는 이유를 설명하기 위한 것이고, 도 29의 (b)는 거의 실시간으로 태스크의 상태 변화를 모니터링할 수 있는 방법을 설명하기 위한 것이다.
도 29의 (a)를 참조하면, 모니터링 주기가 커질수록 태스크의 실시간 상태 변화와 태스크 상태 변화 그래프를 통해 모니터링되는 태스크의 상태 변화에 오차가 커진다. 이러한 문제를 해결하기 위해서, 도 29의 (b)에 도시된 바와 같이, 전자제어장치의 태스크의 시작과 종료 정보를 추출하고, 추출된 태스크의 시작과 종료 정보를 이용하여 모니터링 주기를 보정함으로써, 모니터링 주기가 태스크의 실시간 상태 변화에 따라가도록 보완한다. 여기서, 전자제어장치의 태스크의 시작과 종료 정보는 PreTaskHook과 PostTaskHook을 활용하여 추출할 수 있고, 원형 큐를 이용하여 일정 기간동안 누적된 모니터링 정보들을 한꺼번에 수집 및 복원하여 결함 주입 테스트 장치의 모니터링 주기와 상관 없이 태스크의 실시간 상태 변화를 누락하지 않고 정확히 표현할 수 있다.
도 1 내지 도 29에 도시된 본 발명의 실시 형태에 따른 결함 주입 테스트 방법과 장치는, 전자제어장치의 실행환경을 분석하고 테스트 시나리오 설계에 적용될 수 있을 뿐만 아니라, 타겟으로 하는 실제 ECU와의 단품 테스트가 가능하며, 가상의 ECU와의 힐(HIL) 테스트도 가능하며, 실차 테스트도 가능하다.
본 발명의 실시 형태에 따른 결함 주입 테스트 방법은, 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독가능 기록매체를 통하여 실시될 수 있다. 상기 컴퓨터 판독가능 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 기록매체는 실시 형태를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크와 같은 자기-광 매체 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시 형태를 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시 형태의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시 형태에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
10: 결함 주입 테스트 장치
30: 인터페이스 장치
50: 전자제어장치

Claims (14)

  1. 전자제어장치의 결함 시나리오를 포함하는 결함 정보를 생성하는, 결함 정보 생성 단계;
    생성된 상기 결함 정보를 상기 전자제어장치에 주입하는, 결함 정보 주입 단계; 및
    상기 결함 정보가 주입된 상기 전자제어장치로부터 태스크 실행 정보와 변수값 정보를 수신받아 상기 전자제어장치의 동작을 모니터링하는, 모니터링 단계;
    를 포함하는, 결함 주입 테스트 방법.
  2. 제 1 항에 있어서, 상기 결함 정보 생성 단계에서,
    상기 결함 시나리오는 상기 전자제어장치의 설정정보와 입력창으로 입력된 사용자 선택정보에 기초하여 생성된, 결함 주입 테스트 방법.
  3. 제 1 항에 있어서, 상기 결함 정보 생성 단계에서,
    상기 결함 시나리오는 상기 전자제어장치의 설정정보에서 발생 가능한 모든 결함들을 조합하여 추출된, 결함 주입 테스트 방법.
  4. 제 1 항에 있어서, 상기 결함 정보 생성 단계에서,
    상기 결함 시나리오는 결함의 발생 시점, 결함의 대상, 결함의 유형 및 결함의 발생 횟수 중 적어도 하나 이상을 포함하는, 결함 주입 테스트 방법.
  5. 제 4 항에 있어서, 상기 결함의 유형은,
    태스크 실행 중단, 스케줄러에 의한 태스크 재실행 방지, 알람(Alarm) 발생 방해를 통한 태스크 재실행 방지, 이벤트 대기 후 태스크 재실행 방지, 리소스 대기 중 데드락(Deadlock) 유도로 태스크 재실행 방지, 스택 오버플로우(Stack overflow) 발생 유도하여 태스크 재실행 방지, 태스크 오버런(Task overrun), 변수값의 오염, 코드 변이, CPU 레지스터 값 오염, S/W 컴포넌트 오염, 및 비트 플립(Bit Flip) 중 적어도 하나 이상을 포함하는, 결함 주입 테스트 방법.
  6. 제 1 항에 있어서, 상기 모니터링 단계는,
    상기 전자제어장치의 상기 태스크 실행 정보에 기초한 태스크 상태 변화 그래프와 상기 전자제어장치의 상기 변수값 정보에 기초한 변수값 상태 변화 그래프를 디스플레이하는, 결함 주입 테스트 방법.
  7. 제 6 항에 있어서,
    상기 태스크 상태 변화 그래프는, 시간에 흐름에 따른 태스크별 상태의 변화, 결함 발생 시점 및 시스템 리셋 시점을 포함하는, 결함 주입 테스트 방법.
  8. 제 6 항에 있어서,
    상기 변수값 변화 그래프는, 시간에 흐름에 따른 변수값(들)의 추이, 결함 발생 시점 및 시스템 리셋 시점을 포함하는, 결함 주입 테스트 방법.
  9. 제 8 항에 있어서,
    상기 변수값 변화 그래프는, 변수값이 미리 설정된 임계치를 초과하는지 여부를 알려주는 알림을 포함하는, 결함 주입 테스트 방법.
  10. 제 1 항에 있어서, 상기 모니터링 단계는,
    상기 전자제어장치의 태스크의 시작과 종료 정보를 추출하고, 추출된 상기 태스크의 시작과 종료 정보를 기초로 모니터링 주기를 보정하는, 결함 주입 테스트 방법.
  11. 제 1 항에 있어서,
    테스트 결과 보고서를 생성하는, 테스트 결과 보고서 생성 단계;를 더 포함하고,
    상기 테스트 결과 보고서는, 상기 태스크 상태 변화와 상기 변수값 추이를 문자로 출력한 부분을 포함하는, 결함 주입 테스트 방법.
  12. 제 1 항 내지 제 11 항 중 어느 한 항의 결함 주입 테스트 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체.
  13. 전자제어장치의 결함 시나리오를 포함하는 결함 정보를 생성하는, 테스트 시나리오 관리 모듈;
    생성된 상기 결함 정보를 상기 전자제어장치에 주입시기 위한 테스트를 실행하는, 테스트 실행 모듈;
    상기 결함 정보가 주입된 상기 전자제어장치로부터 태스크 실행 정보를 수신받아 상기 전자제어장치 내의 태스크의 상태 변화를 모니터링하는, 태스크 모니터링 모듈; 및
    상기 결함 정보가 주입된 상기 전자제어장치로부터 변수값 정보를 수신받아 상기 전자제어장치의 변수값의 변화 추이를 모니터링하는, 변수값 모니터링 모듈;
    를 포함하는, 결함 주입 테스트 장치.
  14. 제 13 항에 있어서,
    상기 전자제어장치에 결함이 발생하기 전과 발생된 후의 상기 태스크의 상태 변화와 상기 변수값의 추이 변화를 포함하는 테스트 결과 보고서를 생성하는, 보고서 생성 모듈;을 더 포함하는 결함 주입 테스트 장치.
KR1020170072731A 2017-06-09 2017-06-09 결함 주입 테스트 방법 및 장치 KR102020994B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170072731A KR102020994B1 (ko) 2017-06-09 2017-06-09 결함 주입 테스트 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170072731A KR102020994B1 (ko) 2017-06-09 2017-06-09 결함 주입 테스트 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180134677A true KR20180134677A (ko) 2018-12-19
KR102020994B1 KR102020994B1 (ko) 2019-09-16

Family

ID=65008905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170072731A KR102020994B1 (ko) 2017-06-09 2017-06-09 결함 주입 테스트 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102020994B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214411A (zh) * 2020-10-20 2021-01-12 腾讯科技(深圳)有限公司 一种容灾系统测试方法、装置、设备及存储介质
WO2021020711A1 (ko) * 2019-07-31 2021-02-04 삼성전자 주식회사 불량을 예측하는 전자 장치 및 그 전자 장치의 제어 방법
CN112785101A (zh) * 2019-11-06 2021-05-11 中国石油化工股份有限公司 存储器、炼油化工设备缺陷处置方法、装置和设备
CN112214411B (zh) * 2020-10-20 2024-05-14 腾讯科技(深圳)有限公司 一种容灾系统测试方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050329A (ja) * 2003-07-11 2005-02-24 Yogitech Spa 信頼性マイクロコントローラ、マイクロコントローラにおける欠陥検出方法、マイクロコントローラ用欠陥許容システム設計方法、およびコンピュータプログラム製品
KR20080042659A (ko) * 2006-11-09 2008-05-15 한국전자통신연구원 소프트웨어 결함 유발 데이터를 삽입한 파일을 이용하여소프트웨어의 결함을 검출하는 자동화 시스템 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005050329A (ja) * 2003-07-11 2005-02-24 Yogitech Spa 信頼性マイクロコントローラ、マイクロコントローラにおける欠陥検出方法、マイクロコントローラ用欠陥許容システム設計方法、およびコンピュータプログラム製品
KR20080042659A (ko) * 2006-11-09 2008-05-15 한국전자통신연구원 소프트웨어 결함 유발 데이터를 삽입한 파일을 이용하여소프트웨어의 결함을 검출하는 자동화 시스템 및 그 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
윤경섭 외 2인, "결함 주입 방법을 이용한 하드웨어 검증시스템 구현," 전기전자학회논문지, 제15권 제4호, pp.267-273, 2011.12. *
이동우 외 2인, "결함주입기법을 이용한 차량용 고신뢰성 임베디드 시스템의 안전성 검증방안," 정보보호학회지, 제24권 제2호, pp.50-55, 2014.04 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021020711A1 (ko) * 2019-07-31 2021-02-04 삼성전자 주식회사 불량을 예측하는 전자 장치 및 그 전자 장치의 제어 방법
CN112785101A (zh) * 2019-11-06 2021-05-11 中国石油化工股份有限公司 存储器、炼油化工设备缺陷处置方法、装置和设备
CN112214411A (zh) * 2020-10-20 2021-01-12 腾讯科技(深圳)有限公司 一种容灾系统测试方法、装置、设备及存储介质
CN112214411B (zh) * 2020-10-20 2024-05-14 腾讯科技(深圳)有限公司 一种容灾系统测试方法、装置、设备及存储介质

Also Published As

Publication number Publication date
KR102020994B1 (ko) 2019-09-16

Similar Documents

Publication Publication Date Title
US20190205233A1 (en) Fault injection testing apparatus and method
US7962798B2 (en) Methods, systems and media for software self-healing
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
US7203881B1 (en) System and method for simulating system operation
US7379846B1 (en) System and method for automated problem diagnosis
US7536605B2 (en) Injection of software faults into an operational system
US9483383B2 (en) Injecting faults at select execution points of distributed applications
US8225142B2 (en) Method and system for tracepoint-based fault diagnosis and recovery
US9519495B2 (en) Timed API rules for runtime verification
CN102521098B (zh) Cpu死机监控的处理方法和装置
CN108197032B (zh) Ios应用的主线程卡顿监测方法、介质、设备及系统
CN104320308A (zh) 一种服务器异常检测的方法及装置
Bovenzi et al. An OS-level framework for anomaly detection in complex software systems
KR20180134677A (ko) 결함 주입 테스트 방법 및 장치
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
US10860411B2 (en) Automatically detecting time-of-fault bugs in cloud systems
Montrucchio et al. Software-implemented fault injection in operating system kernel mutex data structure
JPH02294739A (ja) 障害検出方式
CN114217925A (zh) 一种实现异常自动重启的业务程序运行监控方法及系统
CN105447389A (zh) 基于Peach平台的漏洞定位与快速重现
CN112379977A (zh) 一种基于时间触发的任务级故障处理方法
Rentschler et al. System self diagnosis for industrial devices
CN113472553B (zh) 故障注入系统及方法
JP2001034503A (ja) ブレークポイント設定方法及び障害解析装置
CN108415788B (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