반응형

제목: 의료 기기 테스팅 개선을 위한 소프트웨어 라이브러리 생성(Creating software libraries to improve medical device testing of the Pacing System Analyzer (PSA) at St. Jude Medical)

저자: Joel Canlas, St. Jude Medical, 미국

문서유형: 석사 논문( 43 페이지), 2011

 

여러 의료 기기의 테스트 프로젝트에서 공통적으로 사용되는 프로그램 모듈들로(functions) 구성된 통합 소프트웨어 라이브러리를 구축하여 신규 의료 기기의 테스트 스크립트 작성시 이 라이브러리를 활용하는 방법에 대하여 기술한 자료



St. Jude Medical 소개

  • 의료 기기 및 서비스를 제공하는 업체
  • 이식용 페이스메이커(pacemakers) 및 제세동기(ICD)를 주력 제품으로 생산


St. Jude Medical에서의 테스팅

1) 요구사항 기반 테스팅(Requirements Driven Testing)

  • 요구사항 기반 테스팅을 제품 품질을 담당하는 테스팅 부서의 주 테스트 전략으로 함.
  • 의사, 필드 임상 전문가, 마케팅 그룹이 참여하여 작성된 시스템 명세(system specifications)로부터 시스템 요구사항(System requirements)을 도출하고, 이 시스템 요구사항으로부터 소프트웨어 요구사항(Software requirements)이 도출된다.
  • 테스팅 그룹은 시스템 요구사항을 기반으로 테스트 설계(테스트 케이스 생성) 및 구현을 한다.
  • 소프트웨어 요구사항 각각은 FDA 승인을 위해 제출되는 표준 운영 절차 문서(the standard operating procedures document)에 명시된 대로 테스트 된다.
  • FDA에서 의료 기기 업체가 의료 기기의 요구사항 하나하나를 개별적으로 테스트 하는 것을 요구하지는 않지만 St Jude Medical은 높은 품질의 제품을 위해 요구사항 각각에 대한 테스트 시나리오를 가진다.


2) 기타 테스트 타입

요구사항 기반 테스팅이 St Jude Medical 테스팅 전략의 핵심이기는 하지만 여러 다른 유형의 소프트웨어 테스팅도 이루어진다. 예를 들면 개발자에 의해 생성되고 실행되는 단순 기능 테스트인 벤치 테스트(bench tests), 요구사항에 기반하지 않고 경계 조건 시나리오를 생성하는 애드혹 테스트(ad-hoc tests), 입력 데이터의 조합을 최대한 많이 테스트 하기 위해 기기의 입력 값을 무작위로 선택하는 랜덤 테스팅(randomized testing) 등이 있다.


3) 인하우스 테스트 도구(Internal tools) 사용

실시간 운영체제의 소규모 프로세서상에서 돌아가는 의료 기기의 임베디드 소프트웨어를 MS 윈도우 같은 일반 개인 컴퓨터 운영 체제에서 테스트 하면 실제 의료 기기와 환경이 달라지므로 테스트를 지원하는 도구가 필요하다. St Jude의 테스트팀은 Heart Simulators(HS), Simulation Test Tools(STT), Digital Interface Modules(DIM), the Universal Engineering Programmer(UEP)와 같은 도구를 이용하여 의료 기기의 실시간 운영 체제 상에서처럼 소프트웨어 요구사항을 검증하고 테스트 스크립트를 실행한다. 이 방식은 스크립트 실행 중에 지연(delays)이나 동기화 이슈(synchronization issues)를 피하게 해준다


4) 통합 테스팅 라이브러리(Unified Testing Libraries)

  • 과거에는 엔지니어가 수작업으로 명령어(commands)와 입력 값(inputs)을 기기에 보내고 로직 분석기(a logic analyzer)를 이용해 그 결과 데이터(output data)를 기록했다. 최근 소프트웨어 테스트 그룹은 이런 프로세스를 개선하기 위해 C++Java 같은 객체 지향 프로그래밍 언어를 도입해 Unified Test Systems(UTS) 상에서 돌아가는 테스트 스크립트를 개발하였다.
  • UTS는 실제 이식용 의료 기기의 하드웨어를 흉내 낸 작업판(an actual working breadboard)으로 구성되어 있고 테스터가 테스트 대상 기기와 상호작용 할 수 있도록 해 주는 도구와 인터페이스가 지원된다.
  • 기존 로직 분석기(the logic analyzer)는 모든 디바이스 데이터를 레코딩하는 디지털 인터페이스 모듈(a digital interface module)로 대체되었다. 이렇게 레코딩 된 데이터는 저장이 가능하며 로그된 테스트 결과(logged test results)와 병합하는 것도 가능하다.
  • V&V 그룹에 속한 대부분의 테스트 엔지니어가 소프트웨어 프로그래밍 전문가라기 보다는 생의학(biodmedical) 또는 생물 과학(bioscience) 분야의 배경을 가지고 있으므로 어떻게 하면 테스터들이 이런 테스트 시스템에 쉽게 접근 및 활용하게 할 수 있을지는 계속 고민 중인 이슈이다. 해결책의 하나로 인하우스 테스트 도구(the internal tools)와 테스트 대상 의료 기기(the device) 간의 데이터 커뮤니케이션을 담당하는 통합 테스트 라이브러리(The Unified Test Library: UTL)를 구축하고 V&V 팀 멤버들이 특정 작업 수행 시 라이브러리 함수(library function)를 호출(call)하여 사용하게 함으로써 테스터가 어떻게 테스트 할지(“how to test”) 보다는 무엇을 테스트 할지(“what to test” )에 집중할 수 있게 해준다.


