TestStand 프로세스 모델 개발 및 사용자 정의

개요

프로세스 모델 개발 및 사용자 정의는 NI TestStand에 포함된 강력한 기능으로, 여러 테스트 시퀀스에서 개념을 일반화하고 코드를 쉽게 재사용하도록 도와주어 개발 및 유지관리에 드는 시간을 절감할 수 있게 지원합니다.

이 문서는 프로세스 모델을 사용자 정의하기 위한 모범 사례를 설명하며, 기본 프로세스 모델 개발 관련 실무 지식이 있는 사람들에게 가장 유용합니다. 이러한 개념에 익숙해지려면 프로세스 모델 이론 문서를 참조하여 TestStand에서 프로세스 모델을 사용하는 방법에 대한 개요를 확인하십시오.

내용

테스트 시스템에서 프로세스 모델의 역할

제품에 대한 전기능 테스트를 만들려면 테스트 사례를 구현하는 것만으로는 부족합니다. 일반적으로 테스트 시스템은 테스트 수행 시퀀스를 실행하기 전과 후는 물론이고, 시퀀스를 실행하는 도중에도 일련의 작업을 수행해야 합니다. 테스트 프로세스를 정의하는 일반적인 작업으로는 UUT 식별하기, 운영자에게 통과/실패 상태 통보하기, 결과 로깅하기 및 테스트 리포트 생성하기 등이 있습니다. 이러한 일련의 작업과 실행의 흐름을 프로세스 모델이라고 합니다. TestStand에서 프로세스 모델 계층은 시퀀스 파일로 구현되며 TestStand 엔진과는 구별됩니다. 이 모듈화를 통해 테스트 실행 자체에 영향을 주지 않고도 프로세스 모델을 사용자 정의할 수 있습니다.

테스트 실행 및 테스트 코드와는 별개로 추가 계층을 제공하여 일반적인 테스트 기능을 구현하는 프로세스 모델

 

프로세스 모델은 TestStand를 여타 자체 개발 테스트 실행과 차별화합니다. 일반적으로 이러한 어플리케이션에는 프로세스 모델 개념이 없으며, 테스트 시퀀스 또는 테스트 실행 자체가 일반적인 테스트 작업을 위한 메커니즘을 제공합니다.  다음 접근 방식 중 어느 것도 적합하지 않습니다.

  • 테스트 코드가 일반 작업을 담당하는 경우, 새롭게 생성된 테스트 세트는 이 코드를 반복합니다.
  • 일반 작업이 테스트 실행에서 곧바로 구현된 경우, 일반 테스트 작업을 변경하려면 테스트 실행 전체를 업데이트합니다.

프로세스 모델을 사용하여 일반 작업을 수행하면 기본 테스트 실행에서 분리된 채로 한 위치에서만 일반 작업을 수정할 수 있어 모듈화 및 재사용성이 향상됩니다.

TestStand 프로세스 모델은 플러그인 아키텍처를 통해 추가로 모듈화됩니다.  프로세스 모델은 플러그인 시퀀스 파일을 호출하여 리포트 생성 및 데이터베이스 로깅과 같은 결과 처리를 구현합니다.  프로세스 모델 자체를 수정하지 않고도 이러한 플러그인을 수정하거나 자체 제작하여 프로세스 모델의 기능을 확장할 수 있습니다.

플러그인을 호출하여 리포트 생성 및 데이터베이스 로깅을 비롯한 결과 처리 작업을 수행하는 프로세스 모델,  사용자 정의 로깅 메커니즘 구현을 가능케 하는 사용자 정의 플러그인 생성 작업

 

TestStand 프로세스 모델을 사용하여 매우 강력하고 유연한 테스트 어플리케이션을 제작할 수 있습니다. 프로세스 모델의 모듈화 구현은 프레임워크 기능을 업데이트할 때 필요한 코드 변경을 최소화합니다. TestStand 프로세스 모델 아키텍처를 사용하여 완전한 테스트 시스템을 개발하면 개발 및 유지관리에 드는 비용과 시간을 절약할 수 있습니다.

