FUZZ测试方法介绍
2013-01-24 14:32
375 查看
FUZZ测试方法介绍 - tester的日志 - 网易博客
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在各个平台上的一个测试情况
![](http://img.ph.126.net/lZZYKTV5T-BF4qYnmugBgA==/3261732030125023615.jpg)
Linux平台上的报告
![](http://img.ph.126.net/3hevPHrCoNfgEbAQjrXETg==/3261732030125023616.jpg)
Mac上的一些应用测试情况
![](http://img.ph.126.net/C-4xhgr66p5Kbevx0q8H6w==/3261732030125023617.jpg)
数据说明一切,这些数据说明了fuzz在测试中的价值。
http://www.edge-security.com/wfuzz.php
加载函数库后,直接使用wfuzz命令即可。
程序运行,依赖pycurl与libcurl,如果提示有问题,请安装这两个库解决。
![](http://img.ph.126.net/3gZNgKaF3Nrouy6U18YZrg==/3261732030125023618.jpg)
Fuzz isearch的请求
![](http://img.ph.126.net/9VTRBtOFsxRkaH5xbLNS6g==/3261732030125023619.jpg)
Fuzz isearch的关键词查询。可以支持词典穷举。可以特殊字符写成文件的形式可以加进来
![](http://img.ph.126.net/_UMJ9vn1JP9_kxa0nPVA4Q==/3261732030125023620.jpg)
![](http://img.ph.126.net/lWoHSCaT0R3yS0-Dz3QoBw==/3261732030125023621.jpg)
只不过他的测试数据,支持随机与特定的规则。Fuzz的判断依据,更简单而已。只是简单的异常情况。
这点上,我们可以进行充分的扩充,比如支持doc格式的判断,提取里面的某些字段判断等。
我们也可以在此理论基础上去合理的使用我们的框架。比如UI自动化一样,如果pwatir写出来的代码,支持query从文件中读取,那么就可以随意的构造Query了。
如果gtest写出的单元测试框架,可以支持从文件,或者数据库读取TC数据。那么fuzz也很容易实现。
同样日志对比脚本,也可以实现fuzz。
此次介绍的是fuzz http协议。当然fuzz不仅支持这些,还支持其他的协议,以及执行方式。
比如fuzz c++代码来生成自动化的单元测试。
另外,也并不是任何地方都适合fuzz测试,需要根据场景选择。比如算法组的某些算法,为了提升效率,是会牺牲一些边缘的异常处理的。
如果是对外的Query或者接口,是有必要做的。比如isearch的查询,seachweb,p4p的接口。
当然也可以使用上面介绍的wfuzz,采用python编写的。
http://rfuzz.rubyforge.org/index.html
![](http://img.ph.126.net/60MQDEfgueo_5aVeo_Pzeg==/3261732030125023622.jpg)
网上也有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
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在各个平台上的一个测试情况
![](http://img.ph.126.net/lZZYKTV5T-BF4qYnmugBgA==/3261732030125023615.jpg)
Linux平台上的报告
![](http://img.ph.126.net/3hevPHrCoNfgEbAQjrXETg==/3261732030125023616.jpg)
Mac上的一些应用测试情况
![](http://img.ph.126.net/C-4xhgr66p5Kbevx0q8H6w==/3261732030125023617.jpg)
数据说明一切,这些数据说明了fuzz在测试中的价值。
FUZZ应用
我在函数库中增加了一个fuzz工具,是用来fuzz http接口的。采用的是比较好用wfuzzhttp://www.edge-security.com/wfuzz.php
加载函数库后,直接使用wfuzz命令即可。
程序运行,依赖pycurl与libcurl,如果提示有问题,请安装这两个库解决。
![](http://img.ph.126.net/3gZNgKaF3Nrouy6U18YZrg==/3261732030125023618.jpg)
Fuzz isearch的请求
![](http://img.ph.126.net/9VTRBtOFsxRkaH5xbLNS6g==/3261732030125023619.jpg)
Fuzz isearch的关键词查询。可以支持词典穷举。可以特殊字符写成文件的形式可以加进来
![](http://img.ph.126.net/_UMJ9vn1JP9_kxa0nPVA4Q==/3261732030125023620.jpg)
Fuzz的自定义改进
可以增加对结果的解析![](http://img.ph.126.net/lWoHSCaT0R3yS0-Dz3QoBw==/3261732030125023621.jpg)
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
![](http://img.ph.126.net/60MQDEfgueo_5aVeo_Pzeg==/3261732030125023622.jpg)
网上也有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
相关文章推荐
- PHP编程语言介绍及安装测试方法
- 转://linux下的CPU、内存、IO、网络的压力测试工具与方法介绍
- 测试驱动开发方法介绍及CPPUnit使用指南
- 介绍:如何用路径分析方法编写测试用例
- 第4代白盒测试方法介绍--理论篇
- 第4代白盒测试方法介绍--VcTester实践篇
- PCB电性测试方法介绍
- 介绍一下新版CakePHP的Model测试方法
- RHEL4- DNS服务(七)简单DNS服务测试方法介绍
- 第4代白盒测试方法介绍--理论篇
- tensorflow的安装与测试(ubuntu下两种方法介绍)
- 第4代白盒测试方法介绍--理论篇
- 关于 Android 下的自动化测试方法介绍
- 软件测试介绍,测试流程,测试方法,测试工具、设计测试用例
- Windows驱动 HCK测试方法及数字签名使用方法介绍
- 可用性及测试方法小介绍
- 利用SoapUI 测试web service的方法介绍
- 关于 Android 下的自动化测试方法介绍
- 软件测试基本方法介绍
- Android-手机QQ浏览器耗电测试工具及方法介绍