PICT(Pairwise Independent Combinatorial Testing)的核心规则围绕组合测试的逻辑、参数定义、约束设定等维度展开,是微软推出的成对组合测试工具的核心准则,既遵循成对组合的通用原理,又有工具特有的语法和执行规则,具体可分为核心设计规则、模型文件编写规则、约束定义规则和执行参数规则四大类。
一、核心设计规则
PICT 的底层逻辑基于成对组合覆盖原则,也是其最核心的设计规则,具体包括:
- 两两组合覆盖优先
- 默认情况下,PICT 会确保任意两个参数的所有取值组合至少被覆盖一次。这是基于统计规律:73% 的软件缺陷由单因子(35%)或双因子(38%)交互导致,因此两两组合能以最少用例覆盖绝大多数缺陷场景。
- 支持高阶组合扩展
- 可通过参数指定3 阶及以上的组合覆盖(如三个参数的所有组合),但阶数越高,生成的用例数量会呈指数级增长,需在覆盖率和效率间平衡。
- 参数正交性假设
- 假设所有测试参数相互独立(正交),若参数间存在依赖关系,需通过约束规则手动定义,否则会生成无效用例。
二、模型文件编写规则
PICT 通过纯文本模型文件定义测试参数和取值,编写需遵循固定语法规则:
- 参数与取值的基本格式每行定义一个参数,格式为参数名: 取值1, 取值2, …(冒号、逗号为英文半角符号)。示例:车速: 0, 60, 120, 250(车载电子中车速传感器的测试参数)。
- 注释规则以#开头的行为注释,不会被 PICT 解析,用于标注参数含义或测试场景。示例:# 车载雷达距离测试参数。
- 子模型定义规则格式:{ 参数1, 参数2, … } @ N,表明指定参数组按 N 阶组合覆盖,其余参数仍按默认 2 阶处理。适用场景:车载电子测试中,可将{硬件平台, 操作系统, 通信协议}设为 3 阶组合,确保核心模块的高阶交互覆盖。
- 编码规则
- 模型文件需保存为UTF-8 或 ANSI 编码,否则会出现中文乱码或解析失败。
三、约束定义规则
当参数间存在依赖或互斥关系时,需通过逻辑约束语句过滤无效组合,规则如下:
- 约束语句格式以IF开头,支持=、<>、AND、OR等逻辑运算符,结尾需加;。基础格式:IF (参数名) = 取值 THEN (参数名) <> 取值;。
- 车载电子测试示例
- 若需求为「当车速 > 120km/h 时,自动刹车功能不可关闭」,约束语句可写为:
- plaintext
- IF (车速) > 120 THEN (自动刹车功能) <> 关闭;
- 约束优先级
- 约束语句需写在参数定义之后,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 需额外遵循:
- 功能安全等级匹配规则ASIL A/B 级场景:可使用默认 2 阶组合,平衡效率与覆盖。ASIL C/D 级场景:需提升至 3 阶及以上组合,或增加种子用例(/e:file参数)确保关键场景覆盖。
- 无效值处理规则
- 对传感器异常值(如车速负数、雷达距离乱码),需用~标记为负值,PICT 会自动将其纳入无效等价类测试。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...





