看来我fuzzing
错了。
模糊测试是一种简单的技术,可以对您的代码质量产生深远的影响。在模糊测试中,我们将随机的坏数据注入到应用程序中,以查看发生了什么问题
因为Fuzzing != Testing
,我们不会构建完美的测试用例或测试所有可能的用例,而是随机生成错误数据并将其插入到应用程序中。
上述代码的典型模糊测试功能是:
void fuzzTesting ()
{
//create somedata
somedata data;
//generate a random vector
srand(time(NULL)); //seed = current_time
//bufferOverflow
int i= 200000
while(i>=0)
{
r = rand()
data.mychar = r;
data.myint = r;
data.myushort = r;
some_func(&data);
--i;
}
//Format String
int i= 200000
while(i>=0)
{
r = rand()
data.mychar = '%s' + r;
data.myint = '%s' + r;
data.myushort = '%s' + r;
some_func(&data);
--i;
}
//Integer overflow
int i= 200000
while(i>=0)
{
r = rand()
data.mychar = r + 0xffffffff;
data.myint = r + 0xffffffff;
data.myushort = r + 0xffffffff;
some_func(&data);
--i;
}
}
有关更多模糊测试向量和详细信息,请参阅此wikipage