Skip to main content

Software-in-the-Loop 시뮬레이션 기반의 임베디드 소프트웨어의 견고성 테스팅

· 3 min read
정수용
백태산
황병일
이우진
담당교수

논문 정보

  • 제목: A Testing on Robustness of Embedded Software Based on Software-in-the-Loop Simulation
  • 저자: 정수용, 백태산, 황병일, 이우진 (경북대학교 컴퓨터학부)
  • 학회/저널: 한국컴퓨터정보학회 하계학술대회 논문집 제23권 제2호
  • 발행일: 2015-07
  • 주요 연구 내용: 임베디드 소프트웨어 개발 단계에서 실물 하드웨어 없이 PC 환경에서 견고성을 테스트할 수 있는 SiL(Software-in-the-Loop) 기반의 시뮬레이션 환경과 방법론을 제안한다.
  • 주요 결과 및 결론: 소프트웨어 설계 문서를 기반으로 테스트 케이스를 생성하고 고장 유형을 분류하여, 테스트 결과를 바탕으로 소프트웨어의 견고성을 0과 1 사이의 객관적인 수치로 산출하는 기법을 구현하였다.
  • 기여점: 기존 기능 위주의 테스팅을 확장하여 견고성을 정량적으로 측정할 수 있는 지표를 제시하고, 가상 환경을 통해 물리적 사고 위험 없이 조기 검증이 가능함을 보였다.

요약

초록

임베디드 소프트웨어에서 중대한 고장 없이 유연하게 대처하는 성질인 견고성(Robustness)은 매우 중요하다. 본 논문은 실물 시스템 테스트의 물리적 한계를 극복하기 위해 Software-in-the-Loop(SiL) 시뮬레이션을 활용한 견고성 테스팅 환경 구축 방법을 제시한다. 설계 문서를 바탕으로 테스트 케이스를 생성하고, 가상 시뮬레이션 환경에서 이를 실행하여 소프트웨어의 견고성을 객관적인 수치로 표현하는 방법을 제안한다.

서론

임베디드 소프트웨어는 센서 및 액추에이터를 통해 외부 환경과 상호작용하므로 비정상 입력이나 오류에 노출되기 쉽다. 이러한 오류가 실제 하드웨어 고장이나 인적/물적 상해로 이어지는 것을 방지하기 위해 견고성 확보가 필수적이다. 본 연구는 소스 코드를 PC 환경에서 테스트하는 SiL 시뮬레이션 및 가상 프로토타입 기술을 기반으로, 코드의 견고성을 측정하고 수치화하는 방법을 제안한다.

방법론

본 논문에서 제안하는 SiL 기반 견고성 측정 방법은 크게 세 단계로 구성된다.

  1. 테스트 케이스 생성: 시스템 설계 문서(요구 사항, 하드웨어 제약 등)를 기반으로 경계값 분석(Boundary Value Analysis) 기법을 적용하여 입력값과 기대 출력값 쌍을 생성한다. 정상 범위를 벗어난 비정상 입력에 대해서도 테스트 케이스를 생성한다.
  2. 고장 분류 및 확장: 하드웨어 사양을 바탕으로 소프트웨어의 오류가 발생했을 때의 상황을 두 가지로 분류한다.
    • 고장(Failure): 기댓값을 벗어나지만 하드웨어 수용 범위 내인 경우.
    • 중대한 고장(Serious Failure): 하드웨어 수용 범위를 벗어나 시스템이나 환경에 상해를 줄 수 있는 경우.
  3. 시뮬레이션 및 테스팅 환경: 임베디드 시스템을 대신하여 PC에서 구동되는 가상 프로토타입과 가상 드라이버를 구성하고, Message Broker를 통해 테스팅 도구와 연동한다.

견고성 수치화 수식: 테스트 실행 결과를 바탕으로 견고성을 0과 1 사이의 값으로 수치화한다.

Robustness=1xQ(P(x)FS(x)S(x)+F(x))Robustness = 1 - \sum_{x \in Q} \left( P(x) \cdot \frac{F_S(x)}{S(x) + F(x)} \right)

여기서 각 변수는 다음과 같다.

  • P(x)P(x): 입력 xx가 발생할 확률 (가중치 역할)
  • S(x)S(x): 입력 xx에 대해 성공한 테스트 케이스 수
  • F(x)F(x): 입력 xx에 대해 실패한 테스트 케이스 수 (중대한 고장 포함)
  • FS(x)F_S(x): 입력 xx에 대해 중대한 고장을 유발한 테스트 케이스 수 Figure 6

실험 결과

논문에서는 팬(Fan) 제어 시스템을 예시로 들어 제안된 방법을 적용하였다.

  • 실험 설정: 출력 부하의 회전이 100~1500 rpm 내에서 작동해야 한다는 설계 사양을 바탕으로 테스트 케이스를 구성하였다.
  • 고장 판단 기준:
    • 정상 범위(100~1500 rpm) 내이지만 기댓값과 다르면 '고장'으로 분류.
    • 100 rpm 미만 또는 1500 rpm 초과 시 '중대한 고장'으로 분류.
  • 도구 실행: 제안된 테스팅 도구는 테스트 진행 상황, 전체 실패 횟수, 중대한 고장 횟수를 실시간으로 표시하며, 최종적으로 수식에 따라 계산된 견고성 지표를 도출할 수 있음을 보였다(논문의 Figure 6 참조).

결론

본 연구는 기존 SiL 시뮬레이션 기반 테스팅 기법에 견고성 측정 기능을 추가하였다. 장치 드라이버를 가상 드라이버로 대체하는 시뮬레이션 환경에서, 설계 문서로부터 도출된 테스트 케이스를 실행하고 그 결과를 바탕으로 견고성을 정량적인 수치로 표현하였다. 이는 테스트의 객관성을 높이고 임베디드 소프트웨어의 품질 향상에 기여할 수 있는 실용적인 방법론이다.