AI 기반 세계에서의 테스트 자동화 및 시퀀싱: 더 우수한 성능과 안정성을 위해 어플리케이션 최적화하기

개요

테스트 커버리지와 어플리케이션 복잡성이 증가함에 따라, 엔지니어들은 종종 측정을 개발하는 것보다 테스트 관리 인프라를 유지보수하는 데 더 많은 시간을 소비하게 되며, 이는 유지보수성이 떨어지고 재사용성이 낮은 시스템으로 이어집니다. 시퀀싱은 테스트 관리의 핵심 요소로, 자동화된 테스트와 측정이 가능하게 합니다. 

 

본 기술 백서에서는 어플리케이션 레벨의 코드 없는 시퀀싱 및 NI TestStand와 같은 전용 테스트 관리 프레임워크에서의 시퀀싱 활용법을 살펴보고, 사용자에게 가장 적합한 접근 방식을 결정하는 방법을 다룹니다. 본 백서는 또한 AI를 사용하여 개발을 가속화하는 방법과 NI LabVIEW+ Suite를 오픈 소스 솔루션과 비교하는 방법에 대해서도 논의할 것입니다.

내용

과제: 테스트 관리 인프라에 소요되는 시간과 측정 개발 시간 사이의 격차

엔지니어들은 테스트 코드를 개발하는 대신 시퀀서를 개발하는 데 너무 많은 시간을 소비하는 경우가 많으며, 이는 배포 및 테스트 실행을 지연시킵니다. 요구사항이 늘어남에 따라 시퀀싱 및 지원 코드는 두 번째 코드베이스로 변질됩니다. 일반적인 작업은 새로운 측정에서 인프라 유지보수로 옮겨집니다. 단계별 실행, 설정, 테스트 시스템 배포, 오류 처리, 로그 기록 및 보고 같은 작업을 모두 개발하고 유지하여 지속적인 테스트 생산성이 보장되어야 합니다. 테스트 실행에서 테스트 관리로 초점을 옮기면 생산성이 저하되고, 새로운 스테이션으로의 복제가 느려지며, 리스크가 증가합니다. 테스트 오케스트레이션의 작은 변경만으로도 안정적이었던 측정 코드가 손상될 수 있습니다. 

종종 간과되는 또 다른 과제는 테스트 관리 인프라에 충분한 시간이나 노력을 기울이지 않아 나중에 반복적인 개발이 발생한다는 점입니다. 예를 들어 단순한 자동화만 필요로 하는 검증 팀이 있습니다. 검증에서 생산으로 전환할 때 실행된 테스트가 중복될 가능성이 있습니다. 테스트 인프라가 제대로 정렬되지 않으면, 제품 개발의 다음 단계로 그대로 이어질 수 있었던 기존 테스트 코드와 자동화를 불필요하게 재개발해야 하는 상황이 생길 수 있습니다.

테스트 시퀀서란?

시퀀서는 단계 순서, 분기, 리미트/결정, 오류 처리, 보고서 생성, 리소스 사용(인스트루먼트, DUT 연결, 파일 디렉토리 등)과 같은 테스트 흐름을 정의하는 컨트롤 레이어입니다. 설계 및 검증 단계에서 팀은 대개 빠르게 "첫 추적" 결과를 얻기 위해 대화식 측정으로 시작하며, 워크플로우가 반복되는 즉시 자동화를 추가합니다. 다음 단계들은 일반적인 진행 과정을 나타냅니다: 

  1. 대화식 가동—팀은 소프트 프런트패널과 구성 기반 도구를 사용하여 배선, 신호 무결성, 인스트루먼트 설정 및 기본 DUT 동작을 확인합니다. 이 단계를 실행하는 한 가지 예로는 NI InstrumentStudio™ 소프트웨어를 사용하여 PXI 계측기에서 측정을 진행하는 경우를 들 수 있습니다. 
  2. 경량 자동화—경량 자동화는 어플리케이션 수준에서 일련의 측정이나 센서를 시퀀싱하는 내장 코드 없는 자동화 시퀀싱 도구로 처리할 수 있습니다. 이 시점에서 맞춤 측정이나 분석이 필요하다면, 팀은 반복 가능한 테스트 및 절차를 위해 NI LabVIEW 또는 다른 코딩 어플리케이션을 사용할 수 있습니다. 이 단계의 목표는 전체 테스트 관리 프레임워크가 아닌, 반복 가능성과 더 빠른 반복 작업입니다.
  3. 전체 테스트 관리/시퀀서—어플리케이션이 배리언트, 테스트 결과 분기, 병렬 실행, 운영자 작업 흐름, 표준화된 보고, 다중 스테이션 배포 등을 필요로 할 때, 시퀀싱은 자체적인 요구 사항이 됩니다. 이 단계에서는 코드가 측정 모듈에 적용되고, 이후 NI TestStand와 같은 시퀀서에서 오케스트레이션됩니다. TestStand와 같은 시퀀서는 흐름 제어, 결과 처리, 기타 작업이 각 테스트 코드 모듈로 확산되지 않도록 관리합니다.