프로세스 모델 구성요소


TestStand에서 프로세스 모델은 프로세스 모델 옵션이 활성화된 시퀀스 파일로 구현되며, 추가적인 모델별 시퀀스 타입을 포함할 수 있습니다.  시퀀스 파일 타입은 시퀀스 파일 프로퍼티의 고급 탭에서 설정할 수 있습니다. 각 시퀀스 타입에는 다음과 같이 특정 동작이 있습니다.

  • 실행 입력 포인트를 통해 사용자는 원하는 프로세스 모델 시퀀스로 테스트를 실행할 수 있습니다.
  • 설정 입력 포인트는 사용자가 프로세스 모델 셋팅을 설정하고 해당 셋팅을 저장할 수 있는 사용자 인터페이스를 제공합니다.
  • 모델 콜백을 사용하면 테스트 시퀀스 파일이 프로세스 모델 동작을 덮어쓸 수 있습니다.

시퀀스 프로퍼티 대화 상자의 모델 탭을 사용하여 프로세스 모델 파일에 포함될 수 있는 시퀀스 타입을 설정하십시오.


실행 입력 포인트 시퀀스


실행 입력 포인트를 통해 사용자는 프로세스 모델로 테스트 코드를 실행할 수 있습니다. 기본 TestStand 프로세스 모델은 테스트 UUT 및 단일 패스 등 두 가지 실행 입력 포인트를 제공합니다. 이러한 각 입력 포인트는 프로세스 모델 시퀀스 파일의 순서대로 구현됩니다. 활성 윈도우에 프로세스 모델을 사용하는 시퀀스 파일이 포함된 경우, 시퀀스 편집기의 실행 메뉴는 실행 입력 포인트를 나열합니다.

순차적인 프로세스 모델은 단일 패스 및 테스트 UUT 실행 입력 포인트를 사용합니다. 두 실행 입력 포인트 모두 클라이언트 시퀀스 파일의 MainSequence 시퀀스를 호출하여 한 번에 하나의 UUT에 대한 테스트를 실행합니다. 입력 포인트는 다른 작업도 공유합니다(예: 테스트 리포트 생성 및 데이터베이스에 데이터 결과 저장).

순차적인 프로세스 모델의 단일 패스 및 테스트 UUT 실행 입력 포인트 흐름

입력 포인트 이름 표현식은 입력 포인트를 사용하는 동안 시퀀스 편집기 또는 사용자 인터페이스에 나타나는 이름입니다. 시퀀스 프로퍼티 대화 상자의 모델 탭에서 입력 포인트 이름 표현식 텍스트 박스를 사용하여 이 값을 편집할 수 있습니다. 입력 포인트 이름 표현식 텍스트 박스는 선택한 시퀀스가 실행 입력 포인트인 경우에만 표시됩니다. ResStr("MODEL", "TEST_UUTS")와 같은 기본값은 TestStand 현지화 기능이 있는 ResStr 함수를 사용합니다. 값을 다른 현지화된 값으로 대체하거나, 사용자 관점에서 입력 포인트를 설명하는 상수 문자열 식을 사용하십시오.  

상수 대신 현지화 문자열을 사용하면 프로세스 모델 자체를 수정할 필요 없이 문자열 값을 변경할 수 있다는 이점이 있습니다. 현지화에 TestStand 리소스 문자열을 사용하는 방법에 대한 자세한 정보는 TestStand를 다른 언어로 현지화하기 길라잡이를 참조하십시오.

 

설정 입력 포인트


설정 입력 포인트는 사용자가 프로세스 모델의 셋팅을 설정할 수 있는 방법을 제공합니다.  기본 모델에는 모델 옵션 및 결과 처리 입력 포인트가 포함됩니다.  실행 입력 포인트와 마찬가지로 설정 입력 포인트는 프로세스 모델 파일에서 순차적으로 구현되며 시퀀스 편집기의 설정 메뉴에 나열됩니다.  셋팅을 저장하기 위해 모델 입력 포인트는 TestStand 설정 디렉토리의 설정 파일에 데이터를 작성합니다.

 

