디바이스 소프트웨어 확인 및 검증을 위한

윈드리버 Lab Diagnostics는 제조업체에 제품 확인 및 검증을 간소화할 수 있는 강력한 공동 작업 인프라를 제공한다. Lab Diagnostics의 핵심인 윈드리버의 독창적인 센서포인트(Sensorpoint) 기술은 개발자가 소스 코드에 영향을 주지 않고 개발 및 테스트 프로세스에 테스트를 통합할 수 있도록 해준다. 테스트가 수행되는 실험실에서 센서포인트는 개발중인 제품에 대한 새로운 시각을 제공할 뿐만 아니라 타깃 시스템의 재컴파일, 재빌드 또는 재부팅 없이 실행 중인 소프트웨어를 테스트할 수 있도록 해준다.오래된 일이지만, 90년대 후반 미 항공우주국에서 화성 탐사선인 패스파인더(Path Finder)를 성공적으로 화성에 착륙시키고 오랜 기간 동안 화성의 다양한 과학적인 정보를 지구로 전송해서, 그 후 이어지는 여러 차례의 화성 탐사를 위한 매우 귀중한 기초 자료를 전송한 경우가 있다. 그런데, 화성에 우주선이 착륙하고 동작을 개시한 직후 며칠 주기로 전체 시스템이 리셋 되고 그동안 수집한 귀중한 과학 정보가 유실되는 현상이 발견되었다고 한다. 다행히 지상의 실험실에 화성에 보낸 것과 똑 같은 우주선을 한대 갖춰놓고 있었고, 며칠간의 밤샘 테스트 끝에 문제를 비슷하게 재현하여 결국 실제 화성에 있는 우주선의 코드를 패치함으로써 문제 해결에 성공했다는 이야기가 있다.소프트웨어 개발에는 시스템의 철저한 테스트 또는 문제 발생 시 디버깅 방법 등이 매우 중요하다. 이번 기고에서는 기존의 여러 가지 테스트 방법과 매우 대비되는, 윈드리버의 혁신적인 센서포인트 기술을 소개하고 디바이스 소프트웨어 수명 주기의 전통적인 확인 및 검증 단계에 센서포인트가 가져다주는 이점에 대해 살펴보도록 한다.센서포인트란?센서포인트는 컴파일 및 링크된 독립적으로 동작하는 코드 조각이다. 센서포인트 코드는 원하는 C 파일에서 특정 함수, 전역 변수, 로컬 변수 및 코드 라인을 참조한다. 센서포인트 바이너리는 센서포인트에 정의된 RAM 위치에 디바이스에 동적으로 삽입되고 제거될 수 있다. 따라서 센서포인트는 C 소스 파일에 의해 생성되어 현재 디바이스에서 실행 중인 코드에 여러 코드 위치를 동적으로 패치 할 수 있다. 센서포인트는 제품 개발 도중 작성되거나 제품이 배포되고 몇 년 후 코딩하고 컴파일 하는 것이 가능하다.센서포인트의 수명 주기센서포인트는 일반적으로 소프트웨어 초기 코딩 단계에서 작성된다. 엔지니어는 코드를 작성할 때 디바이스 테스트에 사용되는 해당 센서포인트도 작성한다. 센서포인트는 주로 로깅·출력, 코드 경로 강제 실행 및 알고리즘의 여러 값 테스트에 사용된다. 이 기술로 아직 존재하지 않는 하드웨어를 시뮬레이션 할 수도 있다. 예를 들어, 버퍼를 채우고 레지스터 값을 설정하고 존재하지 않는 하드웨어로부터 응답을 도출한다. 센서포인트는 관련 소스 파일을 통해 구현되므로 코드를 수정하거나 테스트하는 다른 엔지니어가 관련 센서포인트를 사용하고 업데이트할 수 있다.시스템 통합과 테스트 도중 이러한 센서포인트는 더욱 증가되어 세마포어, 전역 변수 등과 상호 작용함으로써 시스템 테스트 도중의 조정이 포함된다. 또한 센서포인트는 더 큰 통합 테스트 도중 구현되거나 다른 센서포인트에 의해 구현될 수도 있다. 엔지니어링팀과 테스트팀이 공유할 수 있도록 센서포인트는 디바이스 관리 서버에 저장된다.QA 테스트 시 센서포인트는 테스트 과정에 통합된다. 센서포인트는 관리 서버에 있기 때문에, QA팀은 문제 식별을 위한 로그(데이터 마이닝), 내부 성능 요구 사항을 확인하기 위한 로그(타이밍 측정) 및 특정 테스트에 대한 시나리오 설정을 위한 디바이스 수정(예: 장애 생성, 외부 트래픽 시뮬레이션) 등과 같은 모든 센서포인트 유형에 액세스할 수 있다. 또한 QA팀은 테스트 요구 사항을 충족시키기 위해 센서포인트 기능의 작성을 요청하거나 생성할 수도 있다. 센서포인트를 이용하면 데이터 로그가 저장되므로 현재와 미래 제품 출시 시점에서의 디바이스 성능을 비교할 수 있다.제조 시설에서는 센서포인트가 서버에 의해 액세스되어 문제 식별에 사용된다. 로그는 곧바로 QA 및 엔지니어링팀으로 보내져서 제조 문제의 원인 파악과 해결 방법 모색에 사용된다. 제조 그룹은 디바이스 제조를 위해 추가적인 센서포인트 기능을 요청하거나, 최종 디바이스 구성을 포함하여 디바이스 출시 전에 실행해야 할 특정 하드웨어/소프트웨어 테스트를 제공할 수도 있다.현장에서는 센서포인트가 추가적인 기능의 활성화뿐만 아니라 진단 수행 용도로 사용될 수 있다. 진단의 경우 지원 센터는 서버의 센서포인트에 액세스하여 오류 로그를 생성하고, 추가 테스트를 수행하고, 패치를 설치하고, 고객 위치에 설치되어 실행 중인 디바이스에서 성능 정보를 수집할 수 있다. 추가 기능은 소프트웨어 업데이트, 새 기능 패치, 원격 디바이스 구성, 사용 및 통계 정보 수집을 통해 액세스될 수 있다. 마찬가지로, 지원팀이나 엔지니어링팀에서 추가적인 센서포인트를 생성하거나 요청할 수 있다.최적화된 디바이스 확인 및 검증소프트웨어 확인 및 검증프로젝트 도중 엔지니어가 작업이 완료된 것으로 판단하여(또는 마감 시한이 완료되어) 테스트를 위해 소프트웨어를 QA 랩으로 보내야 할 시점이 있다. 이 작업의 궁극적 목표는 소프트웨어를 한 번 제출하여 모든 테스트에 통과하고 생산에 들어가는 것이다. 하지만 실제로는 다음과 같이 진행될 가능성이 더 크다.1. QA 탭에서 제품 테스트를 시작한다.2. 결함이 발견된다.3. 엔지니어링팀에서 결함의 대부분을 재현한다.4. 그에 따라 소프트웨어를 수정하여 다시 QA팀에 제출한다.5. 다시 제품 테스트가 시작된다.6. 제품 품질이 허용 가능한 수준에 도달할 때까지 2~5단계가 반복된다.윈드리버 Lab Diagnostics는 수행되는 확인 및 검증의 품질을 향상시키는 동시에 개발 및 테스트 시간을 단축시킨다.수정 및 테스트 촉진디버그문 컴파일, 코드 변경 테스트, 변수 값 수정 작업에는 모두 영향 받는 함수의 재빌드가 필요하며 그 후에도 코드를 링크하고 대상 디바이스에 설치해야 한다. 경우에 따라서 링크에 몇 시간이 걸리기도 하고 코드를 대상 디바이스의 플래시 메모리에 올려야 할 경우도 있다. 디버그 코드가 시스템 동작을 변경하면 어떤 경우 그 문제가 숨겨져서 나중에 엔지니어링 또는 테스트 단계에서 문제가 발생할 수도 있다.센서포인트는 동적으로 다음을 수행하는 데 사용된다.- 문제점을 찾기 위한 디버그 코드 삽입(로그 및 출력 포함)- 해결책의 테스트를 위한 코드 삽입- 해결책을 검증하기 위한 변수, 레지스터 및 센서의 조작과 시험- 모든 코드 변경에 대해 재부팅과 테스트를 설정하지 않고 실행 중인 시스템을 수정많은 시간이 걸리는 디버그, 빌드 및 테스트 주기가 단축됨에 따라 엄청난 시간과 노력이 절약된다.발견되는 결함의 수 감소충분한 시간을 투자하는 유닛 테스트와 통합 테스트 전략은 실제로 확인과 검증 도중 발견되는 소프트웨어 결함의 수를 줄여준다. 하지만 유닛 및 통합 테스트에 과도한 노력을 투자하는 것은 제품 출시를 지연시킬 수 있다. 유닛 및 통합 테스트 패키지가 구식이 되어 많은 셋업이 필요하기도 하고 실제 필요한 것 이상의 테스트가 필요하기도 한다(예를 들어 로직 테스트에 필요한 값만 전달하는 것이 아니라 많은 매개 변수 값을 전달하여 함수를 테스트하는 등).개발자가 새로 개발한 코드를 시스템 빌드에 포함시키기 전에 코드 경로, 예외, 매개 변수 범위 및 알고리즘 작동을 현명하게 테스트한다면 소프트웨어 안정성이 향상된다.소프트웨어 엔지니어는 센서포인트를 사용하여 다음과 같은 작업을 할 수 있다.- 변수에 특정 값 설정- 조건식이 특정 코드 경로를 실행하도록 지정- 일반적으로 오류를 반환하지 않는 함수에 에러 조건을 추가(예: malloc)- 시스템 환경 변경(예: 센서에서 읽는 값 변경, CPU 및 주변 디바이스 컨트롤러 레지스터 값 설정, 스트리밍 데이터 수정)함수와 하위 시스템을 더 지능적인 테스트로 실행함으로써 소프트웨어 실패 확률이 줄어든다.확인과 검증을 합리화하기 위한 특정 테스트에 집중소프트웨어 확인과 검증을 위한 테스트는 처음에는 제품 사양이나 매뉴얼에서 도출된 후, 테스트의 진행에 따라 점차 확장된다. 테스트가 몇 개월 동안 진행되면 테스트 패키지는 크기가 너무 커져서 실행에 몇 시간이 걸리게 됨에 따라 검사할 데이터양이 급증한다. 또한 여러 테스트를 위한 랩 설정도 몇 시간이 소요되는 프로세스가 되기 때문에 추가적인 테스트 엔지니어와 테스트 장비가 필요하게 된다.센서포인트는 다음을 통해 테스트 비용을 절감한다.- 디바이스 환경을 특정 상태로 강제 지정(예: 센서의 고온 판독이 수행되도록 하여 테스트 도중 특정 장애가 발생하도록 유도)- 디바이스를 몇 시간의 연속 작동 후에나 도달할 수 있는 특정 상태로 설정(예: 버퍼 가득 채우기, 대기열 비우기, PI를 4,000만번째 소수점 자리수까지 계산)- 정교한 테스트 장비의 사용 불필요(예: 데이터 패킷에서 홉 카운트(Hop Count)를 큰 숫자로 설정)- 특정 제품 하위 시스템에 테스트를 집중: 센서포인트는 소프트웨어의 모든 곳에 삽입할 수 있기 때문에 디바이스의 외부 환경과 내부 상태를 설정하고(소프트웨어와 하드웨어 모두), 디바이스를 실행하고, 테스트 데이터를 수집할 수 있다.- 테스트팀이 하드웨어를 구동하고 테스트할 수 있음: 센서포인트는 변수의 값을 변경하고 함수를 호출할 수 있기 때문에, 디바이스 메커닉을 시작, 중지 및 실행하며 범위와 반복을 포함한 작동 한계를 입증하는 데 사용할 수 있다.개발 도중 소프트웨어 엔지니어에 의해 만들어지는 센서포인트는 관리 서버를 사용하여 범주화되고 저장된다. 확인 및 검증 그룹은 이를 사용하여, 디바이스 개발 수명 주기 단계에서 필요한 특정 테스트를 수행한다. 즉, 버퍼에 데이터 없음, 붉은색 잉크 부족, IP 라우팅 성능, 산소 레벨 매우 높음, 또는 직렬 데이터 캡처 등의 이름을 가진 센서포인트를 표준 테스트 프로시저의 일부로 활용하여 테스트할 수 있다. 이를 통해 이러한 테스트를 얼마나 디바이스 중심적, 프로세스 중심적으로 만들 수 있는지 이해할 수 있을 것이다.결함 정량화 시간 감소결함의 재현에는 많은 시간이 걸릴 수 있다. 확인 및 검증 실험실에는 개발 엔지니어링팀에 비해 더 많은 테스트 장비가 있으며 이곳의 테스트는 더 큰 블랙박스 애플리케이션이다. 예를 들어 라우터를 테스트하려면 해당 라우터를 대규모 네트워크에 연결하여 특정 기능을 확인해야 한다.센서포인트는 다음 특징을 제공함으로써 결함의 원인에 집중할 수 있도록 돕는다.- 시스템의 환경을 변경하여 오류가 재현되는 시스템 상태로 설정- 문제 재현 도중 전역 및 로컬 변수, 함수 호출 및 데이터 추적 캡처- 타이밍 결함과 성능을 파악하기 위해 시스템의 모든 지점에 타임스탬프 적용- 로그의 생성과 캡처를 포함하여 테스트 스크립트로 통합- 관리 서버에 저장하고 문제 디버그, 해결책 개발 및 결함 수를 크게 줄이기 위한 용도로 엔지니어링 부서에서 즉각 사용 가능한 테스트 로그 생성이제 테스트 부서는 문제 재현을 엔지니어링에 의존하지 않아도 된다. 대신 QA 부서가 문제의 원인을 이해하고 이를 수정하는 데 필요한 과정을 찾기 위한 정보를 엔지니어링에 제공한다.내부 커뮤니케이션 향상제품 개발은 전세계적 노력이다. 따라서 개발, 테스트 및 제조 부문 간에 관련 데이터를 조정하는 것이 매우 중요하다.관리 서버에 저장된 센서포인트와 테스트 로그 모두 분산된 테스트 그룹과 엔지니어링 그룹 간의 테스트 및 정보 공유에 활용될 수 있다. 각 엔지니어링 및 테스트 그룹에는 고유의 책임과 인력이 있으며 이러한 정보는 서버의 테스트 로그와 센서포인트를 통해 캡처되고 공유된다.테스트는 확인 및 검증 부서로만 국한되지 않는다. 제조 부서 역시 제품을 패키징하고 출하하기 전에 검증해야 한다. 따라서 제조 부서도 센서포인트를 통한 테스트에 액세스할 수 있다. 또한 하드웨어를 실행하거나 특정 제조 결함을 테스트하기 위해 특정 제조 센서포인트를 재작성할 수 있다.이러한 데이터 공유는 분산된 위치나 분산된 시간대로만 국한되지 않는다. 즉, 누적되어온 제품에 대한 지식도 활용된다. 이와 반대로, 일부 엔지니어링 그룹은 제품 품질 문제로 인해 다음 프로젝트로 이전하려고 노력할 수 있다.센서포인트에 캡처되어 관리 서버에 저장된 엔지니어의 지식은 제품 개발, 디버그 및 지원 지식을 미래의 더 작은 지원 엔지니어링 그룹으로 전파하는 데 큰 도움이 된다.마치며윈드리버 Lab Diagnostics의 핵심은 센서포인트이다. 센서포인트의 핵심은 소프트웨어 디자인팀에 의해 코드 조각에서 포착된 지식이다. 이러한 지식을 적용함으로써 센서포인트는 유닛 테스트, 랩·원격 진단, 성능 측정, 하드웨어 시뮬레이션, 번인(burn-in) 테스트, 패치, 원격 구성, 필드 업그레이드 및 디바이스 이용·통계 보기에 사용될 수 있다.제품이 처음 구상되었을 때 소프트웨어는 거의 모든 것을 할 수 있도록 디자인이 가능하다. 프로젝트가 진전됨에 따라 이 디자인 범위는 디자인 제약 조건과 시장 출시 시간의 압박으로 인해 빠르게 축소된다. 센서포인트를 사용하면 제품의 기능(진단 및 기능 모두)은 축소되는 범위로 국한되지 않는다. 윈드리버 Lab Diagnostics는 그 존재만으로도 제품의 가치를 극대화한다.
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지