3. 测试限值基础

在 TestStand 中,限值(Limit)不是“给测试结果加一个判断语句”这么简单,它是一套与 Step 类型、数据类型、判定逻辑和报告输出紧密耦合的配置机制。理解限值的分类与定义方式,是后续做配置管理、版本比对和批量修改的前提。本节围绕三类最常用的限值——Numeric Limit、String Limit、Pass/Fail Limit——讲清它们各自适用的数据类型、在 Step 中的存放位置,以及判定结果是如何产生的。

一、限值在 Step 中的位置:Limit 是 Step 的属性,不是独立对象

在 TestStand 的 Step 中,限值以属性形式挂在 Step 上,通常位于 Step.Limits 之下。以最常见的 Numeric Limit Test 为例,其结构大致为:

Step.Limits.Low      // 下限
Step.Limits.High     // 上限
Step.Limits.Nominal  // 标称值(可选,用于参考与报告)
Step.Limits.Units    // 单位字符串(可选)
Step.Limits.Comp     // 比较方式(如 GELE、LT、GT 等)

这里有一个关键点:限值本身不产生 Pass/Fail,产生 Pass/Fail 的是“测量值 + 比较方式 + 限值”三者共同作用的结果。同一个 Low/High,如果 Comp 不同,判定结论可能完全不同。因此配置限值时,必须同时确认比较运算符,而不能只看上下限数值。

二、Numeric Limit:面向数值型测量结果

Numeric Limit 用于测量结果为数值的场合,例如电压、电流、频率、温度、时间、功率等。它的判定逻辑是:把 Step 实际测得的数值与 Low/High 按 Comp 指定的方式比较,落在允许区间内则 Pass,否则 Fail。

常见的 Comp 取值与含义如下:

  • GELE:Low ≤ 测量值 ≤ High,最常用的双边限值;
  • GTLT:Low < 测量值 < High,开区间,边界值判 Fail;
  • GE / GT:仅用下限,单边限值;
  • LE / LT:仅用上限,单边限值;
  • EQ / NE:等于/不等于,通常配合容差使用。

举一个教学示例:某电源模块输出 5V,要求 4.75V~5.25V。配置为 Low=4.75、High=5.25、Units="V"、Comp=GELE。若测量值为 5.08,则 Pass;若测量值为 5.31,则 Fail,报告中会显示测量值、上下限和超限方向。若把 Comp 改成 GTLT,则测量值恰好等于 5.25 时也会判 Fail,这就是边界包含关系带来的差异。

配置 Numeric Limit 时,建议同时填写 Units 和 Nominal。Units 让报告可读,Nominal 便于后续做偏差分析和限值收敛,也方便在配置管理中比对不同版本的标称值是否被改动。

三、String Limit:面向字符串型测量结果

String Limit 用于测量结果是字符串的场合,例如固件版本号、序列号前缀、设备 ID、返回状态字、AT 命令响应等。它不比较大小,而是比较“是否匹配”。TestStand 中常见的比较方式包括:

  • Equal:完全相等;
  • NotEqual:不相等;
  • Contains:包含指定子串;
  • StartsWith / EndsWith:前缀/后缀匹配;
  • CaseSensitive:是否区分大小写(作为附加开关)。

例如某设备要求返回字符串必须以 "OK" 开头,配置为 Comp=StartsWith、Expected="OK"、CaseSensitive=True。若实际返回 "OK:READY",Pass;若返回 "ok:ready",因大小写不匹配而 Fail。这里要特别注意:String Limit 的“限值”字段通常叫 Expected 或 String,而不是 Low/High,配置时不要与 Numeric Limit 混淆。

四、Pass/Fail Limit:面向布尔型或状态型结果

Pass/Fail Limit 用于结果本身就是“通过/不通过”两态的场合,例如某个自检项返回布尔值、某个状态位为 0 或 1、某个操作是否成功。它的判定逻辑最直接:测量值与期望状态一致则 Pass,否则 Fail。

在 Step 中,Pass/Fail Limit 通常表现为一个期望值字段(如 Step.Limits.PassFail 或 Expected),可设为 True 或 False。例如某继电器自检要求返回 True,则 Expected=True;若实际返回 False,Step 判 Fail。它也可以与条件判断结合,用于“期望失败”的负向测试场景。