기본 시퀀싱은 단순한 선형 자동화 흐름을 위한 대화식 어플리케이션에서 처리할 수 있습니다. 코드리스 테스트 자동화 도구를 제공하는 InstrumentStudio 및 NI FlexLogger와 같은 소프트웨어가 이러한 대화식 어플리케이션의 예가 될 수 있습니다.

예를 들어, Device Under Test(DUT)를 검증해야 한다고 가정해 봅니다. InstrumentStudio에서 인스트루먼트를 설정하여 알려진 신호를 생성하고, DUT의 응답을 측정하고, 결과를 캡처하는 반복되는 일련의 단계들을 자동화할 수 있습니다. 이 반복 가능한 시퀀스를 사용하면 추가 코드 없이도 동일한 프로세스를 동일한 디바이스 또는 여러 디바이스에서 빠르게 다시 실행할 수 있으므로, 수동 작업에 비해 일관성이 보장되고 시간이 절약됩니다. 그러나 이러한 유형의 시퀀스는 일반적으로 선형적이며 모든 디바이스에 대해 동일한 단계를 동일한 순서로만 실행한다는 점에 유의해야 합니다. 확장된 시퀀스 흐름 제어, 특화된 프로세스 모델, 맞춤 UI 및 보고가 필요하다면 더 고급의 시퀀싱 도구가 필요합니다. InstrumentStudio에서 만든 시퀀스는 시퀀스 파일로 저장되며, TestStand에서 열어 테스트 관리 기능을 확장할 수 있습니다.

InstrumentStudio Sequencer를 사용하여 수행할 수 있는 작업과 수행할 수 없는 작업에 대한 자세한 리스트는 표 1을 참조하십시오.

참고: InstrumentStudio Sequencer를 사용하려면 LabVIEW+ Suite에 포함된 InstrumentStudio Professional 라이선스가 필요합니다.

InstrumentStudio Sequencer에 대해 자세히 알아보려면 InstrumentStudio Sequencer 도구 문서 페이지를 방문하십시오. 

InstrumentStudio Sequencer 스크린샷그림 1. InstrumentStudio Sequencer

코드 없는 자동화 시퀀싱의 또 다른 예는 FlexLogger를 사용하여 센서 모듈의 출력 응답에 대한 로깅을 자동화하는 것입니다. FlexLogger는 DUT의 데이터 로깅을 자동화하는 시퀀싱 플러그인을 제공하며, 여기에는 선형 시퀀스에 따라 데이터 수집 장치를 초기화하고, DUT에 자극 신호들을 인가하며, 정해진 시간 동안 데이터를 로깅하는 과정이 포함됩니다. 이 플러그인은 선형 단계 기반 시퀀스 실행, 기본 단계 분기(건너뛰기, 반복, 정지, 특정 단계로 이동), 폴링 조건 로직(시작, 정지, 사전 조건, 단계 이후 동작)이 가능하여 코드 개발 없이 테스트 절차 자동화를 지원합니다.

