기능안전_기본이론

fault injection

아즈마민초 2025. 9. 1. 17:32

ISO 26262나 ASPICE 표준을 잘 준수하기 위해서 테스트 단계에서 Fault injection이라는 테스트 기법을 수행하는게 있는거로 알고 있는데, 이 테스트는 다른 테스트와 다르게 어떻게 진행되는지? 이 테스트의 특성 및 설명을 자세하게 해줘

 

ISO 26262 또는 ASPICE 표준을 준수하기 위해 수행되는 결함 주입(Fault Injection) 테스트는 일반적인 테스트와 달리, 시스템에 의도적으로 결함을 주입하여 그에 대한 시스템의 안전 메커니즘이 올바르게 작동하는지 검증하는 기법입니다.


결함 주입 테스트의 특징 및 설명

1. 테스트 목적: 안전 메커니즘의 검증 일반적인 테스트(예: 기능 테스트, 성능 테스트)는 시스템이 정상적인 조건에서 요구사항을 만족하는지 확인하는 것이 주된 목적입니다. 반면, 결함 주입 테스트는 시스템이 예상치 못한 고장이나 오류(fault) 상황에 직면했을 때, 미리 설계된 안전 메커니즘 (예: 안전 상태로 전환, 경고 발생 등)이 효과적으로 작동하는지 확인하는 데 초점을 둡니다. 이는 ISO 26262가 요구하는 **기능 안전성(Functional Safety)**을 입증하는 핵심적인 활동입니다.

2. 테스트 진행 방식: 의도적인 고장 유도 결함 주입은 하드웨어, 소프트웨어, 또는 환경적 요인 등 다양한 수준에서 의도적으로 고장을 일으킵니다. 그 방식은 다음과 같이 나뉩니다.

  • 하드웨어 결함 주입: 물리적 결함을 시뮬레이션합니다. 예를 들어, 전압을 조작하거나, 특정 핀의 신호를 단락시키거나, 메모리 비트를 의도적으로 뒤집는 등의 방법을 사용합니다.
  • 소프트웨어 결함 주입: 코드 내의 특정 변수 값을 조작하거나, 함수 호출을 강제로 실패하게 만들거나, 메모리 영역에 비정상적인 데이터를 쓰는 등의 방법으로 소프트웨어 오류를 유발합니다. 예를 들어, 오류 주입 라이브러리를 사용하거나, 특정 API 호출의 반환 값을 강제로 오류 코드로 변경하는 방식 등이 있습니다.
  • 환경적 결함 주입: 온도, 습도, 진동 등 시스템 외부의 환경적 스트레스를 인가하여 고장을 유도합니다.

3. 테스트 결과 분석: 고장 반응 확인 결함이 주입된 후, 시스템의 반응을 면밀히 관찰하고 분석합니다. 주요 확인 사항은 다음과 같습니다.

  • 결함 감지: 시스템이 주입된 결함을 제대로 감지했는지?
  • 안전 메커니즘 활성화: 결함을 감지한 후, 사전에 정의된 안전 메커니즘(예: 안전 상태로의 전환, 고장 감지 루틴 실행)이 예상대로 작동했는지?
  • 안전 상태 진입: 시스템이 위험한 상태(Hazardous state)로 넘어가지 않고, 안전한 상태(Safe state)로 진입했는지?
  • 고장 허용(Fault Tolerance): 일부 시스템은 고장이 발생하더라도 기능 일부를 유지하는 능력을 가져야 하는데, 이 능력이 정상적으로 발휘되는지?

4. 결론 결함 주입 테스트는 시스템의 견고성과 안전 메커니즘의 신뢰성을 확보하는 데 필수적인 기법입니다. 이는 단순히 기능이 잘 작동하는 것을 넘어, 예기치 않은 고장 상황에서도 시스템이 안전을 유지하도록 보장함으로써 ISO 26262와 같은 안전 표준을 만족하는 데 중요한 역할을 합니다.