3. 测试站版本清单与资产盘点

版本治理的第一步不是升级,而是"看清现状"。一个 TestStand 测试站真正决定行为的东西,往往分散在五类资产里:TestStand 引擎本身、序列文件、代码模块、配置文件、驱动与插件。它们各自独立演进,却又在运行时彼此咬合。如果只记录"TestStand 是 2019 还是 2021",而不知道某个工位的 MainSequence.seq 调用了哪个版本的 LabVIEW VI、加载了哪一版 NI-DAQmx,那么一旦出现"换台电脑就报错"或"昨天还能过今天不过"的问题,排查就会变成盲猜。本节要做的,就是把这五类资产变成一份可追溯的台账。

为什么必须做资产盘点

测试站的行为由"引擎 + 序列 + 代码 + 配置 + 驱动"共同决定,任何一项版本漂移都可能改变结果。典型场景包括:TestStand 引擎从 2019 升到 2021 后,某些步骤类型的默认行为变化导致序列报错;某台机器上 NI-DAQmx 是 19.5,另一台是 21.3,同一段采集代码的时序参数解释不同;操作员手工改过 StationGlobals.ini 里的限值,却没有记录。资产盘点的价值在于:把"隐性依赖"变成"显性记录",让任何一次变更都有据可查、可回退、可复现。

盘点的目标不是"列得越多越好",而是覆盖所有会影响测试结果的版本要素,并保证每条记录都能定位到具体文件路径和版本号。

五类资产及其版本标识

不同资产的"版本"含义不同,采集方式也不同,需要分别对待:

  • TestStand 引擎:版本号来自 Help > About 或注册表 HKLM\SOFTWARE\National Instruments\TestStand\CurrentVersion,同时记录补丁号(如 2021 f1)。引擎版本决定了序列编辑器、运行时引擎和 API 的行为。
  • 序列文件(.seq):没有内置版本号,需要人为管理。建议在序列文件属性或 StationGlobals 中维护一个 SeqVersion 变量,并在文件命名或版本控制中体现。同时记录文件路径、最后修改时间、修改人。
  • 代码模块:包括 LabVIEW VI、C/C++ DLL、.NET 程序集、Python 脚本等。版本标识来自各自格式:VI 有版本号和修订号,DLL 有文件版本属性,.NET 程序集有 AssemblyVersion。必须记录模块路径和调用它的步骤。
  • 配置文件:StationGlobals.ini、TestStand.ini、SearchPaths 配置、硬件配置文件(如 .ini、.xml)。这类文件常被现场修改,需要记录基线版本和当前差异。
  • 驱动与插件:NI-DAQmx、NI-VISA、NI-DMM、InstrumentStudio、Switch Executive 等。版本号来自 NI Package Manager 或 MAX,需记录驱动名称、版本、安装日期。

资产台账的字段设计

台账不是简单的清单,而是一张关系表。每条记录至少应包含以下字段,才能支撑追溯:

字段说明示例
资产类别引擎/序列/代码/配置/驱动代码模块
资产名称可读名称采集VI
文件路径绝对路径或相对站根路径D:\Station\Modules\Acquire.vi
版本号该资产自身的版本标识1.3.0.12
关联序列调用它的序列文件MainSequence.seq
关联步骤具体步骤名Acquire_Voltage
基线版本已验证通过的版本1.3.0.10
当前状态一致/漂移/待确认漂移
最后核对日期最近一次盘点时间2024-06-12

其中"关联序列"和"关联步骤"是台账区别于普通清单的关键——它把代码模块和序列文件连起来,形成可追溯的调用链。当某个模块升级时,能立刻知道哪些序列受影响。

盘点流程与采集方法

盘点可以按"先自动、后人工"的顺序进行。TestStand 引擎和驱动版本可以通过脚本或命令行批量采集;序列文件和代码模块可以通过遍历站根目录、读取文件属性获得;配置文件则需要对比基线。下面是一段用于采集引擎与驱动版本的示例思路(伪代码,参数为示例值):

# 采集 TestStand 引擎版本(示例)
reg query "HKLM\SOFTWARE\National Instruments\TestStand\CurrentVersion" /v Version
# 输出示例:Version  REG_SZ  21.0.0f1

# 采集 NI 驱动版本(示例,通过 nipkg)
nipkg list-installed --filter "ni-daqmx"
# 输出示例:ni-daqmx 21.3.0.49152

# 遍历站根目录下的 .seq 与模块文件(示例)
Get-ChildItem -Path "D:\Station" -Recurse -Include *.seq,*.vi,*.dll |
  Select-Object FullName, LastWriteTime, Length

采集完成后,把结果填入台账,并与基线版本逐条比对。比对结果分为三类:一致(当前版本等于基线)、漂移(当前版本不等于基线)、待确认(无基线或无法读取版本)。漂移项需要重点标注,并记录漂移原因和影响评估。

不要只记录"最新版本",而要记录"当前实际版本"和"已验证基线版本"。两者不一致时,测试结果的可信度就存在风险。

从台账到可追溯

台账建立后,还需要让它"活"起来。建议把台账纳入版本控制(如 Git),每次变更都提交记录;在测试站启动时,可以增加一个自检步骤,自动比对当前资产版本与台账基线,发现漂移时给出提示。这样,资产盘点就从一次性的文档工作,变成了持续运行的治理机制。

测试站五类资产与可追溯台账关系 TestStand 引擎 版本 / 补丁号 序列文件 .seq SeqVersion / 路径 代码模块 VI / DLL / 程序集 配置文件 StationGlobals / ini 驱动与插件 DAQmx / VISA / DMM 采集方式 注册表 / About 文件属性 / 遍历 文件版本属性 基线对比 nipkg / MAX 资产台账 资产类别 / 名称 文件路径 / 版本号 关联序列 / 步骤 基线版本 当前状态 最后核对日期 一致 / 漂移 / 待确认 可追溯调用链 可追溯 变更记录 回退依据 复现能力 盘点顺序:先自动采集引擎与驱动 → 再遍历序列与模块 → 最后比对配置基线 → 填入台账并标注漂移项

把这张关系图落到实际工作中,就是一份可执行的盘点清单。建议每次盘点后更新台账的"最后核对日期",并对漂移项做一次影响评估:该漂移是否影响测试结果?是否需要回退到基线?如果确认新版本可用,则更新基线版本并记录变更原因。这样,台账不仅记录了"现在是什么",也记录了"为什么变成这样",为后续的版本治理提供完整依据。