표 2는 FlexLogger 시퀀싱 플러그인으로 수행할 수 있는 작업과 수행할 수 없는 작업을 자세히 설명합니다.

참고: FlexLogger용 시퀀싱 플러그인은 FlexLogger Professional 라이선스가 필요하며, 이 라이선스는 LabVIEW+ Suite에도 포함되어 있습니다.

Sequencer 플러그인에 대해 자세히 알아보려면 https://github.com/ni/niflexlogger-plugins/tree/main/PDK%20plugins/Output%20Sequencer를 방문하십시오.

FlexLogger Sequencer 플러그인 스크린샷 그림 2. FlexLogger 시퀀싱 플러그인

복잡한 시퀀싱은 가변성(데이터 기반 파라미터), 재시도/건너뛰기 로직, 병렬 처리(멀티 UUT, 멀티 사이트), 리소스 중재, 추적성을 추가합니다. 복잡한 시퀀싱 기능은 검증 및 생산 단계에서 매우 중요한데, 이는 스테이션과 배리언트 간의 반복 실행을 강제로 하고, 고급 프로세스 모델을 사용하여 처리량을 향상시키며, 결정적 동작을 정의하고, 결과의 디버깅 및 감사를 위해 일관된 추적/보고를 생성하기 때문입니다.

예를 들어 TestStand를 사용하는 기능적 생산 테스트는 설정 파일이나 스캔된 부품 번호에 따라 파라미터와 흐름을 조정하며, 여러 제품 배리언트와 여러 Unit Under Test(UUT)에 대해 동일한 핵심 측정 단계를 실행할 수 있습니다. 시퀀스는 PXI 섀시, 전원 공급 장치, 픽스처와 같은 공유 리소스를 초기화한 후, 공유할 수 없는 인스트루먼트를 잠그면서 각 UUT별 테스트 스레드를 병렬로 실행할 수 있습니다. 측정에 실패하면 진단 서브 시퀀스 실행이나 안전 종료로 바로 이동 등 조건 분기를 수행할 수 있고, 시리얼 번호, 리미트, 운영자 ID, 교정 메타데이터가 포함된 추적 가능한 보고서에 표준화된 결과를 저장할 수 있습니다. 이 프로세스는 모든 스테이션이 시퀀스 결과의 디버깅 및 감사를 위해 일관된 데이터를 생성하도록 보장합니다.

TestStand Sequencer Editor 스크린샷그림 3. TestStand Sequencer 편집기

테스트 시퀀싱을 위한 NI LabVIEW+ Suite 사용의 장점

LabVIEW+ Suite는 개발 작업 흐름의 위치에 따라 여러 레벨의 시퀀싱 기능을 제공합니다. 

  • InstrumentStudio는 호환 하드웨어 및 측정에 대한 대화식 가동 및 스크립트 기반 실행 제어를 제공합니다. 완전한 시퀀서를 개발하지 않고도 인스트루먼트 설정, 자극/응답 구성, 반복 측정 실행을 정의할 수 있습니다. InstrumentStudio에서 생성한 시퀀스는 TestStand에서 열고 확장할 수 있습니다. 
  • FlexLogger는 센서/DAQ 중심 시스템에 대한 구성 기반 테스트 실행을 가능하게 합니다. 이 제품을 사용하면 채널, 스케일링, 로깅, 테스트 실행 설정을 정의할 수 있으므로 팀이 별도의 사용자 정의 프레임워크를 만들지 않고도 절차를 반복할 수 있습니다.  
  • LabVIEW 는 더 복잡한 측정이나 맞춤 분석을 수행하기 위해 상위 레벨 시퀀스 도구에서 호출할 수 있는 모듈형 VI 형태로 사용됩니다. LabVIEW를 사용해 플러그인으로 InstrumentStudio 또는 FlexLogger의 기능을 확장할 수도 있습니다. (플러그인 생성에는 InstrumentStudio와 FlexLogger Professional 라이선스가 필요합니다.) 
  • TestStand 는 변수 기반 분기, 병렬/멀티 UUT 실행, 운영자 UI, 배포, 표준화된 보고/추적성과 같은 복잡한 자동화를 처리하는 강력한 시퀀스 엔진을 제공합니다. TestStand는 LabVIEW뿐만 아니라 C/C++, Python, .NET 등 다양한 언어로 작성된 측정 코드를 활용할 수 있습니다.  
  • LabVIEW+ Suite는 구성 기반 실행 및 코드 없는 테스트 자동화 도구로 개발 워크플로우를 지원하며, 복잡성이 증가함에 따라 핵심 측정 코드를 다시 작성하지 않고도 TestStand로 오케스트레이션을 업그레이드할 수 있도록 장려합니다. 

