TestStand에는 테스트 시퀀스의 기초 구성 요소가 되는 여러 내장 단계 타입이 포함되어 있습니다. 내장 단계 타입 외에, TestStand를 사용하면 사용자 정의 단계 타입을 생성하여 추가 기능을 구현할 수 있습니다.
사용자 정의 단계 타입을 사용하면 다음과 같은 방법으로 기존 단계를 확장할 수 있습니다.
잘 디자인된 단계 타입은 시퀀스 개발 속도를 높이고, 디버깅 노력을 줄이고, 개발자들이 표준화된 코드를 공유할 수 있고, 여러 테스트 스테이션 및 그룹 간에 일관성을 유지할 수 있습니다. 그러나 사용자 정의 단계 타입은 계획, 프로그래밍, 디버깅, 배포 및 관리에 상당한 시간이 소요될 수 있습니다.
이 문서를 읽기 전에 사용자 정의 단계 타입 생성 프로세스를 숙지하고 있어야 합니다. 이 프로세스에 대한 자세한 내용은 웨이브폼 사용자 정의 단계 타입 생성 길라잡이를 참조하십시오.
사용자 정의 단계 타입을 디자인하기 전에 새로운 기능에 더 적합할 수 있는 다른 방법을 고려해야 합니다.
다음과 같은 경우 사용자 정의 단계 타입을 생성하거나 수정하는 것을 권장하지 않습니다.
다음과 같은 경우 단계 타입을 생성하거나 수정하십시오.
단계를 시퀀스로 개발 및 구성한 다음 해당 단계를 삽입 팔레트의 템플릿 목록으로 끌어서 놓아 단계 템플릿을 생성할 수 있습니다. TestStand는 단계 인스턴스의 복사본을 템플릿으로 저장하므로 단계 템플릿을 새 시퀀스로 끌어서 놓아 새 시퀀스를 빠르게 생성할 수 있습니다.
단계 템플릿과 사용자 정의 단계 타입의 차이점은 템플릿은 기존 단계 타입에서만 생성할 수 있고 템플릿은 원래 단계 타입과 동일한 기능만 포함한다는 것입니다. 사용자 정의 단계 타입에서 가능한 만큼 단계 템플릿을 수정하거나 다시 디자인할 수는 없습니다. 템플릿 목록에 추가하는 단계의 경우 사용자는 원래 단계 타입의 개발자가 활성화한 설정만 구성할 수 있습니다. 반면, 새로운 사용자 정의 단계 타입을 사용하여 완전히 새로운 동작의 완전히 새로운 단계를 생성할 수 있습니다. 또한 단계 템플릿을 변경하면 이후의 단계 인스턴스에만 영향을 미치며 해당 단계의 기존 인스턴스는 변경되지 않습니다.
단계 템플릿을 사용하는 한 가지 이점은 동일한 단계를 동일한 방식으로 재사용하는 경우 단계 설정을 한 번 이상 사용자 정의하지 않아도 됩니다. 예를 들어, IVI 전원 공급 장치를 5V로 설정했다가 3.3V로 설정하고 이 작업을 전체 시퀀스에서 여러 번 실행하려는 경우, 처음에 단계를 사용하고 구성한 후 두 개의 단계 템플릿을 생성하면 시간을 절약할 수 있습니다. 그러나 테스트 코드를 실행하기 전에 먼저 전원 공급 장치를 구성하는 단계가 필요한 경우 사용자 정의 단계 타입을 생성하는 것이 더 좋습니다.
단계 템플릿 | 사용자 정의 단계 타입 |
|
|
사용자 정의 단계 타입을 디자인할 때 프레임워크 개발자와 테스트 개발자의 역할을 별도로 고려합니다. 프레임워크 개발자의 역할은 도구 및 기초 구성 요소를 개발하는 것이며 테스트 개발자의 역할은 이러한 도구를 사용하여 실제 테스트 코드를 구현하는 것입니다.
사용자 정의 단계 타입을 디자인하는 경우 프레임워크 개발자의 역할을 맡는 것이며, 개발하는 단계 타입의 기능을 최종 사용자인 테스트 개발자의 관점에서 고려하는 것이 중요합니다.
사용자 정의 단계 타입에 대한 요구 사항을 결정할 때 다음 지침을 사용하십시오.
사용자 정의 단계 타입은 단계 타입 인스턴스의 동작을 구성하고 단계 타입 기능에 필요한 데이터를 관리하는 데 사용할 수 있는 여러 프로퍼티 및 설정에 데이터를 저장합니다. 여기에는 다음이 포함됩니다.
내장 단계 타입 프로퍼티는 모든 단계 타입에 존재하며 사용자는 단계 타입 인스턴스에서 이러한 설정을 변경할 수 없습니다. 또한 이러한 프로퍼티의 값을 변경하면 단계 타입의 모든 인스턴스에 전파됩니다.
예: 모든 단계 타입은 설명 표현식을 정의하며, 이 식은 단계 인스턴스 옆에 있는 단계 창에 표시됩니다. 이 프로퍼티는 모든 단계 타입에 존재하지만 값은 각 단계 타입마다 설정됩니다. 단계 타입 인스턴스에서는 값을 수정할 수 없습니다.
단계 타입의 내장 프로퍼티에 액세스하려면,
단계 타입 프로퍼티 대화 상자
이 대화 상자의 설정은 대부분 기본값이며 다음 섹션에서 설명합니다. 내장 프로퍼티에는 다음이 포함됩니다.
단계 인스턴스에서는 설명을 구성할 수 없으므로 사용자가 자체 문서화 단계를 생성하는 데 도움이 되도록 단계 타입 개발자가 설명을 정의할 수 있습니다. 설명 필드는 중요한 단계 프로퍼티를 표시하는 동적 설명을 생성하는 데 사용할 수 있는 표현식으로 지정됩니다. 사용자가 단계 타입 인스턴스에서 이러한 프로퍼티 값을 변경하면 설명이 업데이트되어 단계 설정 창을 탐색하지 않고 빠르게 단계 상태를 확인할 수 있습니다.
예: 아래 이미지의 두 번째 단계에 있는 단계 설명은 보다 설명적이고 더 나은 문서를 제공합니다. 이 설명은 다음 표현식을 사용하여 설명을 정의합니다.
"Calibrate Channels: " + Str(Step.minChannel) + " - " +Str(Step.maxChannel)
이 표현식은 사용자가 minChannel 및 maxChannel 단계 프로퍼티를 구성하는 경우 설명을 동적으로 업데이트하도록 구성합니다.
단계 설명 예
단계 타입을 개발할 때 모든 사용자 구성 가능 단계 설정의 기본값을 구성할 수 있습니다. 또한 설정한 기본값을 수정할 수 없도록 단계 인스턴스에서 이러한 프로퍼티가 비활성화되도록 구성할 수 있습니다. 내장 프로퍼티와 마찬가지로 기본값은 단계 프로퍼티 윈도우에서 정의됩니다. 그러나 모든 기본값 설정은 설정 이름 또는 설정 탭에서 "default"라는 단어를 포함합니다.
예: 상태 표현식 프로퍼티는 단계 결과를 판별하는 데 사용됩니다. 이 프로퍼티는 모든 단계 타입에 존재하며, 기본값이 각 단계 타입마다 설정됩니다. Numeric Limit Test와 같은 일부 단계 타입에서는 단계 타입에서 상태 표현식이 비활성화되어 개별 숫자 리미트 테스트 단계에서 편집할 수 없습니다.
사용자 정의 단계 타입을 디자인할 때 단계 타입 인스턴스간에 변하지 않는 프로퍼티를 비활성화할 수 있습니다. 이를 통해 단계 타입의 사용자가 동작을 수정하는 방법을 보다 세밀하게 제어할 수 있습니다. 그러나 사용자가 단계 설정을 편집할 수 없으면 유연성이 제한될 수 있으므로 사용자가 수정할 필요가 없다고 확신하는 설정만 비활성화해야 합니다.
단계 인스턴스에서 값 편집을 비활성화하더라도 향후 변경되는 단계 프로퍼티 기본값은 단계 타입 인스턴스로 전파되지 않습니다. 이 문제를 완화하는 방법에 대한 자세한 내용은 단계 타입 업데이트 및 관리를 참조하십시오.
단계 타입 개발자가 업데이트해야 하는 단계 타입의 기능을 정의하기 위해 이러한 프로퍼티 값을 사용해서는 안 됩니다. 예를 들어 단계 타입별 기능을 구현하기 위해 단계의 Post 표현식을 사용하지 마십시오. 이후 버전의 단계 타입에서 이 기능을 업데이트해야 하는 경우 해당 단계의 모든 인스턴스가 업데이트되도록 할 방법이 없습니다. 대신, 기능을 사전 단계 또는 사후 단계 하위 단계에서 구현하십시오.
내장 프로퍼티 외에도 단계 타입에 특정한 사용자 정의 프로퍼티를 정의할 수 있습니다. 이러한 프로퍼티를 사용하여 특히 단계 타입 기능과 관련된 데이터를 저장합니다.
예: 숫자 리미트 테스트 단계에는 숫자 리미트 단계 타입에 고유한 Limits.High 프로퍼티가 포함됩니다. 타입은 이 프로퍼티에 기본값 11을 정의하며 사용자는 본인이 생성하는 각 인스턴스의 값을 수정할 수 있습니다.
사용자 정의 단계 프로퍼티를 생성하려면,
단계 타입의 결과 컨테이너에 프로퍼티를 정의하면 해당 프로퍼티가 결과 컬렉션에 포함됩니다. 그런 다음 IncludeInReport 또는 IncludeInDatabase 플래그를 사용하여 데이터를 보고서 또는 데이터베이스에 기록할 수 있습니다.
기본적으로 사용자는 각 단계 인스턴스의 단계 프로퍼티 값을 변경할 수 있습니다. 그러나 단계 타입에서 단계 프로퍼티에 대한 공유 플래그를 설정하면 값이 단계 타입의 값으로 잠금 처리됩니다. 단계 기본값과 달리 값 업데이트는 단계 타입 인스턴스로 전파됩니다.
단계 프로퍼티에 대해 선택한 데이터 타입은 단계 타입의 범위에 따라 결정되어야 합니다. 예를 들어, 숫자 리미트 테스트 단계와 다중 숫자 리미트 테스트 단계를 생각해 보십시오. 다중 숫자 리미트 테스트는 추가 리미트를 수용할 수 있고 더 많은 기능을 제공하지만 편집 시간 사용자 인터페이스 및 결과 로깅도 복잡해집니다. 보다 기본적인 숫자 리미트 테스트는 범위가 더 작고 인터페이스가 훨씬 간단합니다. 개발 작업이 적게 필요할 뿐만 아니라, 테스트 시퀀스 개발자는 더 작은 범위의 단계를 더 쉽게 사용할 수 있습니다.
사용자 정의 단계 타입을 개발할 때는 사용자 정의 프로퍼티를 정의하기 전에 단계 범위를 정의하는 것이 중요합니다. 선택한 프로퍼티가 단계 타입의 복잡성에 큰 영향을 미치기 때문입니다.
다음 섹션에서는 하위 단계를 사용하여 다음과 같은 단계 타입 동작을 구현하는 방법을 설명합니다.
하위 단계는 제공된 TestStand 어댑터 중 하나를 사용하여 코드 모듈을 호출합니다. 단계 인스턴스에서는 하위 단계를 수정할 수 없으며 하위 단계 설정에 대한 모든 변경 사항이 단계 타입의 인스턴스로 전파됩니다.
사용자 정의 단계 타입에 하위 단계를 추가하려면,
다중 숫자 리미트 테스트 단계 타입의 게시 및 편집 하위 단계
사전 단계 및 사후 단계 하위 단계를 사용하여 단계 타입에 대한 런타임 기능을 정의할 수 있습니다. 이 하위 단계는 단계가 실행될 때 기본 코드 모듈 전후에 실행됩니다.
예: 메시지 팝업 단계 타입은 C 코드 모듈을 사용하여 런타임에 메시지 상자를 생성하고 표시합니다. 이 모듈은 사후 단계 하위 단계에서 호출됩니다.
단계 실행 순서: 하위 단계
이들 하위 단계를 사용하여 단계의 모든 인스턴스에 적용되는 기능을 정의합니다. 하위 단계에는 종종 단계 타입의 동작과 관련된 특정 데이터가 필요합니다. 모든 단계 인스턴스에서 사용 가능하도록 사용자 정의 단계 프로퍼티에서 이 데이터를 정의합니다.
사전 단계 또는 사후 단계 하위 단계가 두 개 이상일 경우 단계 타입 프로퍼티 대화 상자의 하위 단계 탭에 표시되는 순서대로 실행됩니다.
기본적으로 테스트 개발자는 단계 타입의 인스턴스마다 코드 모듈을 지정할 수 있습니다. 단계 타입에 코드 모듈이 필요하지 않은 경우 단계 타입 구성의 프로퍼티 사용 안 함 탭에서 "모듈 지정"옵션을 해제해야 합니다. 명령문 및 메시지 팝업 단계와 같은 많은 내장 단계 타입이 이러한 방식으로 디자인되었습니다.
TestStand는 계속하기 전에 사전 단계 또는 사후 단계 하위 단계의 코드가 실행될 때까지 기다립니다. 해당 단계의 코드 모듈이 느리게 또는 자동으로 작동하면 TestStand가 응답하지 않는 것처럼 보일 수 있습니다. 이를 해결하기 위해 커서를 변경하거나 UIMsg_ProgressPercent와 같은 UI 메시지를 사용하여 상태 표시줄에서 진행률 표시를 업데이트할 수 있습니다.
이 방법에 대한 자세한 내용은 UI 메시지를 사용하여 상태 표시줄 업데이트를 참조하십시오.
개발하는 코드 모듈은 사용자가 TestStand 또는 TestStand API의 내장 옵션을 사용하여 시퀀스 실행을 종료 또는 중단할 때 정상적으로 처리할 수 있도록 종료 모니터를 포함하고 주기적으로 폴링해야 합니다. 종료 모니터를 사용하면 사용자가 시퀀스 실행을 종료할 경우 하위 단계를 빠르게 종료할 수 있습니다.
코드에서 종료 모니터 사용 구현에 대한 자세한 내용은 종료 모니터 예제를 참조하십시오.
단계 타입 고유의 기본 작업에 대한 코드 모듈을 기본 모듈 대신 사전 단계 또는 사후 단계 하위 단계로 구현합니다. 단계의 각 인스턴스가 다른 코드 모듈을 호출할 수 있는 경우에만 기본 모듈 설정을 사용하십시오. 기본 모듈 설정은 모든 단계 인스턴스에 별도로 존재하며, TestStand는 단계 타입 설정이 변경될 때 기본적으로 기존 단계 인스턴스를 업데이트하지 않습니다. 그러나 하위 단계를 변경하면 단계 타입의 모든 기존 인스턴스에 자동으로 영향을 줍니다.
편집 하위 단계는 사용자가 편집 시간에 해당 단계 인스턴스의 변수 또는 설정을 수정할 수 있도록 코드 모듈로 구현된 그래픽 사용자 인터페이스(GUI)를 제공합니다. 일반적으로 편집 하위 단계는 단계 타입에 대해 정의하는 사용자 정의 단계 프로퍼티를 구성하는 데 사용됩니다.
예: Open Database 단계 타입은 사용자가 데이터베이스 단계 타입의 사용자 정의 프로퍼티인 ConnectionString 및 DatabaseHandle 단계 프로퍼티를 구성할 수 있도록 편집 하위 단계를 통해 대화 상자를 제공합니다.
편집 하위 단계는 단계 설정 구성을 위한 사용자 인터페이스를 제공합니다.
사용자가 사용자 정의 단계 타입 인스턴스를 생성할 때 단계 설정 창의 버튼을 사용하여 편집 하위 단계 사용자 인터페이스에 액세스할 수 있습니다. 그러면 편집 하위 단계 UI가 새 윈도우에서 실행됩니다. 그러나 많은 내장 단계 타입에서와 같이 편집 하위 단계 사용자 인터페이스를 탭에 직접 포함할 수도 있습니다. 이 방법은 추가 개발 노력이 필요하며 .NET 언어로 개발해야 하지만 단계 타입 사용자에게 보다 원활한 편집 인터페이스를 제공합니다. 임베디드 편집 하위 단계 인터페이스를 구현하는 방법에 대한 자세한 내용은 시퀀스 편집기에서 사용자 정의 단계 타입 편집 탭 생성을 참조하십시오.
임베디드 편집 인터페이스(위)와 별도의 윈도우에서 실행되는 편집 하위 단계(아래) 비교
사용자 정의 단계 타입에는 한 번에 모두 표시될 경우 사용자가 혼동할 수 있는 많은 프로퍼티가 정의될 수 있습니다. 별도의 윈도우에서 실행되는 일반적인 편집 하위 단계 방법을 사용하는 경우 단일 편집 하위 단계 내에서 탭 도입과 같은 조직적 방법을 사용하여 데이터를 관리 가능한 섹션으로 구성하십시오. 각 인터페이스를 독립적으로 시작해야 하므로 여러 편집 하위 단계를 사용하지 않는 것이 좋습니다. 예를 들어, Open SQL Statement 단계는 여러 탭을 사용하여 단일 편집 하위 단계를 구현합니다.
Open SQL Statement 단계의 편집 하위 단계에는 설정을 분류하는 두 개의 탭이 있습니다.
복잡한 단계 타입에 임베디드 단계 패널 방법을 사용하는 경우 단계 탭에서 데이터가 잘 보이기 때문에 여러 편집 패널을 사용하는 것이 좋습니다. 예를 들어, 다중 숫자 리미트 테스트 단계에는 숫자 데이터의 소스를 편집하기 위한 두 개의 탭과 각 데이터 소스의 리미트 조건이 포함됩니다.
리미트 및 데이터 소스 탭은 각각 별도의 편집 패널에서 구현됩니다.
TestStand가 편집 하위 단계를 호출하면 시퀀스 편집기가 비활성화되므로 항상 편집 하위 단계 및 기타 사용자 인터페이스 코드 모듈을 TestStand에 모달로 만드십시오. 코드 모듈이 모달이 아닌 경우 TestStand 윈도우가 코드 모듈을 숨길 수 있습니다. 사용자는 시퀀스 편집기가 정지되었다고 생각하고 TestStand를 종료하려고 할 수 있습니다.
하위 단계 모듈에서 모달리티를 구현하는 방법에 대한 자세한 내용은 대화 상자를 TestStand에 모달로 설정 예제를 참조하십시오.
편집 하위 단계 UI에서 표현식 필드를 사용하면 사용자가 유연한 방식으로 데이터와 상호 작용할 수 있고 프로퍼티 값에 변수 및 논리를 사용할 수 있습니다. 그러나 표현식 컨트롤을 사용하려면 문자열 또는 숫자 컨트롤보다 많은 투자가 필요할 수 있으며 표현식이 프로퍼티의 유효한 값으로 계산되는지 확인하기 위한 추가 검사가 필요합니다.
설정을 지정할 때 표현식이 고정 값보다 유연
대부분의 경우 테스트 개발자가 새 단계 인스턴스를 생성할 때 발생하는 기능을 정의할 수 있어야 합니다. 예를 들어 내장 If 단계 타입은 OnNewStep 하위 단계를 사용하여 일치하는 종료 단계를 삽입합니다.
이러한 유형의 기능을 구현하려면 편집 하위 단계를 생성하고 하위 단계의 이름을 "OnNewStep"으로 변경합니다. 이러한 하위 단계는 일반적으로 TestStand API를 사용하여 단계 인스턴스를 조작하거나 추가 단계 인스턴스를 생성합니다.
표준 코드 모듈과 마찬가지로 하위 단계에 TestStand 데이터를 제공하는 방법은 두 가지가 있습니다. 코드 모듈의 파라미터를 통해 데이터를 전달할 수 있습니다. 또는 코드 모듈 내부에서 TestStand API를 호출하여 프로퍼티를 직접 액세스하고 변경할 수 있습니다. 사전 단계 및 사후 단계 하위 단계는 일반적으로 단계 프로퍼티를 판독하고 동작을 판별하기만 하면 됩니다. 예를 들어 가열 챔버를 설정하기 위한 온도 값입니다. 그러나 편집 하위 단계에는 초기 UI에 표시할 프로퍼티의 현재 상태가 필요하지만 사용자가 수정하는 값을 업데이트하는 방법도 필요합니다.
대부분의 경우 TestStand API가 아니라 파라미터를 사용하여 데이터에 직접 액세스하는 것이 좋습니다. 파라미터 사용이 에러 발생 가능성 감소: 프로퍼티가 코드 모듈에서 직접 정의되는 것이 아니라 TestStand의 단계 타입 설정에서 정의되므로 프로퍼티 이름 또는 데이터 타입의 에러를 쉽게 찾을 수 있습니다. 또한 단계 구성에서 모든 프로퍼티를 정의하면 단계 타입의 관리성이 개선됩니다. 코드 모듈을 수정하지 않아도 단계 프로퍼티에 대한 모든 변경 사항을 적용할 수 있습니다.
그러나 코드 모듈이 단계 상태에 따라 다양한 데이터에 동적으로 액세스하는 경우에는 API를 사용하여 프로퍼티에 직접 액세스하는 것이 유용할 수 있습니다. 이러한 경우에 단계 파라미터를 사용하면 다양한 조건에서 일부만 사용되는 긴 파라미터 목록이 생성될 수 있습니다.
모듈 어댑터는 코드 모듈의 입력 및 출력에 단계 변수를 읽거나 쓰고 에러를 검사합니다.
TestStand API를 사용하여 LabVIEW 내부에서 단계 프로퍼티에 액세스하면 편집 시간에 파라미터 에러 검사가 제공되지 않습니다.
사용자 정의 단계 타입의 하위 단계를 위한 코드 모듈을 개발하고 테스트하는 경우 하위 단계가 실행될 때 TestStand가 코드 모듈을 메모리에 로드하고 예약한다는 것을 알아야 합니다. 그러면 코드 모듈이 후속 실행을 위해 로드된 상태를 유지하므로 성능이 향상되지만 TestStand가 언로드할 때까지는 코드 모듈을 편집할 수 없습니다. 다음 두 가지 방법 중 하나로 코드 모듈을 언로드할 수 있습니다.
생성하는 사용자 정의 단계를 저장하고 배포하는 방법을 고려하는 것이 중요합니다. 모든 단계 타입을 시퀀스 파일 내부가 아니라 타입 팔레트 파일에서 생성하는 것이 좋습니다. 시퀀스 파일을 로드할 때 TestStand가 단계 타입 업데이트를 위해 타입 팔레트 파일을 검색하기 때문입니다. 또한 TestStand는 단계 재사용을 쉽게 관리할 수 있도록 사용된 각 단계 타입의 복사본을 시퀀스 파일 내부에 유지합니다. 타입 팔레트 파일 없이 시퀀스 파일을 배치하는 경우 시퀀스 파일에는 여전히 단계 타입의 복사본이 포함됩니다.
프레임워크 개발자가 개발하는 단계 타입은 여러 테스트 개발자가 사용하는 것이 일반적입니다. 단계 타입에는 관련 파일이 여러 개 있으므로 이는 쉽지 않은 과제일 수 있습니다. 단계 타입 파일을 관리하려면 다음 디렉터리를 사용하여 단계 타입 관련 파일을 저장하십시오.
이러한 디렉터리를 사용하면 필요한 파일을 모든 테스트 개발자 시스템의 TestStand Public 디렉터리에 배포할 수 있습니다. 타입을 새 타입 팔레트 파일에서 정의한 경우 타입 팔레트 파일 이름에 “Install_” 접두사를 추가하여 타입 팔레트를 자동으로 가져오도록 TestStand를 구성할 수 있습니다. 이 방법에 대한 자세한 내용은 타입 팔레트 파일 도움말 항목을 참조하십시오.
사용자 정의 프로퍼티의 타입을 변경해야 하는 경우 새 타입으로 다른 프로퍼티를 생성하고 이전 타입의 프로퍼티를 유지할 수 있습니다. 프로퍼티의 이름 또는 데이터 타입을 변경하면 TestStand는 단계 인스턴스의 프로퍼티 값을 해당 프로퍼티의 기본값으로 바꿉니다. 새 타입으로 새 프로퍼티를 생성하는 것 외에도 단계가 이전 프로퍼티와 새 프로퍼티를 사용하는 경우를 처리하는 로직을 단계 타입에 추가할 수 있습니다. 예를 들어, TestStand가 리미트 값을 표현식으로 구현할 때 이전 숫자 리미트 프로퍼티를 사용하도록 지정하기 위해 두 개의 새 부울 프로퍼티가 추가되었습니다. UseLowExpr 및 UseHighExpr 프로퍼티는 단계가 이전 숫자 리미트 또는 새 표현식 리미트를 평가할지 여부를 결정합니다.