テストカバレッジとアプリケーションの複雑さが増すと、エンジニアは測定の開発よりもテスト管理インフラストラクチャの維持に多くの時間を費やし、保守性が低下し、再利用性が低下します。シーケンスはテスト管理の中核であり、自動テストと測定を可能にします。
このホワイトペーパーでは、NI TestStandなどの専用のテスト管理フレームワークでアプリケーションレベルのシーケンス、ノーコードシーケンス、およびシーケンスを使用する方法、およびユーザに最適なアプローチを決定する方法について説明します。また、このホワイト ペーパーでは、AIを使用して開発を迅速化する方法と、NI LabVIEW+ Suiteとオープンソース ソリューションの比較についても説明します。
エンジニアは、テストコードを開発する代わりにシーケンサの開発に多くの時間を費やし、デプロイとテストの実行が遅くなります。要件が大きくなると、コードのシーケンスとサポートが2つ目のコードベースになります。標準的な作業は、新しい測定からインフラストラクチャの維持に移行します。ステップの実行、構成、テストシステムの導入、エラー処理、ロギング、レポートなどの操作は、テストの生産性を維持するためにすべて開発および維持する必要があります。テストの実行からテスト管理に重点を移すと、生産性が低下し、新しいステーションへのレプリケーション速度が低下し、リスクが増大します。テストオーケストレーションの小さな変更は、安定した測定コードを壊します。
見過ごされがちなもう1つの課題は、テスト管理インフラストラクチャに十分な時間や労力が費やされず、後の段階で開発が繰り返されることです。たとえば、単純な自動化のニーズしか持たない検証チームの場合、検証から本番環境に移行する場合、実行されたテストは重複している可能性があります。テストインフラストラクチャが適切に調整されていないと、既存のテストコードを無駄に開発し、自動化することで製品開発の次の段階に持ち越してしまう可能性があります。
シーケンサは、ステップ順序、分岐、リミット/判定、エラー処理、レポート生成、リソース使用 (計測器、DUT接続、ファイルディレクトリなど) などのテストフローを定義する制御レイヤです。設計と検証では、通常、チームは対話式測定から開始して「最初のトレース」を素早く取得し、ワークフローが繰り返されるとすぐに自動化を追加します。以下の手順は、一般的な進行状況を示します。
基本的なシーケンスは、単純な線形自動化フローの対話式アプリケーションで処理できます。コードレスのテスト自動化ツールを提供するInstrumentStudioやNI FlexLoggerなどのソフトウェアが、このタイプの対話式アプリケーションの例です。
たとえば、検査対象デバイス (DUT) を検証する必要があるとします。InstrumentStudio では、既知の信号を生成するように計測器を構成したり、DUT の応答を測定したり、結果をキャプチャするなど、シーケンスで繰り返される一連の手順を自動化できます。この反復可能なシーケンスにより、同じデバイスまたは複数のデバイスで同じプロセスを素早く再実行でき、コードを追加することなく、手動操作よりも一貫性を保ち、時間を節約できます。ただし、このタイプのシーケンスは通常線形で、すべてのデバイスに対して同じステップを同じ順序で実行するだけです。拡張シーケンスフロー制御、特殊なプロセスモデル、またはカスタマイズされたUIとレポートには、より高度なシーケンスツールが必要です。InstrumentStudioで作成されたシーケンスはシーケンスファイルとして保存され、TestStandで開いてテスト管理機能を拡張することもできます。
InstrumentStudio シーケンサを使用して実行できること、および実行できない機能の一覧については、表 1 を参照してください。
メモ:InstrumentStudioシーケンサには、LabVIEW+ Suiteに含まれているInstrumentStudio Professionalライセンスが必要です。
InstrumentStudioシーケンサの詳細については、InstrumentStudioシーケンサツールのドキュメントページを参照してください。
図1.InstrumentStudio Sequencer
ノーコード自動化シーケンスのもう1つの例は、FlexLoggerを使用したセンサモジュールの出力応答のロギングの自動化です。FlexLogger は、データ収集デバイスの初期化、DUT への刺激信号の適用、線形シーケンスで定義された時間のデータロギングなど、DUT のデータロギングを自動化するシーケンスプラグインを提供します。このプラグインは、線形ステップベースのシーケンス実行、基本的なステップレベルの分岐 (スキップ、反復、停止、ステップジャンプ)、およびポーリングされた条件論理 (開始、停止、前提条件、およびステップ後の動作) を有効にし、コードを開発する必要なくテスト手順を自動化します。
表2は、FlexLoggerシーケンスプラグインを使用して実行できること、および実行できないことの一覧です。
メモ:FlexLogger用シーケンスプラグインにはFlexLogger Professionalライセンスが必要です。このライセンスはLabVIEW+ Suiteにも含まれています。
シーケンサプラグインの詳細については、https://github.com/ni/niflexlogger-plugins/tree/main/PDK%20plugins/Output%20Sequencerを参照してください。
図2.FlexLoggerシーケンスプラグイン
複素シーケンスでは、可変性(データ駆動パラメータ)、再試行/スキップ論理、並列化(マルチUUT、マルチサイト)、リソースアービトレーション、トレーサビリティが追加されます。複雑なシーケンス機能は、ステーション、バリアント間で反復可能な実行を強制し、高度なプロセスモデルを使用してスループットを改善し、確定的動作を定義し、結果をデバッグおよび監査するための一貫したトレース/レポートを生成するため、検証および製造において非常に重要です。
たとえば、TestStand を使用した機能的生産テストでは、構成ファイルまたはスキャンされた製品番号に基づいてパラメータとフローを適応させながら、複数の製品バリアントおよび複数の検査対象ユニット(UUT)に対して同じコア測定ステップを実行する場合があります。シーケンスは、PXIシャーシ、電源、フィクスチャなどの共有リソースを初期化し、共有できない計測器をロックしながらUUTごとのテストスレッドを並列で実行できます。測定に失敗した場合、シーケンスは診断サブシーケンスの実行やセーフシャットダウンへのジャンプなどの条件分岐を適用し、シリアル番号、リミット、オペレータID、キャリブレーションメタデータを含む追跡可能なレポートに標準化された結果をキャプチャすることができます。このプロセスにより、各ステーションはデバッグおよびシーケンス結果の監査用に一貫したデータを生成します。
図3.TestStandシーケンサエディタ
LabVIEW+ Suiteは、開発ワークフローの段階に応じて、複数のレベルのシーケンスに対応します。
このセクションでは、特定のプロジェクト要件に基づいて自動テストシーケンスを構成する3つの戦略の概要を説明します。適切なアプローチの選択は、セットアップ速度、拡張性、および長期メンテナンスのニーズのバランスによって決まります。
FlexLoggerやInstrumentStudioなどのコードレスのテスト自動化ツールは、フローが単純で、フレームワークを構築せずに迅速に起動する必要がある場合に使用します。これらの製品は、ベンチ検証および特性評価(レポート作成とトレーサビリティの必要性が最小限で繰り返し実行する)に最適です。
ノーコード自動化シーケンスは、Pythonなどのスクリプト言語を使用して行われることの多い自動化を簡素化し、アプリケーションレベルで実行できるようになり、作成および検証が必要なコードの量を削減します。
複数のステーションを調整する必要がある場合、頻繁に変更する必要がある場合、オペレータインタフェースが必要な場合、標準化されたレポートが必要な場合、マルチUUTまたは並列実行をサポートする必要がある場合、またはコンプライアンスとトレーサビリティの要件を満たす必要がある場合は、TestStandに切り替えます。このような場合は、計測コードをモジュール化し、フロー制御、結果処理、およびデプロイメントに関する懸念事項をシーケンサに移して、オーケストレーションが各テストモジュールに無秩序に拡大しないようにします。
テスト管理フレームワークの主な用途は、大量生産、高スループット、およびテストトレーサビリティが必要とされる本番テスト環境です。ただし、テスト管理アプリケーションでも、テストの検証段階内に配置できます。たとえば、大量の検証テストや特性テストを実行する必要がある場合、特にPythonなどの速度最適化機能のない言語では、単純なシーケンサの限界がすぐに明らかになります。さらに、検証サイクルと製造サイクルの間にギャップが生じるため、製造テスト用にコードをより最適化する必要があります。検証と製造の両方でTestStandを使用することで、検証チームは大量のテストを必要とする状況に対して十分な準備ができ、開発の生産段階への移行がスムーズになります。
カスタムシーケンサの開発は、要件が安定しており、長期所有(保守、ドキュメント化、初期登録、自動デプロイメント/更新)が可能な場合にのみ行ってください。基本的なシーケンス以外では、実績のある保守済みのシーケンスツールを使用する場合と比較して、所有コストが大幅に増加します。
NIソフトウェアは、統合ハードウェアサポート、保守された実行エンジン、デプロイメントツール、および組み込みのレポート作成/トレーサビリティが必要な場合のリスクを軽減します。オープンソースソフトウェアは、チームがフレームワークを長期間所有し、要件 (ハードウェアの組み合わせ、レポート、デプロイメント) が単純で線形、かつ安定している場合に使用できます。ただし、基本的なシーケンス以外では、カスタムフレームワークを所有すると、開発および保守に多大なコストがかかります。これらは、InstrumentStudioやFlexLoggerなどのNIソフトウェアですでに処理できます。
さらに、LabVIEW+ Suiteの一部であるTestStandは、Pythonの実行の最適化速度は劣り、シーケンサの開発もCまたは.NETで開発する場合に比べて複雑度が低く、比類のないテストパフォーマンスを提供します。TestStandは、数十年にわたって最適化および維持されてきた完全なテスト管理フレームワークを提供し、エンジニアがすでに利用可能な同じソリューションを再利用する手間を省きます。
AIはテストシーケンス開発を加速します。多くの開発者は、AIを使用して、測定コードの生成、テストデータの解析、および好みの言語での単純なリーンシーケンスの作成を行っています。NI Nigel™ AIはLabVIEW+ Suiteに直接統合されているため、これらすべてにNigel AIを活用できます。Nigel AIとLabVIEW+ Suiteの組み合わせには、他のAIソリューションよりもいくつかの利点があります。
Nigelは、テストおよび測定アプリケーションに特化したトレーニングを受けており、LabVIEW、InstrumentStudio、FlexLogger、TestStandの使用方法に関する洞察を提供し、学習と使用開始の迅速化に役立ちます。Nigelは、使用する関数と設定のガイダンスを提供し、PythonやC言語と同様に、堅牢性を強化するために完全に開発されたテスト管理フレームワークで、プロンプトから完全なTestStandシーケンスを間もなく生成できるようになります。
テストシーケンスは、ステップ順序、分岐、リミット/判定、エラー処理、結果のログ/レポートなど、測定の実行方法を定義するため、テスト管理の中核となります。テストカバレッジとアプリケーションの複雑さが増すと、インフラストラクチャのシーケンスとサポートは、すぐに2番目のコードベースとなり、デプロイメントが遅くなり、リスクが増大します。
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、カスタムアルゴリズム) を実行する |
| タイミング | 低速/中速シーケンスに適したソフトウェアタイミングステップを実行 | ハードウェアタイミングの確定的高速波形制御を提供 |
| 反応性 | コンディションでリファレンスマッピングされた入力チャンネル | ゼロレイテンシ応答を保証 (入力値は多少遅延する場合があります) |
| ランタイム動作 | 1つのプロジェクトで複数の独立したシーケンサプラグインインスタンスを実行 | 実行中にシーケンスストラクチャ (ステップ、チャンネル、論理) を変更 |
| ユースケース | テスト手順、バーンイン、耐久性プロファイル、条件付きランプ/ホールド | PLC、セーフティクリティカルインターロック、閉ループ制御を置換 |
表2:FlexLoggerシーケンスプラグインの比較表