3. 测试架构设计

TestStand 的测试架构设计,本质上是把“产品测试需求”翻译成一套可执行、可扩展、可维护的序列与进程组织方式。很多项目在初期只关注单个测试项能否跑通,等到工位从 1 个扩展到 4 个、测试项从 20 个增加到 200 个时,才发现序列耦合严重、进程模型混乱、执行入口不统一,最终导致维护成本急剧上升。因此,架构设计必须在编码之前完成,而不是事后补救。

一、序列架构:从“能跑”到“可复用”

TestStand 的序列文件(.seq)是测试逻辑的载体,但序列架构的核心不是“写多少个序列”,而是“如何划分层次与职责”。推荐采用三层序列架构:

  • 主序列(MainSequence):负责流程调度、工位资源分配、结果汇总与报告生成,不包含具体仪器操作。
  • 测试项序列(TestStep Sequence):每个测试项独立成一个序列,例如“电源电压测试”“通信握手测试”“静态电流测试”,内部封装仪器调用、判定逻辑与数据记录。
  • 驱动/工具序列(Driver/Utility Sequence):封装仪器初始化、量程设置、单位换算、异常重试等通用操作,供多个测试项序列调用。

这种分层的关键收益是:当某个测试项的判定阈值变化时,只需修改对应测试项序列;当仪器更换时,只需修改驱动序列。主序列保持稳定,不会因为局部变化而整体重构。

建议在序列文件中使用“序列文件夹”对测试项分组,例如按电源域、通信域、功能域划分,便于在 TestStand 序列编辑器中快速定位。

二、进程模型:单进程、多进程与远程执行

TestStand 的进程模型决定了测试执行的隔离性与资源占用。常见有三种模式:

进程模型适用场景关键特点
单进程(Single Process)单工位、调试阶段所有序列在同一进程内执行,调试方便,但一个测试项崩溃会影响整个测试。
多进程(Multiple Processes)多工位并行、稳定性要求高每个工位独立进程,互不干扰,但需要管理进程间资源与结果汇总。
远程执行(Remote Execution)分布式测试、多机协同通过 TestStand 远程接口调用其他机器上的序列,适合大型产线。

对于多工位并行场景,推荐使用“每个工位一个独立进程”的模型。这样即使某个工位的仪器驱动异常或测试项死循环,也不会阻塞其他工位。代价是需要额外处理进程启动、结果回传和资源释放。

三、执行入口:统一入口与参数传递

执行入口是测试架构的“大门”。一个常见的错误是每个工位直接双击不同的序列文件运行,导致参数来源不一致、报告路径混乱。正确的做法是设计一个统一的执行入口序列,例如 EntryPoint.seq,它接收工位号、产品型号、测试配置等参数,然后根据参数动态调用对应的主序列。

EntryPoint.seq
  ├─ 参数:StationID, ProductModel, ConfigFile
  ├─ 读取配置文件(ConfigFile)
  ├─ 根据 ProductModel 选择测试流程
  ├─ 调用 MainSequence.seq(传入 StationID)
  └─ 生成报告并返回结果

参数传递建议使用 TestStand 的“文件全局变量”或“站全局变量”来管理工位级配置,避免硬编码。例如,将仪器地址、超时时间、判定阈值放在 StationGlobals 中,不同工位加载不同的配置文件即可。

四、多工位并行策略:资源隔离与同步

多工位并行的核心矛盾是“共享资源”与“独立执行”之间的平衡。需要重点处理三类资源:

  • 仪器资源:如果多个工位共用一台仪器(如可编程电源),必须通过 TestStand 的“资源锁”或外部互斥机制串行访问,否则会出现设置冲突。
  • 文件资源:报告文件、日志文件应按工位号命名,例如 Report_Station1.xml,避免写入冲突。
  • 数据库资源:多工位同时写入数据库时,建议使用连接池或队列机制,避免连接数超限。

同步策略上,推荐“工位独立、结果汇总”的模式:每个工位独立完成测试并生成本地结果,主控进程在所有工位完成后统一汇总。这样既保证了并行效率,又避免了频繁的跨进程同步开销。

TestStand 多工位并行测试架构 统一执行入口 EntryPoint.seq StationID / ProductModel / ConfigFile 主序列 MainSequence.seq 流程调度 / 结果汇总 / 报告生成 工位 1(独立进程) 测试项序列组 A 驱动/工具序列 工位 2(独立进程) 测试项序列组 B 驱动/工具序列 工位 3(独立进程) 测试项序列组 C 驱动/工具序列 共享资源层(需互斥/队列管理) 可编程电源(互斥锁) 数据库(连接池) 报告文件(按工位命名) 日志服务 进程隔离 单工位崩溃不影响其他 序列分层 主序列/测试项/驱动

五、架构落地检查清单

在完成架构设计后,建议用以下清单做一次自检,确保关键点没有遗漏:

  • 主序列是否只负责调度,不包含具体仪器操作?
  • 每个测试项是否独立成序列,且判定阈值可配置?
  • 多工位是否使用独立进程,进程间是否无共享内存依赖?
  • 执行入口是否统一,参数是否通过配置文件或全局变量传递?
  • 共享仪器是否配置了互斥锁或队列?
  • 报告文件是否按工位号命名,避免写入冲突?
  • 数据库写入是否使用连接池或队列,避免连接数超限?

架构设计不是一次性工作,而是随着工位数量、测试项数量和产品型号的增加持续演进的。建议在项目初期就建立序列命名规范、进程模型约定和资源管理策略,并在每次迭代中回顾这些约定是否仍然适用。一个清晰的架构,能让后续的测试项开发、调试和产线部署都变得有章可循。