TestStand 타입 관리 모범 사례

개요

TestStand 데이터 타입 및 단계 타입은 모두 'TestStand 타입'이라고 불리며, 재사용 가능한 데이터 구조 및 단계를 정의할 수 있도록 지원합니다. 타입을 사용하면 테스트 시스템의 여러 곳에서 사용되는 구성요소의 위치를 중앙으로 유지할 수 있습니다.

TestStand 타입은 테스트 시스템의 개발을 용이하게 하지만, 타입의 공유 및 모듈 특성을 고려하여 타입 관리 모범 사례를 따르지 않으면, 의도하지 않은 타입 버전이 전파될 수 있습니다. 이 문서에서는 타입의 작동 방식을 설명하고 타입 관리를 위한 모범 사례를 제안합니다.

내용

TestStand 타입 카테고리


TestStand는 서로 다른 타입의 카테고리를 사용하여 정보를 저장하고 단계의 동작을 정의합니다.  데이터 타입은 테스트 시스템을 개발하고 실행하는 동안 정보를 저장하며, 단계 타입은 단계의 동작 및 실행 중에 단계에서 수집하는 결과를 정의합니다.  데이터 타입과 단계 타입은 모두 내장되어 TestStand와 함께 제공될 수 있으며, 이는 사용자가 개발한 사용자 정의 타입이 될 수도 있습니다.

TestStand 타입은 단계 타입, 사용자 정의 데이터 타입 및 표준 데이터 타입으로 분류됩니다.


데이터 타입

테스트 데이터를 관리하려면 복잡한 데이터 구조를 정의해야 하는 경우가 많습니다.  데이터 타입을 사용하면 이러한 데이터 구조를 중앙 집중화된 위치에서 관리할 수 있습니다.  데이터 타입은 시퀀스 파일 글로벌 변수, 시퀀스 로컬 변수 및 단계 프로퍼티 등 TestStand 프로퍼티나 변수의 구조를 정의합니다.  모든 데이터 타입은 다음 구성요소를 포함합니다.

  • 타입 이름: 타입을 고유하게 식별하는 데 사용됩니다.  TestStand는 이름이 같은 타입을 두 개 이상 메모리에 로드할 수 없습니다.
  • 버전: 타입 개정을 관리하고 타입 충돌을 해결하는 데 사용됩니다.
  • 데이터: 타입에 정의된 프로퍼티의 구조입니다.
  • 기본값: 타입 구획에서 정의한 프로퍼티 값은 해당 타입의 인스턴스에 대한 기본값으로 동작합니다.

일반적으로 다양한 프로퍼티와 컨테이너가 포함된 복잡한 관련 데이터들을 정의할 때 데이터 타입을 사용합니다.  예를 들어, 에러 데이터 타입은 에러가 발생한 경우 지정할 수 있는 타입의 불리언 프로퍼티, 에러 메시지를 포함할 수 있는 문자열 값 프로퍼티 및 에러 코드를 정의할 수 있는 정수 프로퍼티 등 세 가지 프로퍼티로 구성될 수 있습니다.

데이터 타입의 구조를 수정하면 해당 데이터 타입의 모든 인스턴스가 새로운 데이터 타입 구조를 반영하도록 업데이트되므로, 복잡한 데이터를 관리할 때는 항상 데이터 타입을 사용해야 합니다.  이를 통해 중앙 집중화된 위치에서 데이터 구조를 관리할 수 있습니다.  

표준 데이터 타입

표준 데이터 타입은 TestStand와 함께 제공되는 일련의 특정 데이터 타입으로, 에러, 경로 또는 웨이브폼과 같은 일반적인 데이터 타입을 저장하기 위한 표준 포맷을 정의합니다.  표준 데이터 타입은 대부분 수정할 수 없습니다. 수정 가능한 것도 있지만, 필요한 경우에만 변경해야 합니다. 이러한 타입은 다른 TestStand 구성요소에서 광범위하게 사용되기 때문입니다.  

단계 타입