올바른 시퀀싱 방식을 선택하는 방법

이 섹션에서는 특정 프로젝트 요구사항을 기반으로 자동화된 테스트 시퀀스를 구성하기 위한 세 가지 전략에 대해 설명합니다. 올바른 접근 방식을 선택하려면 셋업 속도, 확장성 및 장기 유지보수에 대한 요구사항 간의 균형을 맞추어야 합니다.

기본적인 시퀀싱을 사용해야 하는 경우

흐름이 단순하고 프레임워크 구축 없이 빠른 가동을 원할 때는 FlexLogger나 InstrumentStudio와 같은 코드 없는 테스트 자동화 툴을 사용하십시오. 이러한 제품들은 벤치 검증 및 특성 분석에 가장 적합하며, 리포팅 및 추적성 요구사항이 최소화된 반복 실행에 유리합니다.

코드 없는 자동화 시퀀싱은 종종 Python과 같은 스크립트 언어로 수행되던 자동화를 단순화해 주며, 어플리케이션 레벨에서 수행할 수 있게 함으로써 작성 및 검증해야 하는 코드의 양을 줄여줍니다.

테스트 관리 프레임워크를 사용해야 하는 경우

여러 스테이션을 조정해야 하거나, 빈번한 변경이 필요하거나, 운영자 UI가 필요하거나, 표준화된 보고가 필요하거나, 멀티 UUT 또는 병렬 실행을 지원해야 하거나, 규정 준수 및 추적성 조건을 충족해야 할 때는 TestStand로 전환하십시오. 이런 경우 측정 코드를 모듈로 유지하고, 흐름 제어나 결과 처리, 배포 관리를 시퀀서로 옮겨 오케스트레이션이 각 테스트 모듈로 확산되지 않도록 합니다.

테스트 관리 프레임워크 주요 활용 사례는 대량, 고처리량, 테스트 추적성이 필수인 생산 테스트 환경입니다. 하지만 테스트 관리 어플리케이션은 테스트의 검증 단계에서도 유용하게 사용될 수 있습니다. 예를 들어, 대량의 검증 및/또는 특성 분석 테스트를 실행해야 하는 경우, 단순한 시퀀서의 한계가 빠르게 나타날 것이며, 특히 속도 최적화가 부족한 Python과 같은 언어에서 더욱 그렇습니다. 또한, 검증 주기와 생산 주기 사이에 격차가 존재할 수 있으며, 이로 인해 코드를 생산 테스트에 더 최적화되도록 다시 작성해야 할 수도 있습니다. 검증과 생산 단계 모두에서 TestStand를 사용하면 검증 팀이 대량 테스트가 필요한 상황에 잘 대비할 수 있고 개발의 생산 단계로 더 부드럽게 전환할 수 있습니다.

사용자 지정 시퀀서를 빌드할 때

요구사항이 안정적이고 장기적인 소유 비용(유지보수, 문서화, 온보딩, 자동 배포/업데이트)을 감당할 수 있을 때만 맞춤형 시퀀서를 개발하십시오. 기본적인 시퀀싱 범위를 벗어날 경우, 검증되고 유지 관리되는 시퀀싱 툴을 사용하는 것에 비해 소유 비용이 상당히 커지는 경우가 많습니다.

