반응형

제목: 철도 통제 시스템을 위한 혼합형 테스팅 방법론(A Hybrid Testing Methodology for Railway Control Systems)

저자: Giuseppe De Nicola 4, 이탈리아

문서유형: 페이퍼(14페이지)


이탈리아의 자동 기차 통제 시스템을 테스팅 하기 위해 개발된 테스팅 방법론을 기술한 자료



SCMT: 자동 기차 통제 시스템

  • SCMT: 이탈리아어로 기차 움직임 통제 시스템(Train Movement Control System)의 약자
  • SCMT는 아래 그림처럼 두 부분으로 구성: 1)차상에 위치한 온보드 시스템(on-board system), 2)기차 선로를 따라 설치된 그라운드 시스템(ground system)
  • 그라운드 시스템은 두 개의 엔터티로 구성: 1)기차선을 물리적 매체로 이용해 기차와 통신하는 궤도회로(track-circuits), 2)기차로 데이터를 전송하는데 사용되는 안테나인 발리스(balises)
  • 궤도회로는 기차가 곧 다다르게 될 장소의 신호 상태를 온보드 시스템에 예고하며, 이 정보는 선로의 루프를 따라 기차가 이동하는 동안(대개 1,350미터 길이) 일정하다.
  • 발리스 서브시스템은 불연속적으로 데이터를 전송한다(기차가 장치의 위나 가까이에 위치할 동안에만 전송). 발리스는 궤도회로에 의해 전송되는 것보다 더 많은 정보를 포함한 정적 또는 동적 데이터를 전송할 수 있다. 동적 발리스(Dynamic balises)는 연결된 인코더로부터 선로의 현재 상태를 나타내는 데이터 텔리그램(telegram)을 받는다.
  • 그라운드 시스템과 두 개의 수신 장치(LTMBTM)를 통해 기차는 안전하게 운행하는데 필요한 모든 정보를 받게 된다. LTM(Loop Transmission Module)궤도회로의 코드를 읽어 들이고 BTM(Balise Transmission Module)은 발리스의 텔리그램을 읽어 들인다.
  • SCMT의 핵심인 온보드 시스템은 기차 보호 커브(기차가 반드시 지켜야 하는 속도 프로파일)를 구축하기 위해 모든 가용한 정보를 해석하고 종합한다. 만약 기차 운전자가 허용된 최고 속도를 준수하지 않으면 온보드 시스템이 브레이크를 자동으로 동작시켜 속도를 줄이거나 기차를 멈추게 한다.



제안된 테스팅 방법론

제안된 테스팅 방법은 아래 그림처럼 5 단계로 구성된다.


단계 I: 시스템 분해 및 테스트 케이스 분류(system decomposition and test-case classification)

  • 아래 그림처럼 입출력 관계에 기반한 수평 분해(Horizontal decomposition)와 복잡도 레벨에 기반한 수직 분해(Vertical decomposition)를 통해 테스트 대상 시스템을 독립적으로 테스트할 수 있는 단위인 로직 블록으로 나눈다.


  • 수평 및 수직 분해를 통해 아래와 같은 로직 블록으로 대상 시스템이 분할된다. 예를 들어, 블록 1.2는 위 그림의 수평 레벨 IIBraking Curve Elaboration과 수직 레벨 IIIComplete SCMT를 나타낸다.

  • 구분된 각 로직 블록에 대한 테스트 케이스 분류가 가능해진다.


<SCMT 시스템에 적용 예>

일차 수평 분해의 결과로 아래 그림과 같은 3 개의 수평 레벨(작업 기초 데이터 적용, 멈춤 커브 구축, 멈춤 거리 통제)이 도출됨

수직 분해에서는 그라운드 시스템으로부터 받는 정보의 완전한 정도(the completeness)에 대하여 3개의 수직 레벨로 분할. 베이직 SCMT 레벨에서는 온보드 시스템이 궤도회선의 코드만을 읽어 들이고, 부분 SCMT 레벨에서는 궤도회선의 코드에 더불어 정적 발리스로부터 읽어 들이는 정보가 추가되며, 완전 SCMT 레벨에서는 모든 그라운드 전송 장치를 사용해 데이터를 수집한다.


단계 II: 영향 변수 정의 및 최소화(definition and reduction of influence variables)

  • 영향 변수(an influence variable)는 타겟 시스템의 출력에 영향을 미치는 변수를 말한다.
  • 영향 변수는 운영 조건을 나타내는 시나리오 변수(Scenario variables)와 각 시나리오에 대한 특정 입력 데이터를 나타내는 테스트 케이스 변수(Test-case variables)의 두 클래스로 나뉜다.
  • 각 로직 블록의 영향 변수의 수를 최소화 하기 위해 특정 영향 변수의 값이 다른 영향 변수에서 도출 가능하다면 해당 변수는 영향 변수 목록에 포함시키지 않는다


<SCMT 시스템에 적용 예>

SCMT 로직 블록들이 제대로 동작하기 위해서는 그라운드 장비의 완전성(, 궤도회로 단독인지, 궤도회로+정적발리스인지, 궤도회로+동적발리스인지 여부), 설치된 발리스의 타입, 발리스에 포함된 정보의 일관성 등을 나타내는 변수들이 필요하다. 시스템 명세에 기술된 요구사항에 따르면 발리스의 데이터 일관성을 나타내는 변수는 그라운드 장비 완전성과 발리스 타입을 나타내는 변수에 항상 의존하므로 영향 변수 목록(the set of influence variables)에서 제외될 수 있다.