사용자 정의 데이터 타입에서 변수 또는 프로퍼티를 생성할 수 있는 것처럼, 단계는 단계 타입에서 생성됩니다.  각 단계 타입은 고유한 이름, 내장된 사용자 정의 단계 타입 프로퍼티, 프로퍼티 및 단계 타입 동작의 기본값으로 구성됩니다.  모든 단계 타입은 단계 전체에 대해 기본 동작 및 데이터를 정의하는 일련의 공통 프로퍼티를 공유합니다.  단계 타입 프로퍼티 대화 상자를 사용하여 이러한 공통 프로퍼티를 편집하십시오.

이 문서는 단계 및 데이터 타입을 포함하여 모든 타입에 적용되는 개념을 중점적으로 다룹니다.  단계 타입 모범 사례에 대한 자세한 내용은 사용자 정의 단계 타입 개발 모범 사례 문서를 참조하십시오.

 

타입 팔레트 파일 및 시퀀스 파일에서의 파일 저장 비교하기

새로운 타입을 생성할 때는 타입이 저장된 디스크의 위치를 고려해야 합니다. TestStand는 타입을 시퀀스 파일 또는 타입 팔레트 파일에 저장할 수 있습니다.  대부분의 경우, 모든 생성 타입을 타입 팔레트 파일에 저장해야 합니다. 타입 팔레트를 사용하면 다음과 같은 이점이 있습니다.

  • 타입 팔레트 파일은 여러 시퀀스 파일에 타입을 저장하기 위한 중앙 집중화된 위치를 제공합니다.
  • TestStand를 시작할 때 타입 팔레트 파일이 메모리에 로드되도록 설정하여 모든 신규 시퀀스 파일에서 타입을 사용할 수 있도록 지원합니다.
  • 타입을 위한 중앙 집중화된 단일 위치가 있으면, 여러 개발자가 다양한 위치에 저장된 타입을 변경할 때 발생 가능한 타입 충돌을 방지할 수 있습니다.
  • 기본적으로 TestStand는 타입 팔레트의 어떤 타입도 자동으로 업데이트하지 않으므로, 원치 않는 타입 전파를 피할 수 있습니다.

시퀀스 파일에서 타입 팔레트 파일의 타입을 사용하는 경우, 타입 팔레트 파일이 없어도 작동하도록 타입의 복사본이 파일에 저장됩니다. 단, 타입 팔레트에서 해당 버전을 사용하여 타입을 변경해야만 합니다.  테스트 시퀀스를 배포할 때는 배포에 타입 팔레트 파일을 포함할 필요가 없습니다.  그러나 타입 팔레트 파일을 포함하면 테스트 시스템을 보다 쉽게 점증적으로 업데이트할 수 있습니다.  특정 타입에 대해 업데이트가 필요한 경우 시퀀스 파일을 변경하지 않고도 새로운 타입 팔레트 파일 버전을 생성하고 배포할 수 있습니다.

 

공유 타입 변경 관리하기

여러 개발자가 타입을 공유할 때, 각 개발자가 동일한 최신 타입 정의 버전을 사용하고 있는지 확인해야 합니다. 또한, 타입에 대한 변경사항을 병합하기가 어렵기 때문에 개발자가 동일한 타입을 별도로 변경하지 않도록 해야 합니다.  다음 기술을 사용하여 공유 타입을 효과적으로 관리하십시오.

  • 타입 팔레트 파일의 소유자 정의
  • 타입 팔레트에 소스 코드 컨트롤 사용

 

타입 팔레트 파일의 소유권 정의하기


타입 변경을 제어하려면, 타입에 대한 각 변경을 구현하거나 승인하는 소유자를 타입마다 명확히 설정해야 합니다.  대규모 조직에서는 보통 서로 다른 개인에게 타입 소유권을 지정하는 것이 좋습니다.  이 방법을 사용하려면 별도의 타입 팔레트 파일을 생성하여 타입을 논리 그룹으로 구성하십시오. 예를 들어, 프로젝트별 타입을 프로젝트 이름을 포함하는 타입 팔레트에 저장하고, 여러 프로젝트에서 사용하는 보다 일반적인 타입은 공유 타입 팔레트 파일에 저장할 수 있습니다.  그런 다음 각 타입 팔레트 파일의 소유자를 결정할 수 있습니다.

