試験システム開発の設計思想 〜 TestStand × LabVIEW 活用ガイド 〜

この記事は試験システムの開発・保守に携わるエンジニア、管理者の方を対象としています。
TestStand・LabVIEW の知識がなくても読み進められるよう解説しています。

この記事で説明する内容

  • 1つの試験機能=1つのプログラム部品(1VI原則)とその利点
  • TestStand による試験手順の管理(シーケンス)
  • 試験順序の入れ替え・一部テストのみ実行する方法
  • 設定パラメータ(判定値・タイムアウトなど)の変更方法
  • 全体アーキテクチャのイメージ

設計思想の全体像

本書で説明する設計思想を 1 枚で整理したものが下図です。①〜⑤の各ポイントについては各章で詳しく解説します。

試験システム開発の設計思想 全体概要

はじめに ─ なぜ「設計思想」が重要なのか

試験システムは、一度作って終わりではありません。製品の仕様変更・試験項目の追加・計測器の更新など、さまざまな変化が長期にわたって発生します。

こうした変化に毎回「プログラム全体を書き直す」ような作りになっていると、コスト・時間・品質リスクが急増します。

こんな問題が起きていませんか?

  • 試験の順序が変わるたびに、プログラム全体を修正しなければならない
  • 判定値(合否の基準値)を変えるために、プログラムを開いて探さなければならない
  • 1か所の修正が別の試験に影響していないか、全体を確認しなければならない
  • 新しい試験項目を追加すると、既存のコードが複雑になってバグが混入しやすくなる

これらの問題を根本から解決するのが、「1試験機能=1部品」の設計原則と、TestStand による試験手順・パラメータの外部管理です。

用語の説明

本書では以下のツールを使用します。初めて聞く方のために役割を簡単に説明します。

用語説明(初めて聞く人向け)
LabVIEWグラフィカルなプログラミング環境。試験装置や計測器を制御する「試験機能」を実装するために使います。各試験項目を VI(Virtual Instrument)と呼ばれるプログラム部品として作成します。
TestStand試験の「実行順序・条件・合否判定フロー」を管理するソフトウェア。LabVIEW で作った部品を組み合わせて試験全体の流れを定義します。いわば「試験の司令塔」です。
VI(Virtual Instrument)LabVIEW で作るプログラムの単位。「電圧を測る」「通信を確認する」など、1 つの機能に特化した部品です。本書では「プログラム部品」とも呼びます。
シーケンスTestStand が管理する「試験手順書」のようなファイル(.seq)。どのVI をどの順番で実行するかを定義します。プログラム本体を変えずに、このファイルだけ編集できます。
テストシステムの3層アーキテクチャ(TestStand→LabVIEW→計測器)

目次

第1章 1つの試験機能=1つのプログラム部品(1VI原則)

1.1 原則の概要

「1つの試験項目に対して、1つのプログラム部品(VI)を作る」ことを基本ルールとします。試験仕様書の各行がそのままプログラム部品の一覧に対応するイメージです。

No.試験項目試験内容担当プログラム(VI)
1電源投入電源をONにして、起動完了を確認するPowerOn.vi
2電圧測定指定箇所の電圧を測定し合否を判定するVoltageMeasure.vi
3通信確認通信が正しく応答しているか確認するCommunicationCheck.vi
4出力確認負荷をかけた状態で出力を確認するOutputCheck.vi
5結果保存測定結果をファイル・DBに記録するSaveResult.vi

各部品は「1つの試験機能だけ」を担当する ─ これが保守・再利用・並行開発を可能にします

1.2 各プログラム部品(VI)の構造

各VIは「1つの試験機能のみ」を担当します。試験の順序制御や他の試験との連携はVIの中には書きません。

構成要素内容
入力(引数)計測器の識別番号・判定基準値(上限・下限)・タイムアウト時間 など
処理内容計測器を制御 → 測定値を取得 → 判定基準と比較して合否を決定
出力(結果)測定値・合否結果(OK / NG)・エラー情報

