3. 自动化测试序列设计基础
在 Dewesoft 的自动化测试体系中,测试序列(Test Sequence)是连接“测试计划”与“仪器实际动作”的核心执行单元。它并不是简单的步骤列表,而是一个带有状态、转移条件和执行动作的状态机模型。理解这一点,是后续用脚本编写可靠测试流程的前提。
一、测试序列的本质:状态机而非步骤清单
一个 Dewesoft 测试序列在运行时始终处于某个确定状态。常见状态包括:Idle(空闲)、Setup(配置)、Acquiring(采集中)、Processing(处理)、Pass(通过)、Fail(失败)、Aborted(中止)。状态之间通过转移条件连接,例如“采集时长达到 10 s”或“通道 1 峰值超过 5 V”。每个状态内部可以绑定进入动作、执行动作和退出动作,这正是脚本可以介入的地方。
与普通流程图不同,状态机允许同一状态被多次进入,也允许从多个状态汇聚到同一个终止状态。这种模型天然适合表达“循环采集直到满足条件”“失败后重试”“多分支判定”等测试逻辑。
二、三种基本结构:顺序、分支、循环
顺序结构是最简单的形式:Setup → Acquiring → Processing → 判定。每一步必须等待上一步完成,适合固定流程的产线测试。
分支结构根据条件选择不同路径。例如在 Processing 后判断“峰值是否在 4.8~5.2 V 之间”,若在范围内进入 Pass,否则进入 Fail 并触发重测分支。Dewesoft 中常用 if/else 或 switch 在脚本中实现。
循环结构用于重复采集或重试。典型场景是“连续采集 5 次,每次 2 s,取平均值”。循环必须设置最大迭代次数和退出条件,否则可能陷入死循环。在状态机中,循环表现为从 Acquiring 回到 Setup 或从 Processing 回到 Acquiring 的转移边。
三、用脚本实现一个简单测试流程
Dewesoft 支持在 Test Sequence 中嵌入脚本(常用 Python 或 Dewesoft 内置脚本语言)。下面给出一个“采集 3 次、每次 1 s、判断电压是否在 4.8~5.2 V”的示例逻辑。参数为教学示例,实际使用时需根据硬件量程和传感器灵敏度调整。
# 教学示例:Dewesoft 测试序列脚本片段
max_retry = 3
sample_time = 1.0 # 每次采集 1 秒
v_min, v_max = 4.8, 5.2 # 合格电压范围 (V)
results = []
for i in range(max_retry):
start_acquisition(duration=sample_time)
v = read_channel("AI1", statistic="mean")
results.append(v)
if v_min <= v <= v_max:
set_state("Pass")
break
else:
set_state("Fail")
log("采集结果:", results)
这段脚本的关键点:start_acquisition 触发采集并阻塞等待;read_channel 读取指定通道的统计值;set_state 驱动状态机转移。若三次都未通过,for...else 的 else 分支执行,进入 Fail 状态。
四、设计时容易忽略的三个细节
- 状态超时保护:每个状态应设置最大停留时间。例如 Acquiring 超过 5 s 未完成,自动转移到 Aborted,避免测试卡死。
- 数据落盘时机:Processing 状态中应明确何时保存
.dxd或.dat文件。建议在判定通过后立即保存,失败时保存原始数据用于回溯。 - 变量作用域:循环中累加的变量应在循环外初始化,否则每次迭代会被重置。Dewesoft 脚本中局部变量与序列全局变量的区分需要特别注意。
五、从状态机到可执行序列的检查清单
| 检查项 | 示例要求 | 判断依据 |
|---|---|---|
| 初始状态 | 上电后进入 Idle | 无自动采集动作 |
| 转移条件 | Setup 完成后才允许 Acquiring | 配置未完成时采集按钮不可用 |
| 循环上限 | 重试不超过 3 次 | 日志中 retry 计数 ≤ 3 |
| 异常出口 | 超时或通信失败进入 Aborted | 状态可被外部复位 |
| 结果记录 | Pass/Fail 均写入报告 | 报告含时间戳、通道值、判定结果 |
掌握状态机模型和三种基本结构后,就可以把测试需求翻译成 Dewesoft 可执行的序列。下一阶段将在此基础上引入更复杂的并行采集与多设备同步,但核心仍然是“状态 + 转移条件 + 动作”这三要素。