三类限值的判定路径与 Step 属性映射 Step 测量结果 数值 / 字符串 / 布尔 数据类型判断 Numeric / String / Bool Numeric Limit Low / High / Comp / Units GELE · GTLT · GE · LE String Limit Expected / Comp Equal · Contains · StartsWith Pass/Fail Limit Expected = True / False 布尔状态直接比对 Pass Fail 写入报告 判定要点: 1. 限值挂在 Step.Limits 下,比较方式 Comp 决定边界是否包含; 2. Numeric 用 Low/High,String 用 Expected,Pass/Fail 用布尔期望值,三者字段不可混用; 3. 同一测量值在不同 Comp 下可能得到不同结论,配置管理时需连同 Comp 一起版本化。

五、三类限值的对比与选用

把三类限值放在一起看,差异集中在“比较对象”和“比较方式”上:Numeric Limit 比较的是数值区间,String Limit 比较的是字符串模式,Pass/Fail Limit 比较的是布尔状态。选用时先看测量结果的数据类型,再看业务上需要的是区间判定、模式匹配还是状态一致。

限值类型 适用数据类型 关键字段 典型比较方式 典型场景
Numeric Limit 数值 Low、High、Comp、Units GELE、GTLT、GE、LE 电压、电流、频率、时间
String Limit 字符串 Expected、Comp Equal、Contains、StartsWith 版本号、序列号、状态字
Pass/Fail Limit 布尔/状态 Expected 等于期望状态 自检项、继电器状态、操作成功标志

六、在 Step 中定义限值的实际操作方式

在 TestStand 序列编辑器中定义限值,通常有三种入口:

  1. 属性面板直接编辑:选中 Step,在 Step Settings 的 Limits 选项卡中填写 Low/High/Comp/Units 或 Expected。这是最直观的方式,适合单个 Step 调整。
  2. 通过 Step 类型默认值:在 Step Type 的属性中预设默认限值,新建同类 Step 时自动继承。适合统一规范,例如所有电压测量 Step 默认 Comp=GELE。
  3. 通过 API 或序列文件批量设置:在 Sequence 的 Step 集合上遍历,用 Step.Limits.Low 等属性赋值。适合批量导入限值表或做配置迁移。

下面是一段教学示例代码,演示如何用 TestStand API 为一个 Numeric Limit Test Step 设置限值:

// 假设 seqFile 已加载,step 为 Numeric Limit Test 类型
Step step = seqFile.GetSequenceByName("Main").GetStepByName("Measure_5V");
step.Limits.Low  = 4.75;
step.Limits.High = 5.25;
step.Limits.Units = "V";
step.Limits.Comp = "GELE";
// 若为 String Limit Test
// step.Limits.Expected = "OK";
// step.Limits.Comp = "StartsWith";

执行后,Step 的判定结果会写入报告,包含测量值、上下限、单位和 Pass/Fail 结论。若需要确认配置是否生效,可在序列执行后查看报告中的 Limits 字段,或在调试模式下检查 Step.Limits 的实际值。

常见误区:把 Numeric Limit 的 Low/High 直接套用到 String Limit 上,或忘记设置 Comp 而使用默认值。默认 Comp 可能因 Step 类型或版本不同而不同,配置后应显式确认,避免“看起来配了限值但判定不符合预期”。

七、限值配置与配置管理的衔接

限值一旦进入序列文件,就成为配置的一部分。不同产品型号、不同测试工位、不同版本之间,限值往往需要差异化。因此在实际项目中,建议把限值表独立维护,再通过导入或 API 写入 Step,而不是在每个 Step 里手工敲。这样做的直接好处是:限值变更可追溯、可比对、可回滚,也便于在配置管理中把“限值版本”和“序列版本”分开管理。

本节的核心可以归纳为一句话:先看测量结果的数据类型,再选限值类型;选好类型后,重点确认比较方式 Comp 和关键字段,最后通过属性面板、Step 类型默认值或 API 把限值落到 Step 上。掌握这三类限值的定义方式,后续做限值表管理、版本比对和批量修改时就有了稳定的操作基础。