RTI의 엄격한 소프트웨어 테스팅: Connext DDS 전반의 신뢰성 보장
RTI 소프트웨어는 수많은 미션 크리티컬 시스템을 구동합니다. 고객은 최고 수준의 신뢰성과 품질을 요구하므로, 미팅 시 개발 관행, 툴링, RTI IIoT 랩을 공개적으로 논의합니다. 자주 거론되는 주제가 소프트웨어 테스팅인데, 이는 우리가 큰 자부심을 갖는 영역입니다. 이 글은 모든 RTI 릴리스 뒤에 있는 포괄적 테스트 전략을 개요합니다.
Connext 제품군은 통합된 개발 및 테스트 프로세스를 공유합니다. 유일한 예외는 안전 인증 애플리케이션에 맞춘 독자적 프로세스를 따르는 Connext DDS CERT입니다. 새 소프트웨어가 릴리스되기 전, 기능, 성능, 확장성을 검증하는 광범위한 테스트 스위트를 실행합니다.
단위 테스트
단위 테스트는 개별 함수가 예상대로 동작하는지 확인합니다. 각 제품 릴리스의 회귀 테스트 근간을 이룹니다. 단순 함수 확인을 넘어, 단일 노드 기능 테스트를 지원하고 최근 릴리스에는 고객 제공 QoS 설정도 포함됩니다. 목표는 가능한 한 현실적인 운영 환경을 에뮬레이트하는 것입니다.
기능 테스트
새 기능 추가 시 기능 테스트 계획을 수립하고 엔드투엔드 테스트를 개발합니다. Connext DDS Micro의 경우 여러 "테스트 러너"를 별도 머신에 두고 중앙 "테스트 매니저"가 조정하는 분산 테스트 프레임워크를 사용합니다. 커스텀 DDS 테스트 언어로 각 시나리오를 기술하고, 러너가 스크립트 실행, PASS/FAIL 결과 게시, 다음 명령 대기. 기능 테스트 초점:
- 애플리케이션 레벨 API 및 DDS QoS 정책(데드라인, 라이브니스 등)
- 리소스 제한
- 크로스 엔디안 호환성
- 디스커버리 메커니즘
- 성능 지표
- 부하 하 안정성
상호운용성 테스트
- RTI 제품 내부 – 수천 가지 구성 조합 자동 테스트, 특히 Connext 6 같은 기능 릴리스 후. 잠재적 파괴 위험 식별 시 구버전 RTI도 테스트.
- 언어 상호운용성 – RTI의 Java 도구(예: RTI 어드민 콘솔)를 다른 언어로 작성된 애플리케이션과 결합하여 간접 테스트.
- 타 DDS 벤더와 – OMG DDS 회의에서 정기적 기본 테스트, DDS 보안, 확장 가능 타입, RTPS 와이어 프로토콜에 대한 깊은 검사는 OMG 커뮤니티(https://github.com/omg-dds)에서 조정.
설치 테스트
설치 테스트는 여러 RTI 제품 간 통합과 상호운용성을 포착합니다. 수동 및 자동화 스위트로 실행:
- 올바른 파일 설치
- GUI 통합(현재 수동)
- 문서 정확성
- Getting Started Guide 포함 출하 예제로 기본 기능, 다수 플랫폼에서 검증
- 제품 및 언어 상호운용성
자동화 설치 테스트 검증 항목:
- 파일 체크로 설치 무결성
- 유틸리티 실행(rtiddsping, rtiddsspy, rtiprototyper)
- rtiddsgen 생성 예제: C, C++, C++03, C++11, C++ CLI, C#, Java (정적/동적, 릴리스/디버그)
- 다양한 빌드 구성의 출하 예제
- C++ 및 Java 성능 예제
- C 언어 TCP 출하 예제
이 테스트는 Windows, Linux, Solaris, Lynx, QNX, Darwin, VxWorks 등 80개 고유 아키텍처에서 실행됩니다.
성능 및 메모리 프로파일링
현실적인 분산 성능 테스트는 본질적으로 복잡합니다. 우리 도구는 버퍼 크기, 처리량, 지연시간, 실시간 전송, 스택 사용량, OS 상호작용 같은 핵심 지표 측정을 위해 설계되었습니다.
- 단위 테스트로 함수 레벨 성능과 메모리 사용량 포착
- perfTest – Connext DDS 전체 성능 프로파일링. 현실적 측정을 위해 광범위하게 튜닝, 라우팅 서비스 같은 다른 제품과 병행 실행 가능. 공개 지연시간과 처리량 데이터는 RTI 벤치마크에서 확인
- memTest – Connext DDS Core의 핵심 메모리 풋프린트 모니터링. Connext DDS Micro도 단위 테스트 중 상세 메모리 사용량 기록
- RTI 어드민 콘솔, RTI 레코딩 서비스 같은 애플리케이션에 내장된 성능 모니터링 포함
perfTest와 memTest의 지속적 통합으로 새 기능 추가 시 사전 정의된 임계값을 넘어서는 회귀 방지.
내구성 테스트
장기 실행 시나리오 시뮬레이션으로, 참가자/엔드포인트 생성/삭제 같은 동적 연산 중 힙 사용량 모니터링. 내구성 프레임워크는 RTI 보안 플러그인 실행 시 RTPS 패킷 퍼징도 수행, 모두 최신 GA 릴리스 대상으로 실행.
대규모 및 스트레스 테스트
대규모 테스트는 새 기능 중심으로 의도적으로 구축. 예를 들어 전송 모빌리티 도입 시 다양한 무선 액세스 포인트 연결/해제 에뮬레이션 테스트 필요. 디스커버리 강화 시 수천 엔드포인트 시뮬레이션하는 전용 프레임워크로 디스커버리 성공 자동 검증. 장비와 네트워크 제약으로 매 릴리스마다 재실행하진 않지만 디스커버리 로직 변경 시 재실행.
어떤 테스트 프로그램도 모든 시나리오를 커버할 순 없지만, RTI의 광범위하고 다면적 접근법은 고객에게 각 새 릴리스에 대한 확신을 줍니다.
저자 소개
Jan은 Sun Microsystems, VLSI Technology 등 업계 리더에서 20년 이상 기술 및 고객 대면 역할을 수행한 후 2006년 RTI에 합류했습니다. 미들웨어, 그리드 애플리케이션, OS 설계, 네트워크 칩 개발 등 전문성을 바탕으로 새로운 지원 조직에서 98% 고객 만족률 기록 경신. VP of Engineering으로서 60명 이상의 분산 팀을 이끌며 R&D, 소프트웨어 개발 프로세스, RTI Connext 제품 품질을 총괄. 벨기에 KIHK Geel에서 전자공학, 디지털 통신 석사 동등 학위(수석 졸업).
더 알아보기:
- 자율주행차 양산
- DDS란?
- Connext DDS Pro