• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

模糊测试学习

发布: 2009-2-26 10:17 | 作者: 不详 | 来源: 测试时代采编 | 查看: 183次 | 进入软件测试论坛讨论

领测软件测试网
先看如下这段代码
 
 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. 不能通过已知序列来推算后面未知的序列。
    只有实际物理过程才是真正随机的。而一般来说,计算机是很确定的,它很难得到真正的随机数。所以计算机利用设计好的一套算法,再由用户提供一个种子值,得出被称为“伪随机数”的数字序列,这就是我们平时所使用的随机数。
 
    这种伪随机数字足以满足一般的应用,但它不适用于加密等领域,因为它具有弱点:
 
1. 伪随机数是周期性的,当它们足够多时,会重复数字序列。
2. 如果提供相同的算法和相同的种子值,将会得出完全一样的随机数序列。
3. 可以使用逆向工程,猜测算法与种子值,以便推算后面所有的随机数列。 
 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 学习

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网