모델 콜백


모델 콜백을 통해 테스트 개발자는 프로세스 모델 자체를 변경하지 않고도 프로세스 모델의 특정 측면을 각 테스트에 적합하게 사용자 정의할 수 있습니다.  프로세스 모델은 입력 포인트가 다양한 실행 시점에서 호출을 수행하는 콜백 시퀀스를 정의합니다.  예를 들어, 테스트 UUT 입력 포인트는 테스트를 시작하기 전에 PreUUT 콜백 시퀀스를 호출하여 사용자에게 시리얼 번호를 묻습니다.  테스트 개발자가 이 기능의 일부를 변경해야 하는 경우, 테스트 시퀀스 파일에서 콜백을 덮어쓸 수 있습니다.  이렇게 되면 모델이 PreUUT 시퀀스를 호출할 때 프로세스 모델 파일의 PreUUT 시퀀스 대신 테스트 시퀀스 파일의 시퀀스가 호출됩니다.

프로세스 모델 콜백에 대한 자세한 설명은 NI TestStand에서 콜백 사용하기 문서를 참조하십시오.


프로세스 모델에서 콜백 시퀀스를 덮어써 사용자 정의 동작을 정의하는 테스트 시퀀스 파일

 

프로세스 모델 플러그인


기본 프로세스 모델은 플러그인 아키텍처를 사용하여 리포트 생성 및 데이터베이스 로깅 등 결과 처리 작업을 구현합니다.  각 플러그인은 기본 프로세스 모델 입력 포인트의 다양한 지점에서 호출되는 플러그인 입력 포인트 시퀀스를 포함하여 별도의 시퀀스 파일로 구현됩니다.  프로세스 모델은 테스트 개발자가 플러그인을 활성화하고 플러그인 셋팅을 설정할 수 있는 플러그인 설정 대화 상자를 제공합니다.  

TestStand 프로세스 모델 플러그인 아키텍처에 대한 자세한 정보는 프로세스 모델 플러그인 아키텍처 도움말 토픽을 참조하십시오.  

 

추가 엔진 콜백


프로세스 모델 시퀀스 파일은 표준 시퀀스 파일에서 사용할 수 없는 추가 엔진 콜백을 제공합니다.  ‘ProcessModel’이 접두어로 붙은 이러한 콜백은 사용자가 정의한 프로세스 모델의 현재 클라이언트 시퀀스 파일 내 단계에 대해서만 실행됩니다.  예를 들어, ProcessModelPostStep 콜백은 테스트 시퀀스에서 수행되는 각 단계를 마치고 실행되지만, 프로세스 모델 자체의 단계가 진행되고 나서는 실행되지 않습니다.

이러한 콜백의 일반적인 어플리케이션은 사용자 정의 에러 핸들링입니다.  테스트 개발자는 보통 에러에서 최대한 많은 정보를 얻고 에러 발생 시 시스템 동작을 제어하려고 합니다. 다른 사용 사례에서 하도급을 거쳐 완전히 자동화된 환경은 이전 시스템을 추적하고 에러 활동을 테스트하기 위해 적절한 디버그 로깅과 함께 시작/정지 및 빨간색/초록색 조명 출력을 필요로 하는 경우가 많습니다.

일반적으로 프로세스 모델 레벨에서 정의된 ProcessModelPostStepFailure 및 ProcessModelPostStepRuntimeError 엔진 콜백을 사용하여 테스트 시퀀스 프로그래머가 추가적인 노력을 들이지 않고도 모든 클라이언트 시퀀스 파일의 에러를 핸들링할 수 있습니다. 이러한 콜백은 클라이언트 시퀀스 파일에서 에러가 발생하면 실행됩니다.

 

프로세스 모델 사용자 정의하기