단계 III: 출력물 정의 및 탐색(definition and probe of outputs)

  • 로직 블록을 기준으로 출력 변수의 분류를 수행
  • 직접 접근이 불가능한 시스템 내부 상태를 나타내는 숨은 출력 변수(hidden outputs)가 존재할 수 있는데, 이러한 변수를 탐색하기 위해서는 구현된 시스템의 물리적인 구조를 알아야 한다.

 

<SCMT 시스템에 적용 예>

단계 I의 수평 분해에서 두 번째 수평 블록인 멈춤 커브 구축Do, Vo, VT를 입력 변수로 받아 Sn, Sa, Sc를 출력 변수로 내는데, 이 출력변수의 상태 값들은 하드웨어 탐색(probing)을 하는 진단 소프트웨어가 생성하는 로그 파일을 읽어 확인할 수 있다(아래 그림).


단계 IV: 테스트 케이스 생성 및 최소화(generation and reduction of test-cases)

  • 각 로직 블록에 트리 기반 테스트 케이스 생성 방법(a tree-based test-case generation approach)을 적용. 아래 그림처럼 영향 변수 각각에 대하여 변수의 변동 범위(variation range)에 있는 주요 값들(the significant values) 2개 클래스(시나리오 변수와 테스트 케이스 변수)를 거쳐 식별
  • 트리로 구축된 영향 변수들의 조합은 도구를 사용하여 자동으로 이루어지며, 사전 정의된 시나리오와 테스트 케이스의 제거 기준(reduction criteria)을 따라 트리의 불필요한 브랜치를 가지치기 하여 남은 부분의 테스트 케이스가 실제 테스트에서 실행되게 된다.
  • 시나리오의 제거 기준으로 호환이 불가능한 조합의 시나리오 변수, 현실적이지 않은 운영 조건, 패러미터의 변동 범위가 동등 클래스에 해당하는 경우 등이 있다.
  • 테스트 케이스 제거 기준으로 호환이 불가능한 조합의 테스트 케이스 변수, 입력 값 변동 범위가 동등 클래스에 해당하는 경우, 다른 로직 블록에 기 정의된 테스트 케이스에 매핑되는 경우, 특정 콘텍스트(context)에 의존하는 경우 등이 있다.


  • 영향 변수들의 입력 값을 선택 시 일반적으로 변수 값의 변동 범위에서 아래 클래스들에 해당하는 테스트 케이스를 적어도 하나씩은 선택: 내부 값(internal values), 상한 경계값(high-boundary values), 하한 경계값(low-boundary values), 상한 경계의 근사값(near high-boundary values), 하한 경계의 근사값(near low-boundary values), 상한 경계의 초과값(over high-boundary values), 하한 경계의 미만값(below low-boundary values), 이산 변수의 경우에 특수값(special values)
  • 테스트 케이스가 도출되면 그 다음 단계로 시스템 명세서 등을 참고하여 각각의 예상 결과(expected outputs)를 결정한다. 시스템 명세서가 불완전한 경우도 있어서 항상 명세서에서 예상 결과를 식별할 수 있는 것은 아니다. 이 경우 시스템 명세 담당자(사용자, 고객, 표준 위원회 등)가 식별된 시나리오를 분석하고 해당 조건에서 시스템이 어떻게 동작해야 하는지를 결정한다.


단계 V: 우선순위 선정과 실행(prioritization and execution)

  • 여러 달에 거쳐 실행해야 할 많은 양의 테스트 케이스의 우선순위를 주는 것이 중요. Hazard 분석(시스템 장애로 인한 위험의 심각도 분석)에 따른 안전성 측면의 중요도에 따라 기능/블록의 우선순위를 결정한다.
  • 타겟 시스템, 외부 인터액션을 흉내 내는 하드웨어 장치, 소프트웨어 도구(배치 파일을 통해 테스팅 프로세스를 자동화) 등으로 구성된 시뮬레이션 환경에서 테스트 케이스가 먼저 실행된다. 아래 그림은 SCMT의 테스팅 환경을 나타낸다.
  • 테스팅 프로세스 속도를 향상시키기 위해 테스트 준비, 실행, 결과 검증 활동들을 파이프라인처럼 연결시켜서 많은 수의 테스트 엔지니어들이 동시에 작업할 수 있도록 한다.
  • 테스트 성공/실패 기준이 종종 시간 및 속도 범위에 기반하는지라 예상 결과와 테스트 실행 결과 로그 파일의 비교를 수작업으로 해야만 하는 어려움 존재
  • 이상 동작이 관측된 모든 테스트 케이스에 대해 엔지니어링 부서에 적절한 공지가 이루어진다(시스템 문제 보고서를 공식적으로 전달하고 프로그래머가 무엇을 수정해야 할 지 알 수 있도록 테스트 정보도 제공)
  • 수정이 완료되면, 수정된 소프트웨어 컴포넌트를 포함하는 로직 모듈을 다시 테스트한다.



반응형

+ Recent posts