zoukankan      html  css  js  c++  java
  • FUZZ测试方法介绍

    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在各个平台上的一个测试情况 

    FUZZ测试方法介绍

    Linux平台上的报告

    FUZZ测试方法介绍

    Mac上的一些应用测试情况

    FUZZ测试方法介绍

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

    FUZZ应用

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

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

     

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

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

     

     

    FUZZ测试方法介绍

    Fuzz isearch的请求

    FUZZ测试方法介绍

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

    FUZZ测试方法介绍


    Fuzz的自定义改进

    可以增加对结果的解析

    FUZZ测试方法介绍

    Fuzz思想的延伸

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

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

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

     

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

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

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

     

     

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

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

     

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

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

     

    其他fuzz工具

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

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

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

    FUZZ测试方法介绍

    网上也有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

  • 相关阅读:
    JAVA设计模式之桥接模式
    Pycharm新建模板默认添加作者时间等信息
    Handler机制(2)转载
    内部类学习
    设计模式-1依赖倒置原则示例
    正则表达式
    Service原理及例子
    Serializable接口
    设计模式之静态工厂模式
    Handler机制post方法使用
  • 原文地址:https://www.cnblogs.com/lexus/p/2874920.html
Copyright © 2011-2022 走看看