TestStand와 함께 제공되는 프로세스 모델의 기능을 확장하거나 수정해야 하는 경우가 종종 있습니다.  프로세스 모델에 대한 일반적인 변경 사항에는 리포트 수정, 재시도 테스트 전략, 에러 핸들링 및 로깅, 스테이션 교정 루틴 및 UUT 선택 메커니즘이 포함됩니다.

 

프로세스 모델 플러그인을 사용하여 새로운 기능 추가하기


기본 프로세스 모델은 플러그인을 사용하여 리포트 생성 및 데이터베이스 로깅 등 결과 처리 기능을 구현합니다.  그러나 플러그인은 결과 처리뿐만 아니라, 여타 다양한 기능을 수행할 수 있습니다.  프로세스 모델에 기능을 추가해야 하는 경우 프로세스 모델 자체를 수정하지 않고 해당 기능을 구현하는 플러그인을 생성할 수 있습니다.  이 접근 방식에는 많은 장점이 있습니다.

  • 변경 사항을 일일이 구현하는 대신 순차, 일괄 및 병렬 모델과 플러그인을 쉽게 통합할 수 있습니다.
  • 사용자 정의된 프로세스 모델을 유지관리 및 배포할 필요가 없습니다.
  • 추후 프로세스 모델에 대한 변경 사항과 사용자 정의한 내용을 통합할 수 있습니다.
  • 프로세스 모델 코드 변경 사항을 통합할 필요 없이 플러그인을 공유할 수 있습니다.

기본적으로 사용자는 모델이 실행할 플러그인 인스턴스를 생성해야 합니다.  옵트인 방식은 추가하려는 새 기능이 특정 경우에 필요할 때만 적합합니다.  프로세스 모델 자체의 코드와 유사하게 항상 실행되어야 하는 기능의 경우, 프로세스 모델 플러그인 애드온을 사용할 수 있습니다.   모델 플러그인 애드온은 표준 플러그인과 동일한 방식으로 구현되지만, 플러그인 디렉토리의 애드온 서브폴더에 저장됩니다.  플러그인 설정 대화 상자에 표시되지 않으며 항상 실행됩니다.



새 플러그인 생성하기


사용자 정의 결과 처리 외에도 다양한 방법으로 모델을 활용하기 위해 사용자 정의 플러그인을 개발할 수 있습니다.  예를 들면, 테스트 스테이션 교정은 사용자 정의 플러그인을 통해 프로세스 모델에 추가할 수 있는 기능입니다.  테스트 스테이션에서 테스트 시퀀스 파일을 실행하기 전에 스테이션 교정 유효성을 확인해야 할 수도 있습니다. 이러한 루틴은 보통 만료 날짜를 기준으로 테스트 장비가 교정되었는지 확인합니다. 교정이 만료되면 에러 상태가 트리거되고 운영자에게 경고하며 테스트가 실행되지 않습니다.

사용자 정의 모델 플러그인에서 기능을 구현하면 사용자가 필요한 경우 교정을 비활성화하고 결과 처리 대화 상자를 통해 테스트 개발자를 위한 설정 인터페이스를 제공할 수 있습니다.  구현 정보는 프로세스 모델 플러그인 생성하기 토픽을 참조하십시오.

 

기존 모델 동작 수정하기


UUT 시리얼 번호 추적과 같이 프로세스 모델에 곧바로 구현되는 동작을 변경하려면 모델을 직접 수정해야 합니다. 프로세스 모델 사본을 새로운 프로세스 모델의 개발이나 기존 프로세스 모델의 사용자 정의를 위한 시작점으로 사용할 수 있으며, 이로써 기본 프로세스 모델에 구현되어 있는 미세 조정 로직을 대규모로 재사용할 수 있습니다.    

프로세스 모델을 수정하기 전에 <TestStand>/Components/Models에 있는 전체 모델 디렉터리의 복사본을 TestStand 퍼블릭 디렉토리 <TestStand Public>/Components/Models의 해당 위치에 생성하십시오.  TestStand 퍼블릭 위치에 있는 파일만 변경해야 합니다.

 

