SV绿皮书-第六章-随机化

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

随机约束测试(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,不做过多介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值