组合测试中的PICT规则

内容分享1小时前发布 DunLing
0 0 0

PICT(Pairwise Independent Combinatorial Testing)的核心规则围绕组合测试的逻辑、参数定义、约束设定等维度展开,是微软推出的成对组合测试工具的核心准则,既遵循成对组合的通用原理,又有工具特有的语法和执行规则,具体可分为核心设计规则模型文件编写规则约束定义规则执行参数规则四大类。

一、核心设计规则

PICT 的底层逻辑基于成对组合覆盖原则,也是其最核心的设计规则,具体包括:

  1. 两两组合覆盖优先
  2. 默认情况下,PICT 会确保任意两个参数的所有取值组合至少被覆盖一次。这是基于统计规律:73% 的软件缺陷由单因子(35%)或双因子(38%)交互导致,因此两两组合能以最少用例覆盖绝大多数缺陷场景。
  3. 支持高阶组合扩展
  4. 可通过参数指定3 阶及以上的组合覆盖(如三个参数的所有组合),但阶数越高,生成的用例数量会呈指数级增长,需在覆盖率和效率间平衡。
  5. 参数正交性假设
  6. 假设所有测试参数相互独立(正交),若参数间存在依赖关系,需通过约束规则手动定义,否则会生成无效用例。

二、模型文件编写规则

PICT 通过纯文本模型文件定义测试参数和取值,编写需遵循固定语法规则:

  1. 参数与取值的基本格式每行定义一个参数,格式为参数名: 取值1, 取值2, …(冒号、逗号为英文半角符号)。示例:车速: 0, 60, 120, 250(车载电子中车速传感器的测试参数)。
  2. 注释规则以#开头的行为注释,不会被 PICT 解析,用于标注参数含义或测试场景。示例:# 车载雷达距离测试参数。
  3. 子模型定义规则格式:{ 参数1, 参数2, … } @ N,表明指定参数组按 N 阶组合覆盖,其余参数仍按默认 2 阶处理。适用场景:车载电子测试中,可将{硬件平台, 操作系统, 通信协议}设为 3 阶组合,确保核心模块的高阶交互覆盖。
  4. 编码规则
  5. 模型文件需保存为UTF-8 或 ANSI 编码,否则会出现中文乱码或解析失败。

三、约束定义规则

当参数间存在依赖或互斥关系时,需通过逻辑约束语句过滤无效组合,规则如下:

  1. 约束语句格式以IF开头,支持=、<>、AND、OR等逻辑运算符,结尾需加;。基础格式:IF (参数名) = 取值 THEN (参数名) <> 取值;。
  2. 车载电子测试示例
  3. 若需求为「当车速 > 120km/h 时,自动刹车功能不可关闭」,约束语句可写为:
  4. plaintext
  5. IF (车速) > 120 THEN (自动刹车功能) <> 关闭;
  6. 约束优先级
  7. 约束语句需写在参数定义之后,PICT 会先解析参数,再根据约束过滤无效组合,确保生成的用例均符合业务逻辑。

四、执行参数规则

PICT 通过命令行运行,支持多个可选参数调整执行逻辑,核心规则如下:

参数

含义

示例

/o:N

指定组合阶数(默认 2)

pict model.txt /o:3(3 阶组合)

/d:C

自定义取值分隔符(默认,)

pict model.txt /d:;(用;分隔取值)

/n:C

定义负值前缀(默认~)

pict model.txt /n:!(用!标记非法值)

/c

区分参数名大小写

pict model.txt /c(识别Speed和speed为不同参数)

/s

显示模型统计信息

pict model.txt /s(输出参数数量、组合数等)

五、车载电子测试中的特殊规则

在 ISO 26262 功能安全测试中,使用 PICT 需额外遵循:

  1. 功能安全等级匹配规则ASIL A/B 级场景:可使用默认 2 阶组合,平衡效率与覆盖。ASIL C/D 级场景:需提升至 3 阶及以上组合,或增加种子用例(/e:file参数)确保关键场景覆盖。
  2. 无效值处理规则
  3. 对传感器异常值(如车速负数、雷达距离乱码),需用~标记为负值,PICT 会自动将其纳入无效等价类测试。
© 版权声明

相关文章

暂无评论

none
暂无评论...