모델 입력 포인트 수정하기


실행 입력 포인트의 실행 흐름을 자주 사용자 정의해야 할 수 있습니다.  예를 들어, 특정 장애 타입이 발생하거나 운영자당 재시도 횟수가 제한되어 감독자가 개입하여 추가 재테스트의 필요성을 결정하기 전에 테스트 시스템이 자동으로 UUT에 대한 테스트를 재시도하는 게 바람직할 수 있습니다. 이런 식의 변경이 필요하면 입력 포인트 시퀀스를 직접 수정하여 루핑 및 기타 조건을 추가해야 합니다.  입력 포인트를 변경할 때는 변경 내용을 문서화하여 기본 동작과 사용자 정의한 내용을 쉽게 구분할 수 있도록 하십시오.

 

테스트 개발자가 모델 동작을 사용자 정의할 수 있도록 허용하기

프로세스 모델을 사용자 정의할 때 특정 테스트에서 정의한 동작을 수정 또는 비활성화해야 하는지 고려해야 합니다.  테스트 개발자가 변경해야 할 경우, 기존 또는 새 콜백 시퀀스를 사용하여 변경 사항을 구현하십시오.  그런 다음 테스트 개발자는 콜백을 덮어써 사용자가 정의한 동작을 변경할 수 있습니다.  

새로운 기능은 항상 별도의 순서로 구현되어야 하며, 이 순서에 따라 입력 포인트에서 호출됩니다. 테스트 개발자에게 제공하려는 사용자 정의 레벨에 따라 다음과 같은 방법으로 프로세스 모델에서 시퀀스를 구현할 수 있습니다.

  • 특정 실행 지점에서 모델을 확장할 수 있는 수단을 테스트 개발자에게 제공하려고 합니다. 필요한 경우 클라이언트 시퀀스 파일이 기능을 삽입할 수 있도록, 기본 기능이 포함되지 않은 자리 표시자를 구현하십시오. 입력 포인트에서 호출할 때 파라미터를 선택적으로 콜백에 전달하여 관련 데이터를 테스트 개발자에게 제공할 수 있습니다.  예를 들어, ModifyReportHeader는 기본 구현을 제공하지 않지만, 리포트 관련 데이터가 포함된 파라미터가 콜백에 전달되면, 테스트 개발자는 리포트에 접근하고 수정할 수 있습니다.
  • 테스트 개발자가 사용자 정의하거나 비활성화할 수 있는 기능을 정의하려고 합니다.  기본 동작을 구현하십시오. 이렇게 되면 모델 콜백은 프로세스 모델 기본 구현을 실행할 수 있고, 클라이언트 콜백은 추가 기능을 구현할 수 있습니다. 기본적으로 PostUUT는 배너를 구현하여 테스트 시퀀스의 결과를 표시합니다. 클라이언트 시퀀스 파일은 콜백을 덮어쓰고 프로세스 모델 구현을 계속 호출하여 사용자 정의 PostUUT 동작을 구현하고 배너를 유지할 수 있습니다.  시퀀스 프로퍼티의 시퀀스 생성 및 덮어쓰기 옵션을 사용할 때 단계 복사 및 로컬 기능으로 테스트 개발자가 콜백을 덮어쓰는 경우 시퀀스의 내용이 복사되도록 지정할 수 있습니다.
  • 테스트 개발자가 기능을 일체 사용자 정의하지 못하게 하려고 합니다. 테스트 개발자가 절대 수정해서는 안 되는 기능을 정의하는 경우, 콜백 대신 클라이언트 시퀀스 파일에서 덮어쓸 수 없는 일반 시퀀스를 사용하십시오.


기존 모델 플러그인 동작 사용자 정의하기