타입 팔레트 파일을 논리 그룹으로 구성하면 각 타입 팔레트 파일에 타입 소유자를 보다 쉽게 지정할 수 있습니다.

 

소스 코드 컨트롤을 사용하여 타입 팔레트 파일에 대한 변경사항 제한

타입 버전 변경을 추가로 제어하려면 소스 코드 컨트롤 솔루션을 사용하여 체크 아웃된 파일만 편집할 수 있도록 하십시오.  소스 코드 컨트롤 허가를 통해 특정 타입 팔레트 파일의 소유자만 변경사항을 체크인하도록 할 수 있습니다.  타입 팔레트 소유자는 파일에 대한 알림을 활성화해야만 파일과 관련된 모든 활동을 인지할 수 있습니다.

사용자는 로컬 컴퓨터에서 타입을 계속 수정할 수 있지만, 소스 코드 컨트롤을 사용하면 TestStand에서 이러한 변경사항을 디스크 또는 파일의 공유 버전에 저장하지 못하게 됩니다.  


관련이 없는 타입 간의 충돌 방지하기


관련이 없는 여러 타입이 실수로 동일한 이름을 갖는 경우에 타입 충돌이 발생할 수 있습니다. 타입은 시스템에서 이름을 고유 식별자로 사용하므로, 새로운 타입을 개발할 때는 타입 이름 앞에 고유한 소속 ID를 추가하십시오.  예를 들어, TestStand와 함께 제공되는 모든 단계 타입의 이름에는 ‘NI’가 접두어로 붙습니다.  이렇게 하면 그룹 간에 코드를 공유할 경우, 사용 중인 타입이 소속 외부에서 생성된 타입과 충돌할 염려가 없습니다.

 

타입 충돌


TestStand는 특정 이름을 가진 타입 버전을 한 번에 하나씩만 로드합니다. 스테이션에 로드된 모든 파일에 동일한 타입 정보가 사용되어야 하기 때문입니다.  시퀀스 파일을 열거나 이미 로드된 것과 동일한 이름을 가진 타입을 포함한 타입 팔레트를 로드하려고 하면 타입 충돌이 발생합니다. 이때 TestStand는 현재 타입을 그대로 로드할 것인지 새로운 타입으로 대체할 것인지 결정해야 합니다.  


현재 TestStand에 로드된 것과 다른 타입 정의를 포함하는 파일을 로드하려고 하면 타입 충돌이 발생합니다.  새로운 파일을 로드하기 전에 충돌을 해결해야 합니다.

 

개발자가 고유한 타입 이름을 유지하고 단일 제어 타입 팔레트 파일에서 타입을 유지하는 경우, TestStand는 타입 충돌을 올바르게 핸들링할 수 있습니다.  그러나 자동 타입 충돌 해결 규칙이나 개발자의 잘못된 결정 때문에 타입 충돌이 파일에 부적합한 변경을 초래한 경우, 원치 않는 타입 버전이 전파될 수 있습니다.  


원치 않는 타입 버전 전파


원치 않는 타입 전파란, 타입 충돌을 해결할 때 다른 타입 버전을 포함하는 파일에 원치 않는 변경을 초래하는 경우를 말합니다. 잘못된 타입의 파일을 공유하면 다른 개발자가 자신도 모르게 잘못된 타입 버전을 로드할 수 있습니다.  더 많은 개발자 간에 파일이 공유되면 새로운 타입이 여러 파일로 전파되므로, 타입이 잘못된 파일을 전부 가려내기가 어려워질 수 있습니다.
이는 다음과 같은 상황에서 일어나는 충돌을 해결할 때 발생할 수 있습니다.

  • 타입이 호환되지 않는 이전 TestStand 버전에서 타입 로드
  • 서로 관련 없는 타입을 같은 이름으로 다수 생성
  • 여러 개발자가 타입을 유사하게 변경

 

