Jun'uary
Jan'uary » 日志 » Fuzz Testing
Fuzz Testing
Jan 发表于 2007-11-13 23:32:21
Fuzz Testing最早源于1990年的一篇论文,指的是用完全随机的输入数据来测试程序,所以也叫做Monkey Testing。
找到一些有趣的结论:
在Windows NT 4.0/5.0上
在UNIX平台上的测试进行于1995年
我觉得这个测试是对UNIX以及开源智慧的最有力赞美 :)
找到一些有趣的结论:
在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以及开源智慧的最有力赞美 :)
曾经的这一天...
- » 2005年: Viper新款
相关日志:
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
