검색 상세

자동차 ECU SW를 위한메모리 갱신정보를 이용한결함위치추정 기법

A Fault Localization Method Using Memory Update Information for Automotive ECU Software

초록/요약

자동차 산업에서는 자동차 소프트웨어의 품질을 보장하기 위해 자동차 기능 안전성 국제 표준(ISO 26262)에 따라 단위와 통합 테스트 단계에서 Hardware-in-the-Loop(HiL) 테스트를 수행한다. HiL 테스트는 테스트 스크립트의 시나리오에 따라 시뮬레이터가 입력에 대한 출력을 평가하는 black-box 테스트이고, 소스코드 없이 자동으로 진행하기 때문에 발생한 결함과 관련된 정보를 얻기 힘들다. 따라서 검사자가 발견한 결함을 수정하는 개발자는 결함 수정에 많은 시간과 노력이 필요하다. 만약 테스트를 수행하며 결함과 관련해 결함의 발생 시점과 원인이 되는 메모리 정보를 제공할 수 있다면 개발자의 결함 수정은 용이해진다. 본 연구에서는 HiL 환경의 통합 테스트에서 발견된 ECU 소프트웨어의 결함에 대해 메모리를 수집하고 분석하여 결함의 발생 시기와 위치를 찾을 수 있는 방법을 제안한다. MISRA-C 코딩 가이드라인에 따라 메모리를 정적으로 할당하는 차량용 소프트웨어 중에서 동일한 조건에서 항상 일정하게 동작하는 제어 기능의 소프트웨어는 메모리에 실행 흔적이 남게 된다. 그러므로 메모리를 주기적으로 관찰하면 소프트웨어의 실행 이력을 확인할 수 있고, 결함이 발생했을 때 그 원인을 찾을 수 있다. 따라서 본 연구는 메모리 갱신 정보를 이용한 결함 위치추정 방법을 다음과 같은 순서로 제안한다. 첫째, HiL 테스트가 진행되는 중에 차량용 인터페이스를 이용하여 메모리를 주기적으로 수집하는 방법을 제안한다. 기존 차량용 네트워크의 대역폭은 메모리 전체를 주기적으로 전송하기에는 부족하다. 개발이 완료된 ECU의 하드웨어 수정 없이도 메모리를 손실 없이 주기적으로 수집할 수 있는 새로운 방법이 필요하다. 둘째, 수집한 메모리의 분석을 위해 테스트의 수행 조건 등의 테스트 메타 정보와 ECU의 실행 파일을 정적분석하여 획득한 정보를 이용하여 메모리 갱신 정보를 획득하는 방법을 제안한다. 소스코드 없이 블랙박스 상태에서 진행되는 통합 테스트에서 발생한 결함의 원인을 찾을 수 있도록 수집한 메모리의 사용 여부를 알 수 있는 방법과 갱신된 메모리와 기능과의 관계를 분석할 수 있는 방법이 필요하다. 셋째, 메모리 갱신 정보를 이용해 결함의 원인을 찾는 방법을 제안한다. 먼저, 기능의 정상 동작에 필요한 주소들을 비교해서 이상 동작한 주소를 찾는 방법을 제안한다. 다음으로 제안한 방법을 개선하여 기능이 정상 동작할 때의 메모리 갱신 패턴을 학습시키고, 결함이 발생했을 때의 패턴을 비교하여 결함이 발생한 시점까지 제시하는 방법으로 확장한다. 정상 동작했던 단위 테스트에서 정상 동작의 기준을 획득하면, 결함이 발생한 통합 테스트와 비교하면 결함의 원인을 찾을 수 있다. 제안하는 기법의 평가를 위해 OSEK/VDX 기반의 ECU의 HiL 테스트 환경을 구축하였다. HiL 환경에서 시스템의 동작에 주는 영향을 고려하며 주기적으로 메모리를 수집하고 디버깅 도구와 비교하여 수집 방법을 평가하였다. 다음으로 돌연변이 기법을 이용하여 노드 간의 통신, 기능의 연계, 단일 기능의 연속적인 상태 변경 등의 상황에서 발생하는 결함을 주입하고 결함 위치추정 기법을 적용하였다. 실험 결과, 주입한 결함의 80%에 대해 평균 두 수집주기 이내에서 발생 시점을 제시할 수 있었고, 사용한 메모리 주소의 평균 3.28%의 주소만 확인하는 것으로 결함의 원인을 찾을 수 있었다. 즉 디버깅 도구나 소스코드 없이 차량용 소프트웨어의 HiL 테스트에서 발생한 결함에 대해 정상 동작의 갱신 특징이나 갱신 패턴 같은 메모리 갱신 정보를 이용하여 결함의 원인을 찾을 수 있다는 것을 확인하였다. 결과적으로 제안하는 메모리 갱신 정보를 이용한 결함 위치추정 기법을 사용하면 HiL 테스트 환경에서 발생하는 결함에 대해 결함 발생시점과 결함 의심 주소들을 제공하는 것이 가능하다. 이 정보를 통해 디버깅에서 결함을 찾는 시간을 줄일 수 있다.