PSA(Pacing System Analyzer)

이식용 ICD와 페이스메이커는 leads(심장 박동 신호를 센싱하여 기기로 전달하거나 또는 펄스 파형과 전기 충격을 심장으로 전달하는 플라스틱으로 싸인 금속 와이어)에 연결되는데, St Jude Medical의 신제품인 페이싱 시스템 분석기(Pacing System Analyzer: PSA)는 수술 중 이런 leads를 분석하여 기기(ICD 또는 페이스메이커)가 제대로 작동하고 있고 leads가 적절한 심장 위치에 놓여 있는지를 알려주는 보완 도구이다. 이 논문에서 다루는 통합 테스트 라이브러리(UTL)를 활용한 의료 기기 소프트웨어 테스팅 개선 방법은 PSA를 사례로 들어 설명하고 있다.


St. Jude Medical의 테스트 프로세스

1) 테스트 설계(Test Design)

테스트 엔지니어는 아래 예와 같은 시스템 요구사항을 분석하여 신규 테스트 케이스를 생성한다. 이 단계에서 테스트 실행 방법 및 테스트 절차에 대해 상위 레벨의 서술을 한 테스트 설계 문서(a test design document)가 작성된다. 아래 두 번째 예는 테스트 설계에서 작성된 테스트 절차를 보여주고 있다. 테스트 엔지니어는 테스트 케이스에 테스트 대상 기기의 입력 패러미터와 여러 테스트 확인 지점(test points)에서의 예상 결과를 반드시 기술해야 하며, 또한 모든 요구사항이 완전히 테스트 되었는지 여부와 모든 긍정 및 부정 테스트 시나리오가 커버되었는지도 확인해야 한다.


Req Tag

Feature

Type

요구사항

3426

Pace

Pos/Neg

심방 페이스 펄스(an Atrial Pace Pulse)가 요청되었을 때 메인 CPU 소프트웨어는 심방페이싱표시등(the Atrial Paced Activity LED) 100ms 동안 켜야(ON) 한다.

[의료 기기 요구사항 예]


[테스트 설계 문서에 작성된 테스트 절차 예]


2) 테스트 케이스와 테스트 스크립트(Test Cases and Test Scripts)

테스트 케이스를 일련의 소프트웨어 라이브러리 함수를 호출하는 C++ 테스트 스크립트로 구현한다. 각 테스트 케이스는 여러 개의 섹션으로 나누어지고 테스트 설계에 기술된 절차를 따라야 한다. 신규 장비인 PSA를 위해 V&V 테스트 엔지니어들이 새로운 C++ 프로그래밍 라이브러리를 구축한다(다른 테스트 프로젝트에서 기 생성된 클래스 라이브러리와 구조 및 동작의 일관성을 유지하도록 구축). 테스트 엔지니어는 이렇게 구축된 UTL 라이브러리 함수 호출을 통해 테스트 시나리오를 실행시킨다. 아래 예에서 함수 호출 “gPSA.VerifyLEDStatus(…)”PSA 프로젝트를 위해 생성된 신규 UTL 라이브러리 함수 호출의 예이다

[테스트 케이스의 C++ 코드 예]


3) 테스트 결과(Test Results)

UTS 상에서 각 테스트 스크립트를 컴파일하고 실행한다. 테스트 스크립트 실행이 완료되면 특정 테스트 확인 지점(test points)의 테스트 성공/실패 여부를 알려주는 메시지가 포함된 추적 파일(a trace file)이 생성된다. 이 추적 파일은 테스팅 라이브러리, 인하우스 테스트 도구(internal tools), 윈도우즈 운영 체제가 보고한 에러들도 나열하고 있다. 

[테스트 케이스 출력물인 추적 파일의 예]