테스트 시퀀싱에 NI 소프트웨어를 사용하는 이유는 무엇입니까?

NI 소프트웨어는 통합된 하드웨어 지원, 유지보수되는 실행 엔진, 배포 툴링 및 내장된 리포팅/추적성이 필요할 때 리스크를 낮춰줍니다. 오픈 소스 소프트웨어는 팀이 프레임워크를 장기적으로 소유할 수 있고 요구사항(하드웨어 조합, 리포팅, 배포)이 단순하고 선형적이며 안정적인 경우에 적합할 수 있습니다. 그러나 기본적인 시퀀싱을 제외하고, 맞춤형 프레임워크를 소유하는 것은 개발 및 유지보수 면에서 상당한 소유 비용을 초래하며, 이러한 기능들은 이미 InstrumentStudio 및 FlexLogger와 같은 NI 소프트웨어 내에서 처리될 수 있습니다. 

또한 TestStand는 LabVIEW+ Suite의 일부로 Python의 느린 실행 최적화 대비 뛰어난 테스트 성능을 제공하며, C나 .NET에서 직접 개발할 때보다 시퀀서 개발 복잡성을 줄일 수 있습니다. TestStand는 수십 년간 최적화되고 유지된 완전한 테스트 관리 프레임워크를 제공하여 엔지니어가 이미 기성품으로 사용 가능한 동일한 솔루션을 반복 개발할 필요를 줄입니다.

테스트 시퀀싱에서 AI의 역할

AI는 테스트 시퀀싱 개발을 가속화합니다. 많은 개발자들이 AI를 이용해 측정 코드 생성, 테스트 데이터 분석, 자주 사용하는 언어로 간단한 시퀀스 생성까지 수행합니다. NI Nigel™ AI는 LabVIEW+ Suite에 직접 통합되어 있으므로 이러한 작업과 그 이상의 모든 작업에 Nigel AI를 활용할 수 있습니다. LabVIEW+ Suite에 포함된 Nigel AI는 다른 AI 솔루션에 비해 몇 가지 장점을 제공합니다. 

Nigel은 테스트 및 측정 어플리케이션에 특화되어 학습되었으며, 더 빠르게 배우고 시작할 수 있도록 LabVIEW, InstrumentStudio, FlexLogger 및 TestStand의 사용법에 대한 인사이트를 제공할 수 있습니다. Nigel은 어떤 함수와 설정을 사용해야 하는지 안내해주며, 곧 프롬프트를 통해 Python이나 C처럼 완전히 개발된 테스트 관리 프레임워크에서 전체 TestStand 시퀀스를 생성할 수 있게 될 것입니다.

LabVIEW+ Suite는 개발의 모든 단계에서 자동화 시퀀싱을 위해 설계되었습니다.

테스트 시퀀싱은 단계 순서, 분기, 리미트/결정, 오류 처리, 결과 로그/보고와 같이 측정 실행 방식을 정의하기 때문에 테스트 관리의 핵심 요소입니다. 테스트 커버리지와 어플리케이션 복잡성이 증가함에 따라, 시퀀싱 및 지원 인프라는 배포를 지연시키고 리스크를 증가시키는 두 번째 코드베이스로 빠르게 변질될 수 있습니다. 

LabVIEW+ Suite를 사용하면 모든 측정 모듈에 오케스트레이션, 보고, 배포, 추적성을 구현하지 않고 자동화 확장이 가능하며, InstrumentStudio나 FlexLogger로 가장 간단한 시퀀싱 방식으로 현재 요구사항을 충족하고, 요구가 검증에서 생산으로 확대될 때 TestStand를 통한 전용 테스트 관리 프레임워크로 명확한 경로를 설계할 수 있습니다. 또한, Nigel AI는 전체 하드웨어 및 소프트웨어 인사이트를 제공하여 종합적인 AI 지원 및 시퀀싱 개발의 미래 오케스트레이션을 제공하며, 자동화를 다음 단계로 끌어올리기 위해 곧 구현될 시퀀스 생성을 지원합니다.

