我最近一直在考虑模糊测试和猴子测试之间的区别.根据wiki,似乎猴子测试"仅"是一个单元测试,而模糊测试则不是.Android有UI/Application Exerciser猴子,它似乎不像单元测试.
这些测试方法有什么区别吗?
在这些日子里,我对软件安全感兴趣.正如我正在阅读论文时,我发现有许多攻击,研究人员正试图为软件发明新方法以获得更安全的系统.
这个问题可以是一般性的,包括所有类型的攻击.在SO中有许多有经验的程序员,我只是想学习用什么来检查你的代码来对付这些攻击?你有没有使用过的工具或者你不关心?
例如,我听说过静态/动态代码分析和模糊测试.
谢谢
我正在维护一个带有Windows.Forms接口的~300K LOC C#传统胖客户端应用程序.该应用程序充满了小错误和怪癖.例如,我最近发现了一个错误,如果用户通过DataViewGrid上的单元格编辑和标签(而非点击),并且选择了某个单元格,则应用程序会获得"未将对象引用设置为对象实例"异常.我发现(或得到一个错误报告)大约每周或每两周这样的新事物.我已经受够了,并且正在考虑对应用程序进行某种模糊测试,试图找出未发现的问题.
如果我进行自己的模糊测试,我认为我至少需要能够独立生成运行我的应用程序(主窗口,FormX,FormY,FormZ,...)的测试工具,并尝试注入事件进入他们.
我试图寻找适合此的工具,但到目前为止还没有为Win Forms提供任何东西.(然而,似乎并不缺少针对Web应用程序的模糊测试工具).
任何有用的想法?
在处理大型软件项目时,我经常使用模糊测试作为测试用例的一部分,以帮助排除可能仅在输入达到特定大小或形状时出现的错误.我最常做的就是使用与我碰巧使用的编程语言捆绑在一起的标准随机数设施.
最近我开始想知道,忽略一般模糊测试的优点和缺点,在进行模糊测试时是否使用非加密安全伪随机数生成器是个好主意.弱随机数生成器通常表现出将它们与真随机序列区分开的模式,即使这些模式不是很明显.似乎使用弱PRNG的模糊测试可能总是无法触发某些潜在的错误,这些错误仅在某些情况下出现,因为伪随机数可能以永远不会触发这些情况的方式相互关联.
使用弱PRNG进行模糊测试本质上是不明智的吗?如果这样做在理论上是不合理的,那么它在实践中是否仍然合理?
我正在对具有嵌入式TCL解释器的系统进行安全测试.系统从Internet接收输入(HTTP),解析它并传递给可自定义的TCL脚本.在模糊测试(在HTTP头中发送二进制垃圾)期间,我注意到日志中存在以下错误:
TCL错误:在执行"foreach header [XXXXX] {}"时,在引号中使用"{} x"而不是空格列出元素
要么
TCL错误:执行"foreach header [XXXXX] {}"时列表中无法匹配的打开引号
这里XXXXX是一个返回HTTP标头数组的命令,由系统解析.很抱歉混淆了真正的命令,我希望你明白我不想在供应商被告知这个问题之前公开过多的细节(如果结果是一个问题).
产生错误的TCL代码非常简单:
foreach标题[XXXXX] {}
据我所知,HTTP解析是在TCL之外完成的,解析后的值可以通过自定义命令(可能实现为TCL扩展)访问TCL.
所以我的问题是:
这些错误是系统安全问题的迹象,例如用户输入验证不足吗?
如果是,可以通过发送系统特制请求(一种代码注入攻击)来利用这种情况来执行任意TCL语句吗?
有没有"安全TCL编码实践"文件?我找不到任何东西.
我想知道随机测试和模糊测试之间的关系是什么。我知道随机测试已经存在了很长时间,但我看不出它们之间有任何区别。它们似乎都利用随机输入来查看程序是否进入意外状态(即崩溃)。模糊测试自动化的主要区别是什么?
Fuzz测试工具生成格式错误的协议包.他们是否使用自己的TCP/IP堆栈来生成这些格式错误的数据包?操作系统的TCP/IP堆栈在Fuzz测试中是否起任何作用?我正在研究在Windows 7操作系统上运行的MPLS Fuzz测试工具.该工具正在Linux机器上测试MPLS堆栈.我的测试工具是否使用Windows堆栈?有人告诉我,windows不支持MPLS,但测试工具运行得很好.
fuzz-testing ×7
testing ×6
.net ×1
difference ×1
fuzzing ×1
random ×1
relation ×1
security ×1
tcl ×1
validation ×1
winforms ×1