設計上の重要ポイント

  • 1つの部品は1つの試験機能のみを持つ(単一責任の原則)
  • 試験の順序制御(次は何をするか)は部品の中には書かない→ 順序はTestStand のシーケンスが担当する
  • 合否判定は部品の中で完結させる
  • エラーが発生した場合はTestStandに通知して、TestStand側で対処を決める

1.3 TestStand シーケンスエディタでの見え方

TestStand のシーケンスエディタでは、各 VI が「ステップ」として一覧表示されます。試験仕様書の項目名とステップ名が対応するため、管理が明確です。

TestStandシーケンスエディタ 各VIが試験ステップとして並ぶ

第2章 1VI原則がもたらす利点

2.1 保守が容易になる(影響範囲の局所化)

各プログラム部品が独立しているため、1つの部品を修正・更新しても、他の部品や試験手順への影響がありません。

【具体例】電圧測定の仕様が変わった場合

修正対象: VoltageMeasure.vi (電圧測定部品)のみ
影響範囲: なし(他の部品・シーケンスは無変更のまま)

もし全試験を1つのプログラムに書いていた場合:
→ 電圧測定の変更が通信確認・出力確認のロジックに波及するリスクがある
→ 変更後に全試験項目の動作確認が必要になる

2.2 検査規格書とプログラムの対応が明確になる

TestStand のステップ名として試験項目名をそのまま記載できます。検査規格書とプログラムが 1対1で対応し、どのステップがどの仕様に対応するかが一目で分かります。

検査規格書とプログラムの一致 ステップ名が試験項目名と対応

2.3 単体テスト・デバックが容易

  • 問題が発生したVIだけを取り出して単体でデバッグできる
  • TestStandのシーケンスが完成する前から、各VIを先行して開発・検証できる
  • 問題のある部品を特定したら、その部品だけを集中して修正できる

2.4 部品の再利用ができる

一度作成したVIは、別の製品の試験システムにそのまま転用できます。

対象製品使用するプログラム部品(例)
製品A(電源装置)PowerOn.vi / VoltageMeasure.vi / SaveResult.vi を使用
製品B(通信モジュール)PowerOn.vi / CommunicationCheck.vi / SaveResult.vi を使用
製品C(新製品)既存の部品を流用し、新しく必要な部品だけを追加

2.5 複数人による並行開発ができる

部品が独立しているため、複数のエンジニアが担当を分けて同時に開発できます。

担当作業内容
担当AVoltageMeasure.vi・CurrentMeasure.vi を開発
担当BCommunicationCheck.vi・ProtocolTest.vi を開発
担当COutputCheck.vi・LoadTest.vi を開発
統合担当完成した部品をTestStandシーケンスに組み込んで全体確認

2.6 仕様書との対応が追跡できる(トレーサビリティ)

試験仕様書 No.3「通信確認」

CommunicationCheck.vi(プログラム部品)

TestStand シーケンス ステップ3

試験レポート「ステップ3: OK / 応答時間 12ms」

第3章 TestStand による試験手順の管理

3.1 「試験手順書」を外部ファイルで管理する

TestStand のシーケンス(.seq)は、どの VI をどの順番・条件で実行するかを定義した「試験手順書ファイル」です。LabVIEW の部品が「何をするか」を持つのに対し、シーケンスは「いつ・どの順で・どの条件で実行するか」を持ちます。

構成要素役割
LabVIEW の部品(.vi)試験の実装:計測器の制御・測定・合否判定
TestStand のシーケンス(.seq)試験の手順:実行順序・条件分岐・フロー制御
TestStand のログ試験の記録:各ステップの結果・測定値・OK/NG
ソフトウェア全体の構成 TestStand/LabVIEW/PXIシャーシの3層

3.2 シーケンスの基本的な流れ

試験シーケンスの例

ステップ 1: 前処理(Setup)
└ 計測器の初期化・接続確認

ステップ 2: PowerOn.vi → OK / NG
└ NG の場合:試験を即時中断

ステップ 3: VoltageMeasure.vi → 測定値・OK / NG

ステップ 4: CommunicationCheck.vi → OK / NG

ステップ 5: OutputCheck.vi → OK / NG

ステップ 6: SaveResult.vi → 結果をファイルに保存

ステップ 7: 後処理(Cleanup)
└ 計測器の接続解放・電源OFF

第4章 試験手順の入れ替え・一部テストのみ実行

4.1 順序変更はシーケンスファイルだけ

プログラム部品(VI)のソースコードを一切修正する必要がありません。TestStandのシーケンスのステップ順序を変えるだけで対応できます。

変更前

  1. PowerOn.vi
  2. VoltageMeasure.vi
  3. CommunicationCheck.vi
  4. OutputCheck.vi

変更後

  1. PowerOn.vi
  2. CommunicationCheck.vi ← 入れ替え
  3. VoltageMeasure.vi ← 入れ替え
  4. OutputCheck.vi

TestStand のシーケンスエディタ上でステップをドラッグ&ドロップするだけで完了します。

試験順序の変更 ドラッグするだけ。LabVIEWは無変更

4.2 試験項目の追加

新しい試験を追加する手順

  1. 仕様書に「温度測定」試験が追加された
  2. LabVIEW で TemperatureMeasure.vi(温度測定部品)を新規作成する
  3. TestStand シーケンスにステップを1つ追加して設定する
  4. 完了 ─ 既存の部品・ステップへの影響はゼロ

4.3 一部テストのみ実行する

TestStand では特定のステップだけを選んで実行したり、一時的にスキップさせたりできます。

活用場面対応方法
開発中完成したVIのみ有効にして先行テスト。未完成VIはスキップ。
デバッグNGが出たステップだけを集中して再実行・確認できる。
再試験仕様変更になった箇所のステップだけ有効にして部分的に再試験。
計測器トラブル故障した計測器を使うステップをスキップし、他の試験を先行実施。
試験自動実行画面 各ステップのPassed/Skipped/NGが一目で分かる

第5章 設定パラメータの変更

5.1 設定パラメータとは

試験システムにおける「設定パラメータ」とは、プログラムの動作を制御する数値や条件のことです。

パラメータの種類具体例
判定基準値(上限・下限)電圧が 4.8V〜5.2V の範囲内であればOK、外れればNG など
タイムアウト時間通信の応答を最大10秒待つ、超えたらエラー など
測定回数・平均化同じ測定を5回繰り返して平均値を使う など
待機時間電源ON後、3秒待ってから測定を開始する など
許容誤差測定値と基準値の差が ±2% 以内であれば合格 など

5.2 パラメータをプログラムの外に出す

判定基準値などのパラメータを「プログラムのソースコードの中に直接書かない」ことが重要です。TestStand のシーケンス上または設定ファイルに置くことで、プログラムを触らずに値だけを変更できます。

変更前

電圧測定VI の中にこう書く:
上限 = 5.2
下限 = 4.8

→ 値を変えるたびにソースコードを開いて修正する必要がある
→ 修正ミスやバグが入り込むリスク

変更後

TestStand のシーケンスで設定:
上限 = 5.2 ← ここを変えるだけ
下限 = 4.8 ← ここを変えるだけ

→ プログラムは一切変更しない
→ 非エンジニアでも値の変更が可能
→ 変更履歴の管理がしやすい

5.3 TestStand でのパラメータ変更

TestStand の Step Settings 画面では、各ステップのパラメータをGUI上で直接変更できます。プログラムのソースコードを開く必要は一切ありません。

TestStandでのパラメータ変更 デフォルトチェックを外して値を変更するだけ

5.4 リミット(判定基準値)の変更

合否判定の上限値・下限値(リミット)は、TestStandのLimitsタブで設定します。比較方法(以上・以下・範囲内など)も選択肢から指定できます。

リミットの変更 Limitsタブで上限・下弦・比較方法を指定するだけ

5.5 設定ファイル(CSVやExcel)との連携