영역InstrumentStudio Sequencer 기능InstrumentStudio Sequencer 제한
시퀀스 만들기사용자 정의 측정 단계를 위해 I/O 및 측정 플러그인을 설정하도록 인스트루먼트 패널을 시퀀스 단계로 추가시퀀스 내에서 고급 분기, 조건부 로직 또는 병렬 실행을 지원하지 않음
설정 단계InstrumentStudio 패널 측정값에서 단계들을 직접 생성합니다. 인스트루먼트 패널에서 측정을 설정하면 InstrumentStudio는 설정을 자동화 단계로 직접 변환할 수 있습니다단계 실행을 위한 사용자 정의 측정 로직을 생성하거나 외부 스크립트/코드를 통합할 수 없음
스윕선형 파라미터 진행으로 기본 단일 레벨 스윕 구현중첩된 스윕, 복잡한 루프 구조 또는 테스트 결과에 따른 동적 파라미터 변경을 지원하지 않음
시퀀스 실행정의된 각 측정 단계를 수행하는 시퀀스를 실행합니다. 측정값은 실행 중 InstrumentStudio에서 실시간으로 표시됩니다.단계 결과에 따라 실행을 분기하거나, 병렬 테스트를 실행하거나, 운영자 워크플로우를 처리할 수 없음
시퀀스 보고각 시퀀스 실행 결과를 자세히 설명하는 PDF 파일 생성기본 .pdf 이외의 보고서 형식을 사용자 정의하거나 고급 분석 또는 요약을 자동으로 생성할 수 없음
시퀀스 로깅시퀀스 실행의 추적 및 검증에 사용할 수 있는 실행 로그를 자동으로 생성고급 로그 관리, 내보내기 옵션을 제공하지 않거나 로그를 외부 시스템과 자동으로 통합하지 않음

 

테이블 1. InstrumentStudio 시퀀서 비교 테이블

영역FlexLogger 시퀀싱 플러그인 기능FlexLogger 시퀀싱 플러그인 제한
시퀀싱 모델정의된 지속기간 동안 선형, 단계별 시퀀스 실행계층 구조 또는 병렬 상태를 가진 완전한 상태 머신으로 작동
흐름 제어단계별 분기: 단계 건너뛰기, 반복, 정지 또는 특정 단계 이동임의 제어 흐름(스위치/케이스, 중첩 분기, 동적 라벨) 지원
조건 로직시작, 정지, 사전 조건, 단계 이후 작업에 조건식(불리언/숫자형) 사용이벤트에 결정적 또는 즉각적 반응(조건은 폴링되고 인터럽트 기반이 아님)
루프단계 반복 또는 이전 단계 이동으로 기본 루프 구현동적으로 계산된 루프 또는 런타임 생성 시퀀스 생성
출력 채널시퀀서 인스턴스당 다수 아날로그 및 디지털 출력 채널 구동하드웨어/FlexLogger 한계 초과 또는 명시적 "최대 채널" 값 지정(정의되지 않음)
출력값수식(최근, 기본, t, 수학 함수) 사용으로 출력 유지, 램프, 보간, 계산단계 내부에서 사용자 코드(LabVIEW VI, Python, 사용자 정의 알고리즘) 실행
시간느린/중간 시퀀싱에 적합한 소프트웨어 타이밍 단계 실행하드웨어 타이밍의 결정적 고속 웨이브폼 제어 제공
재활성조건에서 매핑된 입력 채널 참조제로 지연 응답 보장(입력값 약간 지연될 수 있음)
런타임 동작한 프로젝트에서 여러 개의 독립적인 시퀀서 플러그인 인스턴스 실행실행 중 시퀀스 구조(단계, 채널, 로직) 수정
사용 사례테스트 절차, 번인, 내구성 프로파일, 조건 램프/홀드PLC 교체, 안전성에 중요한 인터록, 폐루프 제어

 

테이블 2: FlexLogger 시퀀싱 플러그인 비교 테이블