타입 충돌 해결 관리하기


이 섹션의 기법을 사용하면 타입 충돌을 잘못 핸들링하는 경우를 최소화하고, 원치 않는 타입 버전의 전파를 방지할 수 있습니다.


타입 버전 필드 유지


TestStand 타입은 버전 필드를 사용하여 가장 최신 타입 버전을 판별합니다.  최신 버전의 타입이 메모리에 로드되고, 사용자가 이전 타입 버전을 사용하는 시퀀스 파일을 로드하면, TestStand는 스테이션 셋팅에 따라 최신 타입 버전을 사용하도록 파일을 자동으로 업데이트할 수 있습니다.  기본적으로 TestStand는 타입 팔레트 파일에서 타입을 업데이트하지 않는 모든 충돌을 자동으로 해결합니다.

타입 버전이 업데이트되도록 하기 위해 TestStand는 수정된 타입 플래그를 사용하여 편집한 타입을 추적합니다.  이 플래그를 활성화한 타입을 저장하면, TestStand는 변경이 이루어졌음을 나타내는 경고를 표시합니다.  



타입이 수정될 때 TestStand는 경고를 보내 변경이 의도된 것인지 확인한 후 저장합니다.

이 경우 타입 버전을 올리도록 선택해야 변경사항이 TestStand에 로드될 때 타입을 참조하는 다른 파일로 전파됩니다.  그러나 이 경고는 원치 않는 타입 변경을 방지하는 데 유용한 도구이므로, 셋팅 저장 및 입력요청 끄기 옵션을 선택하지 마십시오.  변경사항이 확실하지 않은 경우, 대화 상자를 취소하면 저장 작업이 중단되어 타입을 점검하고 변경사항이 올바른지 확인할 수 있습니다.


자동 타입 충돌 해결 설정하기

경우에 따라 TestStand는 타입 충돌 시 로드해야 할 타입을 자동으로 결정할 수 있습니다.  다음 조건이 충족되는 경우에만 자동으로 타입 충돌을 해결할 수 있습니다.

  • 두 타입의 버전이 동일하지 않습니다.
  • 어느 타입에도 ‘수정됨’ 플래그를 설정하지 않습니다.

TestStand는 자동 타입 충돌 해결 허용 셋팅을 제공하므로, TestStand에서 이러한 충돌을 자동으로 해결할 시점을 결정할 수 있습니다.  다음 단계에 따라 이 셋팅에 액세스하십시오.

  1. 시퀀스 편집기에서 설정 ≫ 스테이션 옵션을 선택하십시오.
  2. 파일 탭을 선택하십시오.


TestStand를 사용하면 타입 충돌이 자동으로 핸들링되는 시점과 개발자에게 메모리에 보관할 타입 버전을 선택하라는 입력요청을 보낼 시점을 설정할 수 있습니다.

 

대부분의 경우 기본 셋팅값을 사용해야 합니다. 그래야 타입 팔레트 파일이 수정될 경우에만 입력요청을 표시합니다.  이 셋팅을 사용하면, 하위 버전 타입이 타입 팔레트 파일에 저장되어 있지 않는 한, TestStand에서 상위 버전의 타입을 자동으로 선택할 수 있습니다.  이 셋팅은 원치 않는 타입 전파 가능성이 있을 때만 타입 충돌 입력요청이 표시되도록 합니다.  또한, 새로운 TestStand 버전에 이전 NI 타입의 시퀀스 파일을 로드하는 것과 같은 무해한 충돌이 자동으로 해결되므로, 사용자가 결정을 내릴 필요가 없습니다.