more

목차

본문차례(List of Text)

1. 서론 1
1.1. 연구 배경 1
1.2. 연구 목표 및 내용 3
1.2.1. 연구 목표 3
1.2.2. 연구 내용 5
1.2.3. 연구 범위 7
1.3. 논문의 구성 8

2. 관련연구 10
2.1. Hardware in the Loop 테스트 10
2.2. 소프트웨어 결함 위치추정 기법 11
2.2.1. 코드 커버리지 기반 결함 위치추정 12
2.2.2. 돌연변이 기반 결함 위치추정 13
2.2.3. 테스트 케이스 기반 결함 위치추정 14
2.2.4. 메모리를 이용한 결함 위치추정 14
2.3. 학습을 통한 결함 위치추정 기법 15
2.3.1. 결함 위치추정에서 순차 패턴 마이닝 16
2.3.2. CNN을 이용한 결함 위치추정 17
2.4. CAN 통신을 이용한 대용량 데이터 전송 18

3. CAN 통신 기반 대용량 메모리 수집 방법 20
3.1. Cascading 분할 전송 방법 20
3.2. Cascading 프로토콜 정의 24
3.3. 수집 시스템 설계 25
3.3.1. 데이터 수집기 26
3.3.2. 전송 에이전트 27
3.4. 구현 및 평가 28

4. 결함 위치추정을 위한 전처리 32
4.1. 결함 위치추정 프로세스 32
4.2. 데이터 수집 및 분석 35
4.2.1. 테스트 메타정보 분석 35
4.2.2. 소프트웨어 정적분석 37
4.2.3. 메모리 갱신 정보 분석 40
4.3. 입력에 의한 소프트웨어 실행 구간 식별 43
4.3.1. 갱신 빈도의 추세 변화를 이용한 방법 44
4.3.2. 갱신 규칙을 이용한 방법 45

5. 결함 위치추정 기법 49
5.1. 메모리 갱신 정보를 이용한 결함후보 제시 기법 49
5.1.1. 메모리 갱신 정보를 이용한 결함 위치추정 프로세스 49
5.1.2. 단위 테스트의 메모리 갱신 정보 50
5.1.3. 정상 동작과 결함 동작의 메모리 갱신 비교 52
5.2. 메모리 갱신 패턴 학습을 통한 결함시점 및 후보 제시 기법 56
5.2.1. 메모리 갱신 패턴을 이용한 결함 위치추정 프로세스 57
5.2.2. 메모리 갱신 패턴 마이닝 60
5.2.3. 메모리 갱신 패턴의 이미지 파일로 변환 및 특징 레이블링 62
5.2.4. 갱신 특징 학습 65
5.2.5. 결함 지역화 방법 67

6. 실험 및 평가 73
6.1. 실험 환경 구성 73
6.1.1. HiL 환경 구성 73
6.1.2. 결함 주입 80
6.2. 메모리 갱신 정보를 이용한 결함 위치추정 결과 85
6.2.1. 고정된 심볼로 인한 결함의 경우(결함 #1번) 85
6.2.2. 잘못된 값으로 갱신된 결함의 경우(결함 #12번) 87
6.2.3. 실험 결과 89
6.3. 메모리 갱신 패턴을 이용한 결함 위치추정 결과 90
6.3.1. 갱신 패턴 마이닝과 특징 학습 90
6.3.2. 끊어진 시퀀스의 결함인 경우(결함 #1번) 93
6.3.3. 예상하지 못한 시퀀스의 결함인 경우(결함 #12번) 95
6.3.4. 실험결과 96
6.4. 평가 98

7. 결론 101
참고문헌 104

more