随机约束测试(CRT)
当定向测试无法满足要求时,受约束的随机化测试(CRT)随之出现。定向测试集能找到你认为可能存在的bug,CRT方法通过随机激励,可以找到你都无法确定的Bug。
组成:随机数据包和种子
随机变量
通常和面向对象编程(OOP)同时使用。随机变量的声明使用关键字rand,randc
rand:随机值出现在指定范围的概率相同
randc:随机值周期出现在指定范围内,在上一次周期结束前不会出现重复的值。
约束constraint
在定义完随机变量后,可以对该随即变量的值进行约束。其声明方式为:
constraint name{
rand_value_expression;
}
采用约束块{}的形式,每个约束块都有其名字,块内为随机变量的约束表达式称为约束语句。
随机化函数randomize()
randomize()函数会对随机变量进行随机化操作,并返回。随机化成功则返回值为1,否则为0.
- 该函数无需自定义
- 如果括号内指定了随机变量,那么只会对该变量随机化
- 其他随机函数:$urandom(),返回32位无符号随机数;$urandom_range(max,min),指定随机范围
- 其他随机数函数详见绿皮书P153,不做过多介绍

随机约束测试(CRT)是一种在定向测试不足时使用的测试方法,它通过随机生成数据发现未知的Bug。CRT包括随机数据包和种子,常与OOP结合。约束用于限制随机变量的取值,randomize()函数执行随机化操作。约束语句包括表达式、权重分布、范围操作符、条件约束、双向约束等,还有解决变量求解顺序的sovle...before声明。软约束和硬约束处理冲突,外部约束可复用。在使用时应注意数据类型和截断问题,以及随机化数组句柄的管理。

1万+

被折叠的 条评论
为什么被折叠?



