模糊测试的基本思想

发表于:2007-9-13 14:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:goldcattle    来源:goldcattle的专栏

分享:
  先看如下这段代码

  1int func1(int a,char b, char c)
  2
  3{
  4
  5         if(a>0&&a<100&& b==0 && c==255)
  6
  7         {
  8
  9                   printf("trig a bug");
  10
  11                   return 0;
  12         }
  13
  14         return 1;
  15}
  16


  这段代码的意思就是在参数

  如何通过测试找到这些bug呢?这是一个问题,如何在一堆API的参数中找到这样的bug,这是一个大问题。嗯我们现在就讨论这个问题。

  从我们便于理解的角度上看这个问题。其实我们希望我们的测试用例能够在一定概率的情况下在整个参数空间中触及到这个bug的触发参数区域。

  最笨的办法就是枚举测试空间,这个实际上并不是一个可行的方法。参数空间会随着参数的个数增加产生参数空间爆炸。

  那到底该怎么办呢?在有限的资源下最大可能的找到这样的有问题的参数样本,可行的办法就是一堆随机的参数来然后通过合适的组合来尽可能的覆盖整个参数空间。现在问题就是如何产生合适的随机数了。下面我们就讨论一下如何或者比较好的随机数和如何比较好的组合在一起。

  随机数:

  随机数在软件开发中应用很广泛,在通信,加密,游戏中都需要随机数发生器。那什么是随机数呢?

  随机数至少应该具备两个条件:

  1. 数字序列在统计上是随机的。

  2. 不能通过已知序列来推算后面未知的序列。

  只有实际物理过程才是真正随机的。而一般来说,计算机是很确定的,它很难得到真正的随机数。所以计算机利用设计好的一套算法,再由用户提供一个种子值,得出被称为“伪随机数”的数字序列,这就是我们平时所使用的随机数。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号