KR102537875B1 - 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치 - Google Patents

차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치 Download PDF

Info

Publication number
KR102537875B1
KR102537875B1 KR1020180080863A KR20180080863A KR102537875B1 KR 102537875 B1 KR102537875 B1 KR 102537875B1 KR 1020180080863 A KR1020180080863 A KR 1020180080863A KR 20180080863 A KR20180080863 A KR 20180080863A KR 102537875 B1 KR102537875 B1 KR 102537875B1
Authority
KR
South Korea
Prior art keywords
defect
software
information
module
injection
Prior art date
Application number
KR1020180080863A
Other languages
English (en)
Other versions
KR20200007133A (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 KR1020180080863A priority Critical patent/KR102537875B1/ko
Publication of KR20200007133A publication Critical patent/KR20200007133A/ko
Application granted granted Critical
Publication of KR102537875B1 publication Critical patent/KR102537875B1/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/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은 차량 ECU 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치, 그리고 차량용 소프트웨어 검증 시스템에 관한 것으로서, 본 발명의 일 실시 예에 따른 차량용 전자 제어 장치에 탑재되는 소프트웨어를 검증하는 호스트 컴퓨터는 상기 전자 제어 장치에 탑재되는 검증 대상 소프트웨어에 대한 실험 모델을 생성하는 실험 모델 생성 모듈과 상기 검증 대상 소프트웨어의 함수 호출 관계를 확정하는 호출 관계 분석 모듈과 사용자로부터 상기 검증 대상 소프트웨어에 주입할 결함 정보를 입력 받아 결함 선택 정보를 생성하는 결함 선택 모듈과 상기 결함 선택 정보 및 상기 확정된 함수 호출 관계에 기반하여 결함 주입 코드를 생성하는 결함 주입 코드 생성 모듈과 상기 결함 선택 정보 및 상기 결함 주입 코드를 상기 전자 제어 장치로 전송하는 제1 통신 모뎀을 포함할 수 있다.

Description

차량 ECU 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치{METHOD AND APPARATUS FOR DINAMICALLY INJECTING FAULT FOR VEHICLE ECU SOFTWARE TEST}
본 발명은 소프트웨어 검증 방법에 관한 것으로서, 보다 상세하게 차량 ECU 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치와 차량용 소프트웨어 검증 시스템에 관한 것이다.
차량 안정성에 대한 기대가 높아지면서 유럽 OEM들은 안전성 향상을 위해 자동차 분야의 기능 안전 표준인 ISO26262를 발표하였다.
이는 기존 범용 전기/전자 분야의 기능 안전 표준인 IEC61508을 자동차에 적용하여 개발된 표준으로, 제품 개념 단계에서부터 폐기까지 전 수명주기에 걸쳐서 전자 장치의 고장으로 인한 자동차의 안전성을 저해할 수 있는 위험을 체계적으로 분석하고 그 위험에 대처하는 수단이 효과적임을 보장해야 함을 명시하고 있다.
ISO26262 Part6 소프트웨어 레벨(Software Level)에서는 단위/통합 단계별로 결함 주입 검증을 ASIL(Automotive Safety Integrity Level) C 이상의 제어기에 요구하고 있으며, 이에 따라 소프트웨어 레벨에서 결함을 주입하는 검증 방안이 요구되고 있다.
결함 주입 검증(Fault Injection Test)이란 시스템에 인위적으로 결함을 주입하여 오류를 파악하고 시스템의 기능 안전상의 강건성을 검증하는 방법이다.
종래에는 한정된 특정 결함에 대해서만 결함을 주입하거나, 외부 장치(디버거 등)를 이용하여 시스템에 결함을 주입하는 등의 결함 주입 방안이 개시되었으나 이러한 방법들은 해당 시스템의 효율적인 검증을 위해 요구되는 각종 오류를 발생시키기 어렵거나, 혹은 외부 장치를 사용함에 따라 해당 제어기에 대한 오류 검증의 실시간성을 확보하기 어려운 문제점이 있었다.
한국공개특허 10-2009-0068259("동적 결함 삽입 장치, 동적 결함 삽입 방법 및 동적 결함 삽입 시스템")은 하드웨어 장치(회로 디바이스)에 동적으로 결함을 주입하는 방안을 제시하고 있으나, 소프트웨어 결함 주입에는 적합하지 않은 문제점이 있었다.
또한, 한국공개특허 10-2014-0008547("오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템")은 오류 기반 소프트웨어 시험 방법 및 오류 기반 소프트웨어 시험 시스템에 관한 것이나, 결함 주입을 위해 복수의 결함 주입 프로그램을 생성되어야 하는 문제점이 있었다.
본 발명은 상술한 종래 기술의 문제점을 해결하기 위해 고안된 것으로, 본 발명의 목적은 차량 ECU(Electronic Control Unit) 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 하나의 결함 주입 프로그램을 통해 차량 소프트웨어에 대한 소프트웨어 레벨에서의 효과적이고 효율적인 동적 결함 주입 방법 및 장치를 제공하는 것이다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명은 차량 ECU 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치, 그리고 차량용 소프트웨어 검증 시스템을 제공한다.
본 발명의 일 실시 예에 따른 차량용 전자 제어 장치에 탑재되는 소프트웨어를 검증하는 호스트 컴퓨터는 상기 전자 제어 장치에 탑재되는 검증 대상 소프트웨어에 대한 실험 모델을 생성하는 실험 모델 생성 모듈과 상기 검증 대상 소프트웨어의 함수 호출 관계를 확정하는 호출 관계 분석 모듈과 사용자로부터 상기 검증 대상 소프트웨어에 주입할 결함 정보를 입력 받아 결함 선택 정보를 생성하는 결함 선택 모듈과 상기 결함 선택 정보 및 상기 확정된 함수 호출 관계에 기반하여 결함 주입 코드를 생성하는 결함 주입 코드 생성 모듈과 상기 결함 선택 정보 및 상기 결함 주입 코드를 상기 전자 제어 장치로 전송하는 제1 통신 모뎀을 포함할 수 있다.
여기서, 상기 실험 모델 생성 모듈은 결함 주입 위치를 추출하는 수단과 상기 추출된 결함 주입 위치에 결함 유형을 적용하는 수단과 결함 주입 테스트가 자동화되도록 설정하는 수단과 상기 결함 유형 별 자동화 가능 여부를 판단하는 수단과 상기 판단 결과에 따라 상기 자동화가 불가능한 결함 유형을 제외하여 결함 주입 시나리오를 설정하는 수단을 포함할 수 있다.
또한, 상기 결함 주입 위치는 상기 검증 대상 소프트웨어의 단위 및 통합 테스트 단계 별로 뮤테이션(Mutation) 연산자를 적용하여 추출될 수 있다.
또한, 상기 오류 유형은 데이터 오류(Data Error), 프로그램 흐름 오류(Program Flow Error), 접근 오류(Access Error), 타이밍 오류(Timing Error) 및 비대칭 오류(Asymmetric Error)를 포함할 수 있다.
또한, 상기 결함 선택 정보는 결함이 주입될 위치를 식별하기 위한 정보, 주입될 결함 유형을 식별하기 위한 정보, 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 결함 주입 코드는 상기 결함 선택 정보에 따라 단위 테스트를 위한 결함 주입 코드 및 통합 테스트를 위한 결함 주입 코드 중 적어도 하나를 포함할 수 있다.
또한, 상기 호출 관계 분석 모듈은 프로젝트 생성을 위한 사용자 인터페이스 화면을 구성하는 제1 사용자 인터페이스 제공부와 상기 검증 대상 소프트웨어를 구성하는 파일, 태스크(Task) 및 함수 등의 계층 구조를 분석하는 구조 분석부와 상기 분석된 계층 구조에 기반하여 호출함수(Caller)와 피호출함수(Callee)의 관계를 분석하는 호출 관계 분석부를 포함할 수 있다.
또한, 상기 결함 선택 모듈은 소프트웨어 단위 테스트 단계와 소프트웨어 통합 테스트 단계 별 결함 주입 코드 생성에 필요한 정보를 사용자로부터 입력 받기 위한 소정 결함 주입 사용자 인터페이스 화면을 구성하는 제2 사용자 인터페이스 제공부와 상기 단위 테스트를 위한 결함 주입 코드의 생성에 필요한 제1 정보를 수집하는 단위 테스트 정보 수집부와 상기 통합 테스트를 위한 결함 주입 코드의 생성에 필요한 제2 정보를 수집하는 통합 테스트 정보 수집부를 포함할 수 있다.
또한, 상기 제1 정보는 결함을 주입할 단위 함수 또는 전역 변수에 관한 정보, 주입할 결함 유형에 관한 정보 및 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 제2 정보는 상기 통합 테스트에 포함되는 일련의 상기 단위 테스트 및 그것들의 실행 순서에 관한 정보, 결함을 주입할 위치에 관한 정보, 주입할 결함 유형에 관한 정보 및 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 중 적어도 하나를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 호스트 컴퓨터와 연동하여 내부 탑재된 소프트웨어를 검증하는 차량용 전자 제어 장치는 상기 호스트 컴퓨터로부터 결함 선택 정보 및 상기 결함 선택 정보에 기초하여 생성된 결합 주입 코드를 수신하는 진단 모듈과 상기 결함 선택 정보에 기초하여 검증 대상 소프트웨어를 식별하고, 상기 식별된 검증 대상 소프트웨어 내 결함을 주입할 태스크와 함수를 식별하는 제2 제어기와 상기 식별된 태스크 호출을 모니터링하는 태스크 호출 모니터링 모듈과 상기 식별된 태스크 호출이 감지되면, 상기 식별된 함수의 호출을 모니터링하는 함수 호출 모니터링 모듈과 상기 식별된 함수의 호출이 감지되면, 상기 결합 주입 코드를 실행시키는 결함 주입 코드 실행 모듈을 포함할 수 있다.
여기서, 상기 차량용 전자 장치에 탑재된 소프트웨어는 AUTOSAR(AUTomotive Open System Architecture) 표준 플랫폼에서 실행되는 소프트웨어일 수 있다.
또한, 상기 AUTOSAR 표준 플랫폼은 실시간 환경 계층과 하드웨어 계층 사이에 배치되는 기본 소프트웨어 계층을 포함하고, 상기 진단 모듈, 상기 태스크 호출 모니터링 모듈, 상기 함수 호출 모니터링 모듈 및 결함 주입 코드 실행 모듈은 상기 기본 소프트웨어 계층에 탑재될 수 있다.
또한, 상기 진단 모듈은 CAN 통신을 통해 상기 결함 선택 정보 및 상기 결함 주입 코드를 수신할 수 있다.
또한, 상기 결함 주입 코드는 상기 결함 선택 정보에 따라 단위 테스트를 위한 결함 주입 코드 및 통합 테스트를 위한 결함 주입 코드 중 적어도 하나를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 차량용 소프트웨어 검증 시스템은 검증 대상 소프트웨어의 함수 호출 관계를 분석하고, 사용자로부터 입력 받은 결함 선택 정보 및 상기 분석된 함수 호출 관계에 기초하여 결함 주입 코드를 생성하는 호스트 컴퓨터와 상기 호스트 컴퓨터로부터 CAN 통신을 통해 상기 결함 선택 정보 및 상기 결함 주입 코드를 수신하고, 상기 검증 대상 소프트웨어 실행 시 상기 결함 선택 정보에 기반하여 식별된 태스크 및 함수를 모니터링하여 상기 결함 주입 코드를 실행시키는 차량용 전자 제어 장치를 포함할 수 있다.
여기서, 상기 차량용 전자 제어 장치는 상기 호스트 컴퓨터로부터 상기 결함 선택 정보 및 상기 결합 주입 코드를 수신하는 진단 모듈과 상기 결함 선택 정보에 기초하여 식별된 태스크 및 함수의 호출을 모니터링하는 모니터링 모듈과 상기 식별된 태스크 및 함수의 호출이 감지되면, 상기 결합 주입 코드를 실행시키는 결함 주입 코드 실행 모듈을 포함할 수 있다.
또한, 상기 검증 대상 소프트웨어는 AUTOSAR(AUTomotive Open System Architecture) 표준 플랫폼에서 실행되는 소프트웨어일 수 있다.
또한, 상기 AUTOSAR 표준 플랫폼은 실시간 환경 계층과 하드웨어 계층 사이에 배치되는 기본 소프트웨어 계층을 포함하고, 상기 진단 모듈, 상기 모니터링 모듈 및 상기 결함 주입 코드 실행 모듈은 상기 기본 소프트웨어 계층에 탑재될 수 있다.
또한, 상기 호스트 컴퓨터는 상기 차량용 전자 제어 장치에 탑재되는 상기 검증 대상 소프트웨어에 대한 실험 모델을 생성하는 실험 모델 생성 모듈과 상기 검증 대상 소프트웨어의 함수 호출 관계를 확정하는 호출 관계 분석 모듈과 상기 사용자로부터 상기 검증 대상 소프트웨어에 주입할 결함 정보를 입력 받아 상기 결함 선택 정보를 생성하는 결함 선택 모듈과 상기 결함 선택 정보 및 상기 확정된 함수 호출 관계에 기반하여 상기 결함 주입 코드를 생성하는 결함 주입 코드 생성 모듈과 상기 결함 선택 정보 및 상기 결함 주입 코드를 상기 CAN 통신을 통해 상기 차량용 전자 제어 장치로 전송하는 제1 통신 모뎀을 포함할 수 있다.
상기 본 발명의 양태들은 본 발명의 바람직한 실시예들 중 일부에 불과하며, 본원 발명의 기술적 특징들이 반영된 다양한 실시예들이 당해 기술분야의 통상적인 지식을 가진 자에 의해 이하 상술할 본 발명의 상세한 설명을 기반으로 도출되고 이해될 수 있다.
본 발명에 따른 방법 및 장치에 대한 효과에 대해 설명하면 다음과 같다.
본 발명은 AUTOSAR 기반의 차량용 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치를 제공하는 장점이 있다.
또한, 본 발명은 하나의 결함 주입 프로그램을 통해 차량 소프트웨어에 대한 소프트웨어 레벨에서의 효과적이고 효율적인 동적 결함 주입 방법 및 장치를 제공하는 장점이 있다.
또한 본 발명은 차량 전장품에 대한 높은 신뢰성을 확보하는 것이 가능한 동적 결함 주입 방법 및 장치를 제공하는 장점이 있다.
또한, 본 발명은 동적 결함 주입 방법 및 장치를 제공하는 장점이 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시 예에 따른 차량용 소프트웨어 검증 시스템 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 호스트 컴퓨터의 구조를 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 실험 모델 정의 모듈에서의 실험 모델 정의 절차를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 호출 관계 분석 모듈의 내부 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 결함 선택 모듈의 내부 구조를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 차량용 전자 제어 장치의 구조를 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 차량용 전자 제어 장치에 구현되는 AUTOSAR 표준 플랫폼의 계층 구조를 도시한다.
도 8은 본 발명의 일 실시 예에 따른 차량용 전자 제어 장치에 탑재되는 소프트웨어의 검증을 위한 동적 결함 주입 방법을 설명하기 위한 순서도이다.
이하, 본 발명의 실시예들이 적용되는 장치 및 다양한 방법들에 대하여 도면을 참조하여 보다 상세하게 설명한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결함되거나 결함되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결함하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체 등이 포함될 수 있다.
또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재될 수 있음을 의미하는 것이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥 상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성 요소에 "연결", "결함" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성 요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결함" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
도 1은 본 발명의 일 실시 예에 따른 차량용 소프트웨어 검증 시스템 구조를 설명하기 위한 도면이다.
상세하게, 도 1은 차량용 전자 제어 장치에 탑재된 소프트웨어에 동적으로 결함을 주입함으로써, 해당 소프트웨어의 오류 처리 로직이 정상인지 여부를 검증하는 것이 가능한 차량용 소프트웨어 검증 시스템 구조를 설명하기 위한 도면이다.
도 1을 참조하면, 차량용 소프트웨어 검증 시스템은 크게 호스트 컴퓨터(10)와 차량용 전자 제어 장치(20)를 포함하여 구성될 수 있다. 이하 설명의 편의를 위해, 차량용 전자 제어 장치(20)는 ECU(Electrical Control Unit)과 혼용하여 사용하기로 한다.
호스트 컴퓨터(10)와 차량용 전자 제어 장치(20)는 CAN(Controller Area Network) 통신을 통해 상호 정보를 교환할 수 있다.
여기서, 차량용 전자 제어 장치(20)에 탑재되는 소프트웨어는 AUTOSAR(AUTomotive Open System Architecture) 표준 기반의 소프트웨어일 수 있다.
호스트 컴퓨터(10)는 차량용 전자 제어 장치(20)에 탑재되는 소프트웨어를 개발하는 환경을 제공하며, 사용자로부터 입력 받은 결함 선택 정보를 CAN 통신을 통해 차량용 전자 제어 장치(20)로 전달할 수 있다. 여기서, 결함 선택 정보는 검증 대상 소프트웨어 식별 정보, 함수 호출 관계에 의해 결정되는 결함이 주입될 위치에 관한 정보, 주입될 결함의 유형에 관한 정보, 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및 데이터 값에 관한 정보 중 적어도 하나를 포함할 수 있으나, 이에 한정되지는 않는다.
또한, 호스트 컴퓨터(10)는 CAN 통신을 통해 현재 차량용 전자 제어 장치(20)로부터 실시간 소프트웨어 실행 상태 정보를 수집하여 구비된 화면에 출력할 수도 있다.
상기한 도 1의 실시 예에서는 호스트 컴퓨터(10)가 하나의 차량용 전자 제어 장치(20)와 연결된 것으로 도시되어 있으나, 이는 하나의 실시 예에 불과하며, 다른 실시 예에 따른 호스트 컴퓨터(10)는 CAN 통신망을 통해 다수의 차량용 전자 제어 장치(20)와 연결될 수도 있다.
사용자-즉, TESTER-는 구현된 오류-안전(Fail-Safety) 로직의 검증 및 평가를 위해 호스트 컴퓨터(10)를 통해 검증 대상 소프트웨어, 검증 대상 소프트웨어상에서의 결함 위치 및 결함 데이터, 결함 주입 시점, 결함 주입 방법 등을 선정하여 실험 모델(Test Model)를 정의하여 유지할 수 있다.
호스트 컴퓨터(10)에는 결함 주입 테스트 관리기(Fault Injection Test Manager)가 탑재되며, 사용자는 결함 주입 테스트 관리기를 통해 검증 대상 ECU의 소프트웨어 관련 정보-예를 들면, ELF(Executable and Linkable Format) 파일 및 MAP 파일 등을 포함함-를 분석할 수 있다.
여기서, ELF은 실행 및 링크가 가능한 바이너리 또는 오브젝트 파일 등의 형식을 규정한 것으로서, ELF 파일은 ELF 헤더가 맨 앞에 위치하고, 프로그램 헤더 테이블과 섹션(Section) 헤더 테이블이 그 뒤에 위치할 수 있다. 오브젝트 파일은 코드와 데이터가 다른 오브젝트 파일과 링킹될 수 있도록 하는 재배치 가능한 파일(relocatable file), 코드와 데이터가 타겟 운영 체제에서 실행될 수 있도록 하는 실행 파일(executable file) 및 재할당 가능한 데이터를 정적 또는 동적으로 다른 공유 오브젝트들과 공유할 수 있도록 하는 공유 오브젝트 파일(shared object file)을 포함할 수 있다.
또한, 호스트 컴퓨터(10)는 ELF(Executable and Linkable Format) 파일 및 MAP 파일 등을 이용하여 검증 대상 소프트웨어의 함수 호출 관계를 분석할 수 있다. 여기서, 분석 결과는 호스트 컴퓨터(10)의 내부 메모리에 유지될 수 있다.
또한, 호스트 컴퓨터(10)는 사용자로부터 입력 받은 결함 선택 정보에 기초하여 결함 주입 코드를 생성할 수 있다.
호스트 컴퓨터(10)는 함수 호출 관계에 대한 분석 결과, 결함 선택 정보 및 생성된 결함 주입 코드 중 적어도 하나를 CAN 통신을 통해 차량용 전자 제어 장치(20)에 전송할 수 있다.
또한, 차량용 전자 제어 장치(20)는 실행 중인 소프트웨어를 모니터링하여 함수의 호출 관계를 추적하고, 추적 결과에 따라 동적으로 결함 주입 코드를 실행시킬 수 있다.
이때, 차량용 전자 제어 장치(20)는 함수의 호출 관계에 대한 추적 결과 및 결함 주입 코드 실행 결과에 관한 정보는 CAN 통신을 통해 호스트 컴퓨터(10)로 전달할 수도 있다.
이상의 설명에서는 호스트 컴퓨터(10)가 결함 선택 정보에 기초하여 결함 주입 코드를 생성하는 것으로 설명되고 있으나, 이는 하나의 실시 예에 불과하며, 차량용 전자 제어 장치(20)는 호스트 컴퓨터(10)로부터 검증 대상 소프트웨어의 함수 호출 관계 분석 결과와 결함 선택 정보에 기초하여 결합 주입 코드를 생성할 수도 있다. 이때, 결합 주입 코드는 단위 테스트를 위한 결함 주입 코드와 통합 테스트를 위한 결함 주입 코드 중 적어도 하나를 포함할 수 있다.
도 2는 본 발명의 일 실시 예에 따른 호스트 컴퓨터의 구조를 설명하기 위한 블록도이다.
도 2를 참조하면, 호스트 컴퓨터(10)는 실험 모델 생성 모듈(210), 호출 관계 분석 모듈(220), 결함 선택 모듈(230), 결함 주입 코드 생성 모듈(240), 제1 메모리(250), 입력 장치(260), 출력 장치(270), 제1 통신 모뎀(280) 및 제1 제어기(290)를 포함하여 구성될 수 있다.
실험 모델 생성 모듈(210)은 실험 모델을 정의하기 위한 프로젝트 생성 사용자 인터페이스를 제공할 수 있다.
실험 모델 생성 모듈(210)은 검증 대상 ECU 내 검증 대상 소프트웨어를 확정하고, 확정된 검증 대상 소프트웨어의 태스크/파일 등의 계층화된 구조를 분석하여 잠정적으로 결함이 발생될 수 있는 위치 및 결함이 발생될 수 있는 파라메터 및(또는) 변수 및(또는) 레지스터 등을 선정하고, 선정 결과에 기초하여 해당 ECU를 위한 실험 모델을 정의 및 생성할 수 있다. 여기서, 생성된 실험 모델에 관한 정보는 제1 메모리(250)에 저장될 수 있다.
호출 관계 분석 모듈(220)은 검증 대상 ECU에 탑재된 소프트웨어와 관련된 정보-예를 들면, ELF 파일, MAP 파일 및 헤더 파일 등을 포함함-를 분석하여 검증 대상 소프트웨어상에서의 함수 호출 관계를 확정할 수 있다.
결함 선택 모듈(230)은 태스크 기반으로 사용자로부터 주입할 결함을 선택 받아 결함 선택 정보를 생성할 수 있다. 여기서, 결함 선택 정보는 태스크 식별 정보, 결함이 주입될 위치를 식별하기 위한 정보 및 주입될 결함의 유형을 식별하기 위한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 등을 포함할 수 있으며, 제1 제어기(280)로 전달될 수 있다.
사용자는 호스트 컴퓨터(10)에 탑재된 결함 주입 테스트 관리기를 실행시킨 후 소정 사용자 인터페이스 화면을 통해 주입할 결함을 선택할 수 있다. 여기서, 선택 가능한 결함 위치 및 유형은 상기 정의된 실험 모델에 기반하여 결정될 수 있다.
제1 제어기(290)는 결함 선택 모듈(230)로부터 수신된 결함 선택 정보를 제1 통신 모뎀(270)을 통해 차량용 전자 제어 장치(20)로 전송할 수 있다.
제1 메모리(250)에는 호스트 컴퓨터(10)의 구동에 필요한 소프트웨어, 정의된 실험 모델에 관한 정보 및 분석된 함수 호출 관계에 관한 정보 등이 기록될 수 있다.
제1 제어기(290)는 사용자의 선택에 따라 정의된 실험 모델에 관한 정보 및 분석된 함수 호출 관계에 관한 정보를 상기 제1 메모리(250)로부터 독출하여 해당 ECU로 전송할 수도 있다.
결함 주입 코드 생성 모듈(240)은 결함 선택 정보에 기초하여 결함 주입 코드를 생성할 수 있다. 여기서, 생성되는 결함 주입 코드는 단위 테스트 결함 주입 코드와 통합 테스트 결함 주입 코드를 포함할 수 있다.
생성된 결함 주입 코드는 제1 메모리(250)에 저장될 수 있다.
제1 제어기(290)는 해당 ECU가 구동되면, 제1 메모리(250)로부터 해당 ECU에 상응하는 결함 주입 코드를 읽어 들여, 제1 통신 모뎀(280)을 통해 해당 ECU로 전송할 수 있다.
입력 장치(260)는 키보드, 터치 스크린, 마우스 등의 사용자 입력 수단을 포함할 수 있다.
출력 장치(270)는 디스플레이 화면, 스피커 등을 포함할 수 있으나, 이에 한정되지는 않는다.
제1 통신 모뎀(280)은 차량 내 구비된 ECU와의 CAN 통신을 수행할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 실험 모델 정의 모듈에서의 실험 모델 정의 절차를 설명하기 위한 도면이다.
도 3을 참조하면, 실험 모델 생성 모듈(210)은 차량용 소프트웨어의 단위/통합 테스트 단계별로 AUTOSAR 기반 차량용 소프트웨어 어플리케이션이 호출할 수 있는 계층에 소스 코드를 변경하여 테스트하는 기법인 소프트웨어 단위 및 통합 뮤테이션(Mutation) 연산자를 적용하여 결함 주입 위치를 추출할 수 있다(S310).
실험 모델 생성 모듈(210)은 AUTOSAR 어플리케이션에서 발생할 수 있는 오류 유형을 기반으로 결함 유형을 도출하고, 추출된 결함 주입 위치 별 도출된 결함 유형을 적용할 수 있다(S320).
일 예로, AUTOSAR 어플리케이션에서 발생할 수 있는 오류 유형은 크게 데이터 오류(Data Error), 프로그램 흐름 오류(Program Flow Error), 접근 오류(Access Error), 타이밍 오류(Timing Error) 및 비대칭 오류(Asymmetric Error)를 포함할 수 있다.
데이터 오류의 세부 오류 유형은 “Invalid Value” 1개이고, 프로그램 흐름 오류의 세부 오류 유형은 “Uncalled Function”, “Bypass Function Call” 및 “Illegal Instruction” 3개이고, 접근 오류의 세부 오류 유형은 “Invalid Address” 및 “Invalid Register” 2개이고, 타이밍 오류의 세부 오류 유형은 “Data Delay”, “Data Loss”, “No Response” 및 “CPU Clock Corruption” 4개이고, 비대칭 오류의 세부 결함 유형은 “Asymmetric Valure” 1개로 구분될 수 있다.
상기한 310 단계 내지 320 단계가 종료되면, 결함 주입 테스트를 위한 결함 유형이 정의된다.
실험 모델 생성 모듈(210)은 결함 주입 테스트가 자동화되도록 설정할 수 있다(S330).
일 예로, AUTOSAR 기반의 차량용 ECU 소프트웨어에 결함을 주입하는 방법은 해당 ECU의 AUTOSAR 계층 중 기본 소프트웨어 계층(BSW(Basic SoftWare) Layer)에 태스크 및 함수의 호출을 모니터링하는 모니터링 모듈을 탑재하고, 테스트 대상 어플리케이션이 실행된 후 결함 주입 대상 함수의 호출이 모니터링 모듈에 의해 감지되면 호출된 원본 함수 대신 결함 코드가 삽입된 함수-이하 설명의 편의를 위해, ‘결함 코드 주입 함수’라 명함-를 실행시키는 결함 주입 테스트 자동화 방법이 사용될 수 있다.
즉, 본 발명의 일 실시 예는 기본 소프트웨어 계층에 래퍼 함수(Wrapper Function)와 래퍼 함수를 후킹할 수 있는 모듈을 탑재함으로써, 결함 주입 테스트를 자동화시킬 수 있다. 여기서, 래퍼는 특정 함수를 자신의 함수로 덮어쓰는 것을 의미한다.
실험 모델 생성 모듈(210)은 결함 유형 별 상기 자동화 설정이 가능한지 여부를 판단할 수 있다(S340).
즉, 실험 모델 생성 모듈(210)은 상기 320 단계의 결과로 도출된 결함 유형에 상기 330 단계의 자동화 방법이 적용될 수 있는지 여부를 판단할 수 있다. 판단 결과, 적용이 불가하면, 실험 모델 생성 모듈(210)은 해당 결함 유형을 테스트 대상에서 제외시킬 수 있다.
실험 모델 생성 모듈(210)은 상기 도출된 결함 유형과 AUTOSAR 플랫폼을 분석하여 결함이 발생하는 시나리오 및 결함 주입 방법을 설정할 수 있다(S350).
도 4는 본 발명의 일 실시 예에 따른 호출 관계 분석 모듈의 내부 구조를 설명하기 위한 도면이다.
도 4를 참조하면, 호출 관계 분석 모듈(220)은 제1 사용자 인터페이스 제공부(410), 구조 분석부(420) 및 호출 관계 분석부(430)를 포함하여 구성될 수 있다.
제1 사용자 인터페이스 제공부(410)는 프로젝트 생성을 위한 사용자 인터페이스 화면-이하, 설명의 편의를 위해 프로젝트 생성 UI라 명함-을 구성할 수 있다.
사용자는 프로젝트 생성 UI를 통해 검증 대상 ECU를 선택할 수 있다. 또한, 사용자는 프로젝트 생성 UI를 통해 선택된 ECU에 탑재된 소프트웨어 컴포넌트들 중 검증 대상 소프트웨어 컴포넌트을 선택할 수도 있다.
구조 분석부(420)는 검증 대상 소프트웨어 컴포넌트의 ELF 파일 및 MAP 파일에 기초하여 검증 대상 소프트웨어의 파일/태스크(또는 모듈)/함수의 계층 구조를 분석할 수 있다.
호출 관계 분석부(430)는 구조 분석부(420)에 의해 분석된 계층 구조에 기초하여 함수 별 호출 관계-즉, 호출함수(Caller)-피호출함수(Callee) 관계-를 분석할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 결함 선택 모듈의 내부 구조를 설명하기 위한 도면이다.
도 5를 참조하면, 결함 선택 모듈(230)은 제2 사용자 인터페이스 제공부(510), 단위 테스트 정보 수집부(520) 및 통합 테스트 정보 수집부(530)를 포함하여 구성될 수 있다.
제2 사용자 인터페이스 제공부(510)는 소프트웨어 단위 테스트 단계와 소프트웨어 통합 테스트 단계 별 결함 주입 코드 생성에 필요한 정보를 사용자로부터 입력 받기 위한 소정 결함 주입 사용자 인터페이스 화면을 구성할 수 있다.
단위 테스트 정보 수집부(520)는 단위 테스트를 위한 결함 주입 코드 생성에 필요한 정보를 수집할 수 있다. 일 예로, 단위 테스트 정보 수집부(520)는 결함을 주입할 단위 함수 또는 전역 변수에 관한 정보, 주입할 결함 유형에 관한 정보 및 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 등을 수집할 수 있다.
통합 테스트 정보 수집부(530)는 통합 테스트를 위한 결함 주입 코드 생성에 필요한 정보를 수집할 수 있다. 일 예로, 통합 테스트 정보 수집부(530)는 통합 테스트에 포함되는 일련의 단위 테스트 및 그것들의 실행 순서에 관한 정보, 결함을 주입할 위치에 관한 정보-예를 들면, Caller와 Callee의 호출 관계에 관한 정보-, 주입할 결함 유형에 관한 정보, 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 등을 수집할 수 있다.
결함 주입 코드 생성 모듈(240)은 단위 테스트 정보 수집부(520) 및(또는) 통합 테스트 정보 수집부(530)에 의해 수집된 결함 선택 정보에 기초하여 단위 테스트를 위한 결함 주입 코드 및 통합 테스트를 위한 결함 주입 코드 중 적어도 하나를 생성하여 제1 메모리(250)에 저장할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 차량용 전자 제어 장치의 구조를 설명하기 위한 도면이다.
도 6을 참조하면, 차량용 전자 제어 장치(20)는 태스크 호출 모니터링 모듈(610), 함수 호출 모니터링 모듈(620), 결함 주입 코드 실행 모듈(630), 제2 메모리(640), 진단 모듈(650), 제2 CAN 통신 모듈(660) 및 제2 제어기(670)을 포함하여 구성될 수 있다.
태스크 호출 모니터링 모듈(610)은 차량용 전자 제어 장치(20) 구동 중 특정 태스크의 호출 여부를 모니터링할 수 있다. 즉, 태스크 호출 모니터링 모듈(610)은 검증 대상 태스크의 호출 여부를 실시간 모니터링하고, 모니터링 결과를 제2 제어기(670)에 제공할 수 있다.
여기서, 태스크는 소프트웨어 컴포넌트 단위로 구분될 수 있으나, 이는 하나의 실시 예에 불과하며, 다른 실시 예에 따른 태스크는 소프트웨어 컴포넌트 내 특정 기능 모듈로 구분될 수 있다. 일 예로, 차량용 전자 제어 장치가 공조기인 경우, 태스크는 공조 소프트웨어 전체일 수 있다. 다른 일 예로, 차량용 전자 제어 장치가 공조기인 경우, 태스크는 공조 소프트웨어 중 난방 기능 모듈, 냉방 기능 모듈, 환기 기능 모듈 등을 포함할 수 있다.
제2 제어기(670)는 태스크 호출 모니터링 모듈(610)의 모니터링 결과에 기초하여 함수 호출 모니터링 모듈(620)이 특정 함수의 호출을 모니터링하도록 제어할 수 있다.
함수 호출 모니터링 모듈(610)은 제2 제어기(670)의 제어 신호에 따라 해당 태스크 내 특정 함수의 호출 여부를 모니터링하고, 모니터링 결과를 제2 제어기(670)에 제공할 수 있다. 여기서, 특정 함수는 결함 주입 코드가 주입되어야 하는 함수-즉, 결함 주입 코드 주입 대상 함수-일 수 있다.
결함 주입 코드 실행 모듈(630)은 제2 제어기(670)의 제어 신호에 따라 결함 주입 코드 주입 대상 함수가 호출되었음을 감지하면, 제2 메모리(640)에 저장된 해당 결함 주입 코드 독출하여 실행시킬 수 있다. 즉, 결함 주입 코드 실행 모듈(630)은 결함이 없는 원래 코드로 구성된 제1 함수의 실행 대신에 결함 주입 코드가 주입된 제2 함수가 실행시킬 수 있다. 여기서, 제1 함수와 제2 함수는 동일한 이름의 동일 변수 타입을 가지는 함수임을 주의해야 한다.
진단 모듈(650)은 제2 CAN 통신 모뎀(660)을 통해 사용자로부터 입력 받은 결함 선택 정보를 호스트 컴퓨터(10)로부터 수신하여 제2 제어기(670)에 제공할 수 있다.
제2 제어기(670)는 결함 선택 정보가 호스트 컴퓨터(10)로부터 수신된 경우, 결함 선택 정보에 기반하여 검증 대상 소프트웨어/태스크/함수를 식별할 수 있다.
제2 제어기(670)는 식별 결과에 따라 태스크 호출 모니터링 모듈(610) 및 함수 호출 모니터링 모듈(620)의 동작을 제어할 수 있다.
또한, 제2 제어기(670)는 제2 통신 모뎀(660) 및 진단 모듈(650)을 통해 결함 주입 코드-즉, 결함 주입 코드가 주입된 함수 코드-를 호스트 컴퓨터(10)로부터 수신할 수 있다. 제2 제어기(670)는 수신된 결함 주입 코드를 제2 메모리(640)에 저장할 수 있다.
제2 통신 모뎀(660)은 호스트 컴퓨터(10)와 CAN 통신을 수행할 수 있다.
제2 제어기(670)는 차량용 전자 제어 장치(20)의 내부 동작 및 입출력을 제어할 수 있다.
일 실시 예에 따른 차량용 전자 제어 장치(20)가 AUTOSAR 표준 플랫폼을 지원하는 경우, 태스크 호출 모니터링 모듈(610), 함수 호출 모니터링 모듈(620), 결함 주입 코드 실행 모듈(630) 및 진단 모듈(650)은 기본 소프트웨어 계층에 탑재될 수 있다. 상세한 내용은 후술할 도면의 설명을 통해 보다 명확해질 것이다.
도 7은 본 발명의 실시 예에 따른 차량용 전자 제어 장치에 구현되는 AUTOSAR 표준 플랫폼의 계층 구조를 도시한다.
도 7에 도시된 바와 같이, AUTOSAR 표준 플랫폼(700)은 크게 AUTOSAR 소프트웨어 컴포넌트가 탑재되는 응용 계층(Application Layer, 710), 하드웨어 계층(Hardware Layer, 740), 하드웨어와 관련된 기본 프로그램이 탑재되는 기본 소프트웨어 계층(BSW(Basic Software) Layer, 730) 및 응용 계층(710)과 기본 소프트웨어 계층(730)을 연결하는 실시간 환경 계층(RTE(Realtime Environment) Layer, 720)을 포함하여 구성된다.
AUTOSAR 소프트웨어 컴포넌트는 단일의 컴포넌트로 구성된 원자(Atomic) 컴포넌트와 두 개 이상의 원자 컴포넌트로 구성된 혼합(Composition) 컴포넌트로 구성된다.
여기서, 원자 컴포넌트는 응용 소프트웨어 컴포넌트, 액츄에이터 소프트웨어 컴포넌트, 센서 소프트웨어 컴포넌트 등과 같은 다수의 소프트웨어 컴포넌트를 포함한다.
응용 소프트웨어 컴포넌트는 해당 시스템의 제어 로직을 처리하고, 센서 컴포넌트는 입력부의 하드웨어 종속적인 인터페이스를 역할을 하며, 액추에이터 컴포넌트는 하드웨어 종속적인 출력부를 관장한다. 이에 따라, 각각의 소프트웨어 컴포넌트가 해당되는 응용 소프트웨어 기능을 구현하는 전자 제어 장치에 매핑되는 기본 단위로서 포트와 인터페이스를 통하여 상호 데이터를 교환한다.
실시간 환경 계층(720)은 각 응용 소프트웨어 컴포넌트 사이 및 응용 계층(710)과 기본 소프트웨어 계층(730) 사이의 정보교환을 위한 역할을 수행한다.
실시간 환경 계층(720)은 하드웨어와 소프트웨어를 분리시키는 역할을 수행하는 것으로서, 응용 소프트웨어 컴포넌트로부터 하드웨어 독립성을 제어하기 위한 계층이며, 소프트웨어 컴포넌트 계층과 하부 소프트웨어 컴포넌트 모듈간의 통신 브릿지 역할과, 소프트웨어 컴포넌트의 요구로부터 해당 전자 제어 장치에 다양한 매핑 과정을 통해 소프트웨어 컴포넌트와 타 컴포넌트 사이의 통신을 담당한다.
실시간 환경 계층(720) 하부에는 기본 소프트웨어 계층(730)이 있으며, 기본 소프트웨어 계층(730)에는 다시 서비스 영역과, EAL(ECU Abstraction Layer), MCAL(Microcontroller Abstraction Layer) 및 CDD(Complex Device Driver) 영역 등으로 구분될 수 있다.
본 발명에서 상술한 AUTOSAR 표준 플랫폼의 계층 구조에서 응용 소프트웨어 컴포넌트의 오류 처리를 검증하기 위한 결함 주입 테스트 자동화 시스템을 설계하기 위해, 소프트웨어 컴포넌트, 태스크, 함수의 상관 관계를 이해할 필요가 있다.
소프트웨어 컴포넌트는 해당 전자 제어 장치에 할당되는 최소의 프로그램 단위이며, 소프트웨어 컴포넌트는 태스크(Task) 단위로 구분되고, 태스크는 다시 최소 기능 단위인 다수개의 함수로 구성될 수 있다. 이에 따라, 소프트웨어 컴포넌트의 실제 실행은 함수 단위로 이루어지며, 결함 주입 관련 설정의 많은 부분이 함수 단위에서 이루어질 수 있다.
함수의 실행은 실시간 환경 계층(RTE)에서 발생되는 각종 이벤트에 의해서 결정될 수 있다. 일 예로, 실시간 환경 계층에서 발생되는 이벤트는 설정된 타이머에 기반하여 주기적으로 발생되는 타이밍 이벤트, 특정 신호의 수신 시 발생되는 데이터 수신 이벤트, 클라이언트-서버 방식에서 사용되는 오퍼레이션 호출 이벤트 등을 포함할 수 있으나, 이에 한정되지는 않는다.
본 발명의 실시 예에 따른 기본 소프트웨어 계층(730)은 도 7에 도시된 바와 같이, 테스트 대상 소프트웨어 컴포넌트의 태스크 및 함수의 호출을 모니터링하는 모니터링 모듈(731), CAN 통신을 통해 사용자에 의해 입력된 결함 선택 정보 및 결함 주입 코드를 수신하는 진단 모듈(732) 및 실제 결함이 주입된 코드를 실행하는 결함 주입 코드 실행 모듈(733)이 탑재될 수 있다.
여기서, 결함 선택 정보는 결함 주입 대상 소프트웨어 컴포넌트 정보, 결함 주입 태스크 정보, 결함 주입 함수 정보, 결함 주입 대상 파라메터 위치 정보, 결함 주입 대상 파라메터 혹은 변수의 크기 정보, 결함 유형에 관한 정보, 결함 주입을 위한 변경 값 정보, 결함 주입 횟수에 관한 정보 중 적어도 하나를 포함할 수 있다.
모니터링 모듈(731)은 해당 전자 제어 장치에서의 검증 대상 소프트웨어 실행 중 결함 선택 정보에 기반하여 결함 주입 대상 태스크 및 함수 호출을 식별할 수 있다.
모니터링 모듈(731)은 결함 주입 대상 태스크 및 함수의 호출 여부를 모니터링하고, 모니터링 결과에 기반하여 결함 주입 대상 함수에 대응하여 미리 생성된 결함 주입 코드의 실행 여부를 판단할 수도 있다.
모니터링 모듈(731)은 태스크 단위로 모니터링을 수행할 수 있다. 하나의 태스크는 여러 함수 호출이 시간 단위로 묶인 그룹이므로, 모니터링 모듈(731)은 태스크의 실행 전에 사용자가 해당 태스크에 대해 결함 주입을 선택하였는지 여부를 확인할 수 있다.
만약, 해당 태스크에 대한 결함 주입이 선택된 경우, 모니터링 모듈(731)은 해당 태스크 내에서의 함수의 호출 관계를 모니터링하여 사용자 입력된 결함 주입 위치를 식별할 수 있다. 즉, 모니터링 모듈(731)은 해당 태스크 내에서의 함수의 실행 흐름을 모니터링할 수 있다. 여기서, 모니터링 대상 함수는 피호출함수(Callee Function)이다. 모니터링 모듈(731)은 피호출함수의 스택을 추적하여 피호출함수를 호출한 호출함수(Caller Function)을 확인할 수 있다. 모니터링 모듈(731)은 호출함수와 피호출함수의 관계가 사용자로부터 입력된 결함 주입 위치에 대응되는지를 판단할 수 있다.
결함 주입 코드 실행 모듈(733)은 결함 선택 정보에 기반하여 결함 주입 대상 태스크 및 함수를 식별할 수 있으며, 모니터링 모듈(731)에 의해 결함 주입 대상 함수의 호출이 감지되면, 감지된 함수의 해당 위치에서 해당 파라메터 또는 변수가 변경된 결함 주입 코드를 생성하여 실행시킬 수 있다.
다른 일 예로, 모니터링 모듈(731)에 의해 결함 주입 대상 태스크 및 함수의 호출이 확인된 경우, 결함 주입 코드 실행 모듈(733)은 미리 생성된 결함 주입 코드를 실행시킬 수도 있다. 여기서, 결함 주입 코드는 호스트 컴퓨터(10)로부터 사전 수신되어 소정 기록 영역에 유지될 수 있다.
즉, 결함 주입 코드 실행 모듈(733)은 모니터링 모듈(731)로부터 현재 호출된 함수가 결함 주입 대상임을 판정 받은 후 실제 결함이 주입된 코드를 실행시킬 수 있다.
사용자로부터 결함 선택 정보를 입력 받기 위해 결함 선택 정보를 저장하기 위한 특정 자료 구조가 진단 모듈(731)에 정의될 수 있다.
기본 소프트웨어 계층(730)이 활성화되면, 결함 선택 정보를 저장하기 위한 자료 구조를 정의하고, 해당 자료 구조에 대한 읽기 함수와 쓰기 함수를 추가하는 CAN 진단 모듈 설정 과정이 수행될 수 있다.
도 8은 본 발명의 일 실시 예에 따른 차량용 전자 제어 장치에 탑재되는 소프트웨어의 검증을 위한 동적 결함 주입 방법을 설명하기 위한 순서도이다.
도 8을 참조하면, 전자 제어 장치는 해당 전자 제어 장치의 검증 대상 소프트웨어를 실행시킬 수 있다(S810). 여기서, 검증 대상 소프트웨어는 해당 전자 제어 장치가 구동되면, 자동으로 실행될 수 있으나, 이는 하나의 실시 예에 불과하며, 다른 실시 예는 외부 호스트 컴퓨터 또는 외부 진단기의 제어 신호에 따라 해당 검증 대상 소프트웨어가 실행될 수도 있다.
전자 제어 장치는 사용자로부터 결함 선택 정보가 입력되었는지 확인할 수 있다(S820). 여기서, 사용자로부터 입력 받은 결함 선택 정보는 CAN 통신을 통해 전자 제어 장치에 전달될 수 있다.
확인 결과, 결함 선택 정보가 입력된 경우, 전자 제어 장치는 태스크 및 함수 호출 관계를 추적하여 결함 주입 대상을 모니터링할 수 있다(S830).
전자 제어 장치는 상기 모니터링을 통해 결함 주입 대상을 감지할 수 있다(S840).
감지 결과, 결함 주입 대상이 감지된 경우, 전자 제어 장치는 결함 주입 코드를 실행시킬 수 있다(S850). 여기서, 결함 주입 코드는 상기 결함 주입 정보의 입력에 따라 전자 제어 장치내에서 미리 생성되어 소정 기록 영역에 저장될 수 있다.
전자 제어 장치는 결함 선택 정보에 기반하여 결함 주입이 반복적인지 판단할 수 있다(S860).
판단 결과, 반복적이면, 전자 제어 장치는 상기한 850 단계로 회귀하여 결함 주입 코드를 반복 실행시킬 수 있다.
상기한 840 단계의 판단 결과, 결함 주입 대상이 감지되지 않은 경우, 전자 제어 장치는 상기 830 단계를 수행할 수 있다.
또한, 상기한 820 단계의 판단 결과, 결함 선택 정보가 입력되지 않았거나, 상기한 860 단계의 판단 결과, 결함 주입이 반복적으로 설정되지 않은 경우, 상기한 810 단계로 회귀하여 결함이 주입되지 않은 원본 코드를 실행시킬 수 있다.
이상에서 설명한 바와 같이, 본 발명은 ISO 26263 Part 6에 해당하는 차량용 소프트웨어의 단위 테스트 단계 및 통합 테스트 단계에서의 결함 주입 테스트를 지원할 수 있는 장점이 있다.
또한, 본 발명은 차량용 소프트웨어 단위/통합 테스트 단계에서 기능 안전을 검증하고자 할 때, 사용자가 결함 주입 대상 함수 및 함수 호출 관계, 결함 주입할 유형 및 결함 주입 반복 회수 등을 동적으로 선택 가능하게 함으로써, 다양한 기능 안전 시나리오에 대해 검증이 효율적으로 수행될 수 있다.
또한, 본 발명은 결함 유형에 대한 데이터를 고정시키지 않고, 외부 통신-예를 들면, CAN 통신-을 통해 사용자에 의해 선택된 다양한 결함 데이터를 동적으로 다양하게 주입할 수 있으므로, 다양한 결함 제어 기능을 테스트할 수 있는 장점이 있다.
또한, 본 발명은 차량용 소프트웨어 검증을 위해 별도의 원본 소프트웨어의 코드 변경이 필요 없을 뿐만 아니라 주입하는 결함에 따라 결함 주입된 소프트웨어 이미지가 여러 개 생성되지 않고, 하나의 소프트웨어 이미지에서 서로 다른 종류의 결함 주입이 가능하므로 테스트 효율을 높일 수 있는 장점이 있다.
상기와 같이 설명된 동적 결함 주입 방법은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 해당 장치에 다운로드되어 실행될 수도 있다.
또한, 상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 차량용 전자 제어 장치에 탑재되는 소프트웨어를 검증하는 호스트 컴퓨터에 있어서,
    상기 전자 제어 장치에 탑재되는 검증 대상 소프트웨어에 대한 실험 모델을 생성하는 실험 모델 생성 모듈;
    상기 검증 대상 소프트웨어의 함수 호출 관계를 확정하는 호출 관계 분석 모듈;
    사용자로부터 상기 검증 대상 소프트웨어에 주입할 결함 정보를 입력 받아 결함 선택 정보를 생성하는 결함 선택 모듈;
    상기 결함 선택 정보 및 상기 확정된 함수 호출 관계에 기반하여 결함 주입 코드를 생성하는 결함 주입 코드 생성 모듈; 및
    상기 결함 선택 정보 및 상기 결함 주입 코드를 상기 전자 제어 장치로 전송하는 제1 통신 모뎀을 포함하며,
    상기 실험 모델 생성 모듈은
    상기 검증 대상 소프트웨어에서 발생할 수 있는 오류 유형을 기반으로 결함 주입 위치를 추출하는 수단;
    상기 추출된 결함 주입 위치에 결함 유형을 적용하는 수단;
    결함 주입 테스트가 자동화되도록 설정하는 수단;
    상기 결함 유형 별 자동화 가능 여부를 판단하는 수단; 및
    상기 판단 결과에 따라 상기 자동화가 불가능한 결함 유형을 제외하여 결함 주입 시나리오를 설정하는 수단
    을 포함하는 호스트 컴퓨터.
  2. 삭제
  3. 제1항에 있어서,
    상기 결함 주입 위치는 상기 검증 대상 소프트웨어의 단위 및 통합 테스트 단계 별로 뮤테이션(Mutation) 연산자를 적용하여 추출되는 호스트 컴퓨터.
  4. 제1항에 있어서,
    상기 결함 유형은 데이터 오류(Data Error), 프로그램 흐름 오류(Program Flow Error), 접근 오류(Access Error), 타이밍 오류(Timing Error) 및 비대칭 오류(Asymmetric Error)를 포함하는 호스트 컴퓨터.
  5. 제1항에 있어서,
    상기 결함 선택 정보는 결함이 주입될 위치를 식별하기 위한 정보, 주입될 결함 유형을 식별하기 위한 정보, 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 중 적어도 하나를 포함하는 호스트 컴퓨터.
  6. 제1항에 있어서,
    상기 결함 주입 코드는 상기 결함 선택 정보에 따라 단위 테스트를 위한 결함 주입 코드 및 통합 테스트를 위한 결함 주입 코드 중 적어도 하나를 포함하는 호스트 컴퓨터.
  7. 제1항에 있어서,
    상기 호출 관계 분석 모듈은
    프로젝트 생성을 위한 사용자 인터페이스 화면을 구성하는 제1 사용자 인터페이스 제공부;
    상기 검증 대상 소프트웨어를 구성하는 파일, 태스크(Task) 및 함수 등의 계층 구조를 분석하는 구조 분석부; 및
    상기 분석된 계층 구조에 기반하여 호출함수(Caller)와 피호출함수(Callee)의 관계를 분석하는 호출 관계 분석부
    를 포함하는 호스트 컴퓨터.
  8. 제1항에 있어서,
    상기 결함 선택 모듈은
    소프트웨어 단위 테스트 단계와 소프트웨어 통합 테스트 단계 별 결함 주입 코드 생성에 필요한 정보를 사용자로부터 입력 받기 위한 소정 결함 주입 사용자 인터페이스 화면을 구성하는 제2 사용자 인터페이스 제공부;
    상기 단위 테스트를 위한 결함 주입 코드의 생성에 필요한 제1 정보를 수집하는 단위 테스트 정보 수집부; 및
    상기 통합 테스트를 위한 결함 주입 코드의 생성에 필요한 제2 정보를 수집하는 통합 테스트 정보 수집부
    를 포함하는 호스트 컴퓨터.
  9. 제8항에 있어서,
    상기 제1 정보는 결함을 주입할 단위 함수 또는 전역 변수에 관한 정보, 주입할 결함 유형에 관한 정보 및 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 중 적어도 하나를 포함하는 호스트 컴퓨터.
  10. 제8항에 있어서,
    상기 제2 정보는 상기 통합 테스트에 포함되는 일련의 상기 단위 테스트 및 그것들의 실행 순서에 관한 정보, 결함을 주입할 위치에 관한 정보, 주입할 결함 유형에 관한 정보 및 결함 주입 횟수에 관한 정보, 변경될 파라메터, 레지스터 및(또는) 변수의 값에 관한 정보 중 적어도 하나를 포함하는 호스트 컴퓨터.
  11. 제1항의 상기 호스트 컴퓨터와 연동하여 내부 탑재된 소프트웨어를 검증하는 차량용 전자 제어 장치에 있어서,
    상기 호스트 컴퓨터로부터 결함 선택 정보 및 상기 결함 선택 정보에 기초하여 생성된 결합 주입 코드를 수신하는 진단 모듈;
    상기 결함 선택 정보에 기초하여 검증 대상 소프트웨어를 식별하고, 상기 식별된 검증 대상 소프트웨어 내 결함을 주입할 태스크와 함수를 식별하는 제2 제어기;
    상기 식별된 태스크 호출을 모니터링하는 태스크 호출 모니터링 모듈;
    상기 식별된 태스크 호출이 감지되면, 상기 식별된 함수의 호출을 모니터링하는 함수 호출 모니터링 모듈; 및
    상기 식별된 함수의 호출이 감지되면, 상기 결합 주입 코드를 실행시키는 결함 주입 코드 실행 모듈
    을 포함하는 차량용 전자 제어 장치.
  12. 제11항에 있어서,
    상기 차량용 전자 장치에 탑재된 소프트웨어는 AUTOSAR(AUTomotive Open System Architecture) 표준 플랫폼에서 실행되는 소프트웨어인 차량용 전자 제어 장치.
  13. 제12항에 있어서,
    상기 AUTOSAR 표준 플랫폼은 실시간 환경 계층과 하드웨어 계층 사이에 배치되는 기본 소프트웨어 계층을 포함하고,
    상기 진단 모듈, 상기 태스크 호출 모니터링 모듈, 상기 함수 호출 모니터링 모듈 및 결함 주입 코드 실행 모듈은 상기 기본 소프트웨어 계층에 탑재되는 차량용 전자 제어 장치.
  14. 제12항에 있어서,
    상기 진단 모듈은 CAN 통신을 통해 상기 결함 선택 정보 및 상기 결함 주입 코드를 수신하는 차량용 전자 제어 장치.
  15. 제12항에 있어서,
    상기 결함 주입 코드는 상기 결함 선택 정보에 따라 단위 테스트를 위한 결함 주입 코드 및 통합 테스트를 위한 결함 주입 코드 중 적어도 하나를 포함하는 차량용 전자 제어 장치.
  16. 검증 대상 소프트웨어의 함수 호출 관계를 분석하고, 사용자로부터 입력 받은 결함 선택 정보 및 상기 분석된 함수 호출 관계에 기초하여 결함 주입 코드를 생성하는 제1항의 상기 호스트 컴퓨터; 및
    상기 호스트 컴퓨터로부터 CAN 통신을 통해 상기 결함 선택 정보 및 상기 결함 주입 코드를 수신하고, 상기 검증 대상 소프트웨어 실행 시 상기 결함 선택 정보에 기반하여 식별된 태스크 및 함수를 모니터링하여 상기 결함 주입 코드를 실행시키는 차량용 전자 제어 장치
    를 포함하는 차량용 소프트웨어 검증 시스템.
  17. 제16항에 있어서,
    상기 차량용 전자 제어 장치는
    상기 호스트 컴퓨터로부터 상기 결함 선택 정보 및 상기 결함 주입 코드를 수신하는 진단 모듈;
    상기 결함 선택 정보에 기초하여 식별된 태스크 및 함수의 호출을 모니터링하는 모니터링 모듈; 및
    상기 식별된 태스크 및 함수의 호출이 감지되면, 상기 결함 주입 코드를 실행시키는 결함 주입 코드 실행 모듈
    을 포함하는 차량용 소프트웨어 검증 시스템.
  18. 제17항에 있어서,
    상기 검증 대상 소프트웨어는 AUTOSAR(AUTomotive Open System Architecture) 표준 플랫폼에서 실행되는 소프트웨어인 차량용 소프트웨어 검증 시스템.
  19. 제18항에 있어서,
    상기 AUTOSAR 표준 플랫폼은 실시간 환경 계층과 하드웨어 계층 사이에 배치되는 기본 소프트웨어 계층을 포함하고,
    상기 진단 모듈, 상기 모니터링 모듈 및 상기 결함 주입 코드 실행 모듈은 상기 기본 소프트웨어 계층에 탑재되는 차량용 소프트웨어 검증 시스템.
  20. 제16항에 있어서,
    상기 호스트 컴퓨터는
    상기 차량용 전자 제어 장치에 탑재되는 상기 검증 대상 소프트웨어에 대한 실험 모델을 생성하는 실험 모델 생성 모듈;
    상기 검증 대상 소프트웨어의 함수 호출 관계를 확정하는 호출 관계 분석 모듈;
    상기 사용자로부터 상기 검증 대상 소프트웨어에 주입할 결함 정보를 입력 받아 상기 결함 선택 정보를 생성하는 결함 선택 모듈;
    상기 결함 선택 정보 및 상기 확정된 함수 호출 관계에 기반하여 상기 결함 주입 코드를 생성하는 결함 주입 코드 생성 모듈; 및
    상기 결함 선택 정보 및 상기 결함 주입 코드를 상기 CAN 통신을 통해 상기 차량용 전자 제어 장치로 전송하는 제1 통신 모뎀
    을 포함하는 차량용 소프트웨어 검증 시스템.
KR1020180080863A 2018-07-12 2018-07-12 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치 KR102537875B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180080863A KR102537875B1 (ko) 2018-07-12 2018-07-12 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180080863A KR102537875B1 (ko) 2018-07-12 2018-07-12 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200007133A KR20200007133A (ko) 2020-01-22
KR102537875B1 true KR102537875B1 (ko) 2023-05-30

Family

ID=69368080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180080863A KR102537875B1 (ko) 2018-07-12 2018-07-12 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102537875B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102269546B1 (ko) * 2020-02-26 2021-06-28 슈어소프트테크주식회사 결함 주입 장치
CN111666563B (zh) 2020-06-05 2023-07-18 北京百度网讯科技有限公司 用于验证应用运行状态的方法及装置
CN111737142A (zh) * 2020-06-30 2020-10-02 湖南国科微电子股份有限公司 测试方法、装置及计算机可读存储介质
CN112631847A (zh) * 2020-12-28 2021-04-09 深圳市路畅科技股份有限公司 一种智能车机自动化测试系统、方法及其应用
CN114690741A (zh) * 2020-12-31 2022-07-01 观致汽车有限公司 车辆的控制器测试系统与方法、电子设备、可读存储介质
CN112783736B (zh) * 2021-03-01 2024-04-19 苏州挚途科技有限公司 软件组件的运行体时间监测方法、装置及电子设备
KR20230161172A (ko) 2022-05-18 2023-11-27 박영민 농업용 호스 가이드 장치
CN116881174B (zh) * 2023-09-08 2023-11-14 富钛字节车载软件(长春)有限公司 一种ecu应用软件闭环测试方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101019210B1 (ko) * 2007-04-25 2011-03-04 이화여자대학교 산학협력단 이뮬레이트를 활용한 임베디드 소프트웨어 테스트 장치 및그 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JOHAN HARALDSSON외 1명, "Software implemented fault injection for AUTOSAR based systems", Master of Science Thesis Software Engineering and Technology Programme, pp.1-42,(2012.6.30.)*
이상호외 1명, "ISO 26262 표준 기반의 소프트웨어 검증을 위한 소프트웨어 결함 주입 기법", Transactions of the Korean Society of Automotive Engineers Volume 22 Issue 3, pp.68-74,(2014.4.1.)*

Also Published As

Publication number Publication date
KR20200007133A (ko) 2020-01-22

Similar Documents

Publication Publication Date Title
KR102537875B1 (ko) 차량 ecu 소프트웨어 검증을 위한 동적 결함 주입 방법 및 장치
US8156475B2 (en) Device and method for testing embedded software using emulator
US6002869A (en) System and method for automatically testing software programs
CN111756575A (zh) 存储服务器的性能分析方法及装置、电子设备
US10585668B2 (en) Processor testing using randomly generated branch instructions
US6298317B1 (en) Enhanced functional testing through the filtration of non-subtle mutations
CN104156311B (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
KR102141287B1 (ko) Autosar 기반 차량 소프트웨어의 결함 테스트 방법 및 결함 테스트 시스템
CN112181800A (zh) 车辆功能测试装置及其控制方法
CN107562621B (zh) 确定手工测试用例与被测试代码关联关系的方法和装置
CN107045474B (zh) 一种Fuzz测试中的程序流跟踪方法及装置
CN110610089A (zh) 用户行为模拟方法、装置及计算机设备
US20140229923A1 (en) Commit sensitive tests
CN101706752B (zh) 一种软件错误现场定位的方法及装置
CN113094251B (zh) 嵌入式系统测试方法、装置、计算机设备和存储介质
US8997048B1 (en) Method and apparatus for profiling a virtual machine
US8739091B1 (en) Techniques for segmenting of hardware trace and verification of individual trace segments
US9507690B2 (en) Method and device for analyzing an execution of a predetermined program flow on a physical computer system
US11899561B2 (en) Method for operating a control unit when testing software of the control unit, and method for operating a test computer when testing software of a control unit
KR20120111618A (ko) Plc 명령어 테스트 장치 및 방법
JP4957521B2 (ja) ソフトウェア部分テストシステム、それに用いる方法およびプログラム
US7546589B2 (en) Semi-automated desk checking system and method
CN112527571B (zh) 一种cpu指令集覆盖率计算方法及装置
KR101174716B1 (ko) 장비 검증 장치 및 시스템
US7831879B2 (en) Generating test coverage bin based on simulation result

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