Jun'uary

Fuzz Testing

Jan 发表于 2007-11-13 23:32:21

Fuzz Testing最早源于1990年的一篇论文,指的是用完全随机的输入数据来测试程序,所以也叫做Monkey Testing。

找到一些有趣的结论:

在Windows NT 4.0/5.0上

  • 当输入基于合法键盘和鼠标事件的完全随机数据时,21%的程序崩溃了
  • 另外还有24%的程序失去响应,在上面的测试中
  • 当输入的数据完全随机时(即包括键盘和鼠标不可能输入的数据),所有的程序都可耻的没有通过测试,要么崩溃,要么失去响应
  • 研究人员注意到,所有程序在同一平台上其他程序产生的数据前都非常脆弱(现在你可以理解上面那个测试的意义了),这似乎是由于Win32消息接口的一个瑕疵所致
  • 研究人员发现,大部分程序出现的问题都是由于同一个编程习惯引起,从不检查外部传来消息中包含的指针或者句柄的有效性

在UNIX平台上的测试进行于1995年

  • UNIX平台有很多,研究人员在各种商业版本比如AIX, SunOS上以及Linux上都进行了测试。商业版本上常用程序的平均失败率为23%(最烂的是NEXT49%,最好的Irix15%),Linux上为9%,换用GNU Utilities的话,低至6%。对于这个令人讶异的事实,研究人员有几种解释。。。自己去看 :)
  • 程序崩溃的原因基本上可以分为几类,因为源代码容易得到,所以结论就详细许多。 包括 1. 误用指针/数组 2. 误用输入函数比如gets() 3. 误用带符号字符类型 4. 不检查文件结束符EOF
  • 在对X Window的测试中,26%的程序在有效随机输入的测试下挂了,58%的程序在完全随机输入的测试下挂掉。容易看出,在有效随机输入的情况小UNIX与Windows程序的健壮程度不相伯仲,但是对付完全随机输入的时候似乎UNIX程序员更加聪明一点
  • 研究人员最后发现一个令人惊讶的事实,他们没有办法,用任何数据,导致运行在任何UNIX系统上的任何网络服务器程序(ftpd, telnetd, etc.)崩溃或者失去响应

我觉得这个测试是对UNIX以及开源智慧的最有力赞美 :)
关键词(Tag): testing fuzz

曾经的这一天...


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定

Jan'uary

人类一思考,老夫就发笑

搜索

日历