프레임워크 개발자는 일반적으로 테스트 시스템의 특정 요구 사항을 해결하기 위해 리포트 생성 동작을 사용자 정의합니다.  리포트 사용자 정의는 고급 아키텍처 시리즈의 NI TestStand 리포트 생성 및 사용자 정의를 위한 모범 사례 문서에서 자세히 다룹니다.  이 문서는 TestStand 모델 아키텍처 내에서 리포트를 생성하는 데 사용자 정의한 내용을 구현하는 방법을 상세히 설명합니다.  

 

프로세스 모델 데이터 구조 수정하기


기본 프로세스 모델은 현재 UUT, 스테이션 및 모델 옵션에 대한 정보를 저장하는 데이터 타입을 정의합니다.  경우에 따라 이러한 프로퍼티, 흔히 UUT 데이터에 추가 데이터를 저장해야 할 수도 있습니다.  예를 들어, 기본 TestStand UUT 선택 메커니즘은 시리얼 번호만 추적하지만, 모델 번호도 유지해야 하는 경우가 있습니다.  

NI는 가능하면 모델 데이터 타입을 변경하지 말 것을 권장합니다. 수많은 TestStand 파일에서 모델 데이터 타입이 참조되며, 업데이트를 유지하기 어려울 수 있기 때문입니다.  단, 프로세스 모델은 UUT 및 NI_StationInfo 데이터 타입에 구조화되지 않은 프로퍼티를 제공하므로 UUT 데이터 타입을 수정하지 않고도 UUT 추적 정보를 쉽게 추가할 수 있도록 지원합니다. UUT.AdditionalData 컨테이너에 새로운 ModelNumber 프로퍼티를 생성하여 이 정보를 저장할 수 있습니다.  TestStand와 함께 제공되는 리포트에 사용자 정의 데이터 추가하기 예는 이 프로퍼티를 사용하여 필드를 프로퍼티에 추가하고 이를 테스트 리포트에 포함하는 방법을 보여줍니다.  이 예에서는 콜백을 사용하여 클라이언트 시퀀스 파일에 업데이트를 구현하지만, 프로세스 모델에도 동일한 접근 방식을 사용할 수 있습니다.

 

특정 테스트 스테이션에 대한 사용자 정의 동작 정의하기


<TestStand Public>\Components\Callbacks\Station 디렉토리의 StationCallbacks.seq에서 이름이 같지만 기능은 다른 시퀀스를 생성하여 프로세스 모델 시퀀스 파일에서 콜백을 덮어쓸 수도 있습니다. TestStand는 모델에 정의된 비슷한 이름의 콜백을 호출하는 대신 StationCallbacks.seq에 있는 모델 콜백을 호출합니다. 클라이언트 파일의 콜백은 모델 및 StationCallbacks.seq 파일에서 비슷한 이름의 콜백을 덮어씁니다.

 

사용자 정의된 프로세스 모델을 최신 TestStand 버전으로 업그레이드하기

최신 TestStand 버전으로 업그레이드할 때 기본 프로세스 모델에 대한 변경 사항을 새로운 버전에서 NI가 변경한 내용과 병합해야 합니다.  이를 위해서는 먼저 시퀀스 편집기의 편집 ≫ 시퀀스 파일 비교에서 TestStand 비교 도구를 사용하여 이전 기본 프로세스 모델과 최신 기본 프로세스 모델 간의 차이점을 확인하십시오. 모든 수정 사항이 프로세스 모델 파일의 새로운 시퀀스에 집중되거나 플러그인에서 별도로 구현되는 경우 프로세스 모델에서 사용자 정의한 내용을 최신 프로세스 모델 버전으로 비교적 쉽게 가져올 수 있습니다.

2012년 이전 TestStand 버전에서 생성한 모델을 마이그레이션하는 경우, 새로운 모델에서 플러그인 아키텍처를 구현하는 방법에 중요한 변경 사항이 있습니다.  이 경우 프로세스 모델에서 사용자 정의한 내용을 TestStand 2012 또는 이후 버전으로 마이그레이션하기에서 프로세스 모델 마이그레이션에 대한 자세한 정보를 참조하십시오.