예를 들어, 개발자 A는 회사 타입 팔레트 파일 Company_types.ini에 저장되는 타입인 단계 타입 ‘RunCalibration’을 업데이트합니다.  개발자는 타입 팔레트 파일 소유자와 이를 논의한 후, 변경사항을 타입에 저장하고 타입 버전을 1.0.1.0으로 올립니다.  그런 다음 업데이트된 타입 팔레트를 소스 코드 컨트롤 저장소에 저장합니다.  다른 개발자 B는 추후 저장소에 동기화하여 업데이트된 타입의 Company_types.ini 버전을 받습니다.  그런 다음 TestStand를 열고, 타입을 참조하는 시퀀스 파일을 로드합니다.  시퀀스 파일은 계속해서 이전 타입 버전을 참조하므로, 시퀀스 파일의 참조는 원하는 대로 자동 업데이트됩니다.

그러나 세 번째 개발자 C도 ’RunCalibration’ 단계를 사용하는 시퀀스 파일을 보유하며, 타입 소유자와 상의하지 않고 실수로 ‘RunCalibration’ 단계 타입을 따로 변경하여 로컬 인스턴스를 버전 1.1.0.0으로 업데이트합니다.  이 개발자가 회사 타입 팔레트 파일을 동기화한 다음 TestStand에 시퀀스 파일을 로드하는 경우, TestStand는 타입 충돌을 해결하라는 메시지를 표시합니다. 최신 버전을 사용하면 타입이 수정되기 때문입니다.  개발자 C는 타입 팔레트 파일이 업데이트되었음을 알게 되므로, 타입 팔레트 소유자에게 문의하거나 해당 타입에 대한 로컬 변경사항을 되돌립니다.

TestStand가 타입 충돌을 자동으로 해결할 수 없는 경우, 다음과 같이 충돌 해결 방법을 결정하라는 입력요청이 표시됩니다.


파일의 타입 충돌 대화 상자를 사용하여 자동으로 해결할 수 없는 타입 충돌을 해결하십시오.

두 타입 중 하나를 로드하거나, 타입 중 하나의 이름을 바꾸거나, 파일 열기를 취소하여 타입 충돌을 해결할 수 있습니다.  사용할 버전을 선택하면 TestStand는 메모리의 모든 인스턴스를 선택한 타입과 일치하도록 변환합니다. 타입 중 하나의 이름을 바꾸면 TestStand는 로드된 타입을 참조하도록 메모리의 인스턴스를 수정하고, 파일의 타입을 참조하도록 새로운 파일의 인스턴스를 수정합니다.


타입별 충돌 해결 셋팅 설정하기

엄격하게 제어되는 환경에서는 사용자에게 매번 입력요청을 선택하도록 하여 충돌을 해결할 수 있습니다. 이 옵션을 선택하면 자동 타입 충돌 해결이 완전히 비활성화됩니다. 이렇게 하면 타입 충돌이 감지되는 경우 사용자에게 충돌을 해결하라는 메시지가 표시되므로, 로드되는 타입을 완전히 제어할 수 있습니다.  그러나 이로 인해 개발 프로세스에서 추가적인 의사 결정을 내려야 하므로, 개발자가 잘못된 결정을 하고, 많은 대화 상자를 빠르게 닫아 버릴 가능성이 있습니다.  

더 좋은 방법은 엄격한 제어가 필요한 타입에 대해 타입별 셋팅을 사용하는 것입니다.  타입 셋팅의 버전 탭에서 타입 자동 해결 여부를 지정할 수 있습니다.  이 셋팅을 사용하면 이전 NI 타입의 시퀀스 파일을 새로운 TestStand 버전에 로드하는 것과 같이 위험도가 낮은 타입 충돌에 대해 불필요한 사용자 상호 작용을 방지하면서도, 엄격하게 제어되는 사용자 정의 타입을 완벽히 관리할 수 있습니다.

보다 엄격한 제어가 필요한 특정 타입에 대해서는 자동 타입 충돌 해결을 비활성화하십시오.

 

이전 TestStand 버전으로 원치 않는 타입 버전 전파 방지하기

시퀀스 파일을 이전 TestStand 버전에 저장할 수 있지만, 일부 타입은 이전 TestStand 버전에서 제대로 실행되지 않을 수 있습니다. 이 경우 타입을 실행할 수 있는 가장 이른 TestStand 버전을 지정할 수 있습니다. 타입 프로퍼티 대화 상자의 버전 탭에서 타입을 사용할 수 있는 가장 이른 TestStand 버전 설정 옵션을 활성화하고, 가장 이른 버전을 TestStand의 현재 버전으로 설정하십시오. 이렇게 하면 현재 타입 버전이 이전 TestStand 버전에 사용되거나 실수로 전파되지 않습니다.


