模糊测试
1.概念:在软件测试过程中,一个程序被随机产生的数据大量验证。
2.起源:事实上这不是一种新技术,它早在1989年就被威斯康星州的麦迪逊大学Barton Miller教授发明。
3.发展:由于目前人们聚焦于开发更加安全的软件,模糊测试才被更加广泛应用并成为公认的代码测试方法。
4.思想:自动产生和发送大量随机的或经过变异的输入值给软件,假如该程序在应对任一输入值时失效,开始出现冲突、锁住、消耗大量内存或者产生不可控制的程序错误,开发者就知道代码中某处出现了bug。因此这个缺陷可能在程序发布或者配置前被定位并予以矫正,从而使可能的程序漏洞不出现在程序最终发行版本中。
5.使用:比较有效的模糊测试,并不是用大量纯随机数据直接来测试,而是对已知有效数据、故意错误数据和随机数据的联合调试。使用已知有效数据的目的是跳过不感兴趣的代码片段,或者说是为了防止程序在抵达一个欠缺的代码块前出现拒绝信息。使用故意错误数据的目的是利用已知或我怀疑将成为代码中缺陷的情况。最后,使用随机数据的目的就是看看会发生什么。
-->>20091201追加:不直接完全使用随机数据,而是采用3种数据的联合来进行模糊测试,那就对测试者提出了更高的要求,特别是故意错误数据的设计,需要测试人员对程序代码较为熟悉,否则设计不出来。
6.扩展:在模糊化的过程中,测试方法会随着我们对可疑行为的进一步了解而得到完善。例如,我们的模糊处理程序中最初包含了随机数据。如果发现了错误,我们会发送故意错误数据以试图利用它。这种启发式方法是两个领域的最佳方案:人类直觉和计算机自动化。
7.优点:成本较低、效率较高,自动化,容易配置,是一种有效的软件测试方法
8.缺点:在测试覆盖率方面仍处于相对未知的领域
我的理解-->>不同于安全测试主要关注系统的安全漏洞和隐患,模糊测试主要关注代码的漏洞和薄弱环节。尽管两者有一定的交集,但是各自的侧重点还是不一样的。