設定ファイル連携の流れ

① Excel/CSV ファイルに製品ごとの判定基準値を記載する
例: 製品A=電圧上限 5.2V / 製品B=電圧上限 3.4V

② TestStand が試験開始時にファイルを自動で読み込む

③ 読み込んだ値を各プログラム部品(VI)に渡して試験を実行する

④ 製品の切り替え時はExcelの値を書き換えるだけ、プログラムには一切触れない

5.6 パラメータ外部化による利点

利点説明
プログラム修正が不要判定値変更時にソースコードを開く必要がない。修正ミスやバグ混入リスクがなくなる。
品種切り替えが簡単製品AとBで判定基準が異なる場合も、設定ファイルを切り替えるだけ。
非エンジニアでも変更可能品質管理担当者でも、Excel の値を書き換えるだけで判定基準を調整できる。
試験条件の一元管理すべての判定基準が設定ファイルにまとまっているため見直しや監査が容易。

第6章 全体アーキテクチャのイメージ

6.1 システム全体の流れ

試験システム全体は「試験仕様書 → LabVIEW部品→TestStandシーケンス → 試験実行環境 →試験ログ・レポート」という流れで構成されます。

構成要素役割
試験仕様書No.1, No.2, No.3… と試験項目が定義された仕様書
LabVIEW(試験機能部品)各試験機能を実装したVI部品群(PowerOn.vi, VoltageMeasure.vi …)
TestStand(シーケンス)実行順序の制御・条件分岐・エラー処理・ログ取得
試験実行環境計測器の制御・データ取得・結果判定
試験ログ・レポートOK/NG判定・測定値保存・レポート出力

6.2 NG時の動作と条件分岐

動作モード役割
継続実行(Continue on Failure)NGになっても後続のステップを続ける。全ステップの結果をまとめて取得したい場合に使う。
即時中断(Abort on Failure)NGになった時点でシーケンスを止める。電源NGのような重大な失敗時に有効。
別ステップへジャンプ(Goto)NGのときに特定のステップへ飛ぶ。エラー回復処理や再試験フローへの切り替えに使う。
自動リトライ(Loop)NGの場合に同じステップを指定回数繰り返す。通信の一時的なノイズ対策に使う。

6.3 製品バリエーションへの対応

製品グレードによる試験の切り替え

製品グレード = “Standard” の場合
→ StandardOutputCheck.vi を実行

製品グレード = “Premium” の場合
→ PremiumOutputCheck.vi + ExtendedRangeCheck.vi を実行

→ 1つのシーケンスで複数グレードに対応できる
→ グレード追加時は新しい部品を1本追加してシーケンスに条件を加えるだけ

まとめ

「1試験機能=1プログラム部品」の原則とTestStandによる試験手順・パラメータの外部管理を組み合わせることで、以下のすべてを同時に実現できます。

保守の容易さ:1つの部品を修正しても他に影響しない
再利用性:別の製品の試験にも既存部品を転用できる
拡張性:新しい試験はVI部品を1本追加するだけ
並行開発:担当を分けて部品を同時に開発できる
デバッグ効率:問題のある部品を単体で切り離して確認できる
手順変更の柔軟性:プログラムを変えずにシーケンスのみ変更できる
パラメータ変更の容易さ:判定基準値をプログラム外部で一元管理できる
部分実行:特定のステップだけを選んで実行できる
NG時フロー制御:中断・継続・リトライをシーケンスで設定できる
トレーサビリティ:仕様書 → 部品 → シーケンス → レポートまで追跡可能

ポイント

1 試験機能=1部品の原則と、TestStand による外部管理で、保守性・再利用性・拡張性の高い試験システムを実現

特に長期間にわたって運用される試験設備や、多品種・多バリエーションの製品に対応する試験システムにおいて、このアーキテクチャは長期的な開発コストと保守コストの大幅な削減につながります。

技術資料 ダウンロード

本記事の技術資料は以下のボタンより無料でダウンロードが可能です。