이전 TestStand 버전에서 타입을 사용해야 하는 경우, 다른 TestStand 버전에서 실행할 별도의 타입 버전을 생성하십시오. 이전 TestStand 버전에 대한 시퀀스를 저장하면, TestStand는 일련의 호환성 디렉토리를 검색하여, 시퀀스 파일을 저장하려는 이전 버전과 호환되는 타입 버전을 찾습니다. TestStand는 타입 팔레트 파일의 타입을 시퀀스 파일과 함께 <TestStand Public>\Components\Compatibility\<version number><TestStand Public>\Components\Compatibility\<version number> 디렉토리에 저장합니다. 이른 TestStand 버전의 타입 팔레트 파일을 <TestStand Public>\Components\Compatibility\<version number> 디렉토리에 배치하여 TestStand가 시퀀스 파일과 함께 올바른 타입 버전을 저장하는지 확인할 수 있습니다.

 

내장된 데이터 타입 사용자 정의하기


개발자는 표준 데이터 타입 및 프로세스 모델 데이터 타입을 비롯한 내장된 데이터 타입을 사용자 정의할 때 주의를 기울여야 합니다.  CommonResults와 같이 여러 내장된 타입은 다른 TestStand 단계 타입 또는 데이터 타입에서 광범위하게 사용되므로, 원치 않는 타입 전파가 이루어질 가능성이 높습니다.


표준 데이터 타입 사용자 정의 시 고려 사항

타사 제품으로 배포되거나 여러 소속에서 사용될 시퀀스 파일 또는 타입 팔레트 파일을 생성하는 경우, 내장된 타입을 사용자 정의하지 마십시오. 내장 타입이 수정된 파일은, 타입 변경을 인식한 단일 소속 내에 남아 있어야 합니다.  시퀀스 파일이나 타입 팔레트가 배포되는 경우, 다른 소속의 타입 버전이 파일에 로드되면 다른 소속에서 타입 사용자 정의 내용을 상속하거나, 충돌이 발생할 수 있습니다.  

내장된 타입을 변경하면 타입을 사용하는 모든 테스트 스테이션에 영향을 미치므로, 소속의 테스트 아키텍처를 이해하고 있는 중앙 개발자 또는 설계자를 지정하고 변경사항을 승인하도록 하여 타입 관리 문제를 줄입니다.

 

프로세스 모델 데이터 타입 사용자 정의 시 고려 사항

TestStand 프로세스 모델 및 플러그인 시퀀스는 다양한 데이터 타입을 사용하여 프로세스 모델 데이터 구조를 정의합니다.  예를 들어, UUT 데이터 타입에는 시리얼 번호, 부품 번호 및 테스트 소켓 인덱스와 같은 데이터가 포함됩니다.  필요한 경우가 아니라면 이러한 타입은 사용자 정의하지 말아야 합니다.  프로세스 모델 타입은 시퀀스 파일에만 정의되며, 중앙 타입 팔레트를 보유하지 않습니다.  이런 이유로 이 타입에서 원치 않는 타입 전파가 보다 쉽게 발생할 수 있습니다. 기본 자동 충돌 해결 셋팅을 사용하여 TestStand에서 타입을 자동으로 업데이트할 수 있기 때문입니다.
UUT 또는 NI_StationInfo 데이터 타입에 별도로 데이터를 추가해야 하는 경우, 타입에 정의된 구조화되지 않은 컨테이너인 AdditionalData 프로퍼티를 사용하여 런타임의 타입 인스턴스에 또 다른 데이터를 추가할 수 있습니다.  이 방법에 대한 자세한 정보는 프로세스 모델에 UUT 및 테스트 스테이션에 대한 추가 정보 저장하기 도움말 토픽을 참조하십시오.