UTL Software Libraries 

사용자가 주어진 디바이스나 도구와 인터페이스 하는 방법을 제공하는 함수(function)들의 집합인 소프트웨어 라이브러리는 신속하고 효율적으로 디바이스와 커뮤니케이션하고 정보를 수집할 수 있도록 테스트 엔지니어를 지원하는 역할을 한다. 소프트웨어 라이브러리는 모든 테스트 엔지니어에 의해 공통적으로 사용되는 기능들을 공용 라이브러리화해서 재사용하므로 프로그래밍 코드 중복성을 줄일 수 있다. UTL 테스트 팀이 테스트 라이브러리 구축을 위해 사용하는 주된 도구는 Microsoft Visual Studio 2005이다. 


아래 그림은 테스팅 코드, UTL 소프트웨어 라이브러리, 인하우스 테스트 도구, 테스트 대상 기기간의 관계를 보여준다. 

  • 베이스 UTL 구조는 UTL_TLM, UTL_STT, UTL_UTS 3개의 주요 컴포넌트로 나뉘는데, 각 컴포넌트는 여러 의료 기기와 커뮤니케이션 및 상호작용 하기 위해 V&V 팀에서 사용하는 테스트 도구들과 관련이 있다. UTL_TLMUniversal Engineering Programmer(UEP)와 인터액션을 책임지는 cpp 파일들의 집합이고, UTL_STTSimulation Test Tool(STT)와 커뮤니케이션을 책임지는 cpp 파일들의 집합이며, UTL_UTS은 디바이스 CPU의 메인 버스에서 발생하는 이벤트 및 트리거의 레코딩을 책임지는 cpp 파일의 집합이다.
  • UEPDevice 사이의 점선은 유도원격송신(inductive telemetry)이나 무선주파수(radio Frequency) 같은 무선 커뮤니케이션 프로토콜을 나타낸다.
  • STTUTS 도구는 테스트 대상 기기에 유선으로 연결되며(hard wired), STT는 디지털/아날로그 심장 시뮬레이션을 대상 기기로 보낼 수 있고 UTS는 표준 버스 인터페이스를 통해 대상 기기의 CPU 활동을 모니터 할 수 있다.
  • 각 테스트 스크립트와 구성 데이터베이스 파일(configuration database files) UTL 소프트웨어 라이브러리의 입력으로 주어진다. 테스트 스크립트가 실행될 때 UTL은 테스트 스크립트에 의해 호출되는 각 함수를 실행한다. 특정 명령어(commands)와 입력 패러미터가 UTL_TLM 층에 있는 디바이스에 보내질 수 있고, 요청된 이벤트는 UTL_STT 층에 있는 디바이스에 보내질 수 있다.
  • 소프트웨어 라이브러리는 테스트 도구와 디바이스간에 상호작용하기 위해 필요한 필수 프로그래밍 코드를 사용자(테스트 엔지니어)로부터 감추어 편의성을 도모하고 코드 유지보수도 더 용이하게 해 준다.

 

위에 보여준 기존 UTL 구조는 PSA 디바이스 테스팅을 위해 아래 그림처럼 업데이트 된다. 


  • UTL_TLMPSA 기기와 관련된 모든 활동에 대해 PSA C++ 클래스 파일 및 헤더 파일로 업데이트한다.
  • STT와는 기존 디바이스들과 동일한 방식으로 커뮤니케이션 하므로 UTL_STT은 변경할 필요가 없다.
  • PSA 프로세서는 UTS나 로직 분석기(logic analyzer)와 인터페이스를 가지지 않으므로 UTS 관련 엔터티는 PSA 디바이스 테스팅에서 제외되었다.


결론

  • St. Jude Medical은 테스트 대상 의료 기기와 커뮤니케이션을 지원하는 통합 테스트 라이브러리(UTL)를 활용하여 의료 기기 테스트 프로젝트를 수행(, 자동 테스트 스크립트 작성시 UTL의 라이브러리 함수를 호출하여 구현)
  • 신제품인 PSA 기기의 테스트를 위해 기존 UTL 소프트웨어 라이브러리를 업데이트하여 사용
  • PSA 프로젝트가 USB 프로토콜을 사용한 첫 번째 프로젝트이므로 여기서 새롭게 생성된 PSA 함수들을 향후 USB 프로토콜을 통해 커뮤니케이션 하는 유사한 테스트 프로젝트에서도 활용 가능할 것으로 기대됨. 소프트웨어 테스팅 그룹이 이미 테스트 도구와 방법을 준비하고 있으므로 재사용을 통한 테스트 프로젝트 비용 및 일정 절약이 가능하다.


반응형

+ Recent posts