您的位置:首页 > 其它

FUZZ测试方法介绍

2013-01-24 14:32 375 查看
FUZZ测试方法介绍 - tester的日志 - 网易博客

FUZZ测试方法介绍

2011-07-18 14:43:52| 分类: 测试思想 | 标签: |字号 大中小 订阅

Fuzz这个名词来自于Professor Barton Miller。在1989年一个风雨交加的夜晚,他登陆一台自己的主机,不知道怎么回事,信号通过猫传到主机上,雷电一闪,把里面的高位变低位,低位至高位了,结果到了主机以后改变了。他突发奇想,把这种方式作为一种测试的方式来做。1、到底什么是Fuzz Test?

Generally speaking fuzz is a brute force method which used to break software,就是用大量的测试用例一个一个试,尽可能多的找出有可能出问题的地方。

2、Fuzz怎么工作?

现在有无数有名的Fuzz工具,有很多人很多还在写,一般包括四个部分。

(1)Generate lots of malformed data as test cases,要生成大量的测试用例。这个测试用力是malformed的,一个软件首先要找到输入点,然后把数据丢进去,这个数据有可能是一个文件,有可能是一个数据包,有可能是测试表里面的一个项,有可能是临时文件里面的一个东西,总之是一种数据,要定义malformed这种非正常的数据。

(2)Drop the test cases into product,把它丢进去,看这个产品怎么反应。

(3)Monitor and log any crash/exception triggered by malicious input.

(4)Review the test log, investigated deeply.

3、Fuzz在各个平台上的一个测试情况



Linux平台上的报告




Mac上的一些应用测试情况




数据说明一切,这些数据说明了fuzz在测试中的价值。

FUZZ应用

我在函数库中增加了一个fuzz工具,是用来fuzz http接口的。采用的是比较好用wfuzz

http://www.edge-security.com/wfuzz.php

加载函数库后,直接使用wfuzz命令即可。

程序运行,依赖pycurl与libcurl,如果提示有问题,请安装这两个库解决。





Fuzz isearch的请求




Fuzz isearch的关键词查询。可以支持词典穷举。可以特殊字符写成文件的形式可以加进来





Fuzz的自定义改进

可以增加对结果的解析





Fuzz思想的延伸

Fuzz其实就是一个缩微版的自动化测试框架。

只不过他的测试数据,支持随机与特定的规则。Fuzz的判断依据,更简单而已。只是简单的异常情况。

这点上,我们可以进行充分的扩充,比如支持doc格式的判断,提取里面的某些字段判断等。

我们也可以在此理论基础上去合理的使用我们的框架。比如UI自动化一样,如果pwatir写出来的代码,支持query从文件中读取,那么就可以随意的构造Query了。

如果gtest写出的单元测试框架,可以支持从文件,或者数据库读取TC数据。那么fuzz也很容易实现。

同样日志对比脚本,也可以实现fuzz。

此次介绍的是fuzz http协议。当然fuzz不仅支持这些,还支持其他的协议,以及执行方式。

比如fuzz c++代码来生成自动化的单元测试。

另外,也并不是任何地方都适合fuzz测试,需要根据场景选择。比如算法组的某些算法,为了提升效率,是会牺牲一些边缘的异常处理的。

如果是对外的Query或者接口,是有必要做的。比如isearch的查询,seachweb,p4p的接口。

其他fuzz工具

推荐一个可以方便hack的工具,ruby编写,可以很容易开发自定义的fuzz。非常好用。

当然也可以使用上面介绍的wfuzz,采用python编写的。

http://rfuzz.rubyforge.org/index.html





网上也有N多的fuzz工具集合与说明,大家可以自己Google

其他文章

http://www.aqualab.cs.northwestern.edu/HotWeb08/papers/Hammersland-FTW.pdf

http://www.edge-security.com/wfuzz.php

http://huaidan.org/archives/3261.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: