应力测试-vmware虚拟机中centos安装 centos安装qt的教程图解

时间:2024-06-29 06:30:03
【文件属性】:

文件名称:应力测试-vmware虚拟机中centos安装 centos安装qt的教程图解

文件大小:8.63MB

文件格式:PDF

更新时间:2024-06-29 06:30:03

程序设计实践

6.5 应力测试 采用大量由机器生成的输入是另一种有效的测试技术。机器生成的输入对程序的压力与 人写的输入有所不同。量大本身也能够破坏某些东西,因为大量的输入可能导致输入缓冲区、 数组或者计数器的溢出。这对于发现某些问题,例如程序对在固定大小存储区上的操作缺乏 检查等,是非常有效的。人本身常常有回避“不可能”实例的倾向,这方面的例子如空的输 入,超量级、超范围的输入、不大可能建立的特别长的名字或者特别大的数据值等等。与人 相反,计算机会严格按照它的程序做生成,不会回避任何东西。 为说明这个问题,下面是Microsoft Visual C++ Ve r s i o n 5 . 0编译程序产生的一个输出行,是 在编译马尔可夫程序的 C++ STL实现时产生的。我们已经对它重新编辑了一下,以便使它能 放在这里。 这个编译系统警告我们,它生成了一个长度为 1 5 9 4个字符的变量名字 (非常可观 ),但是它只留 下2 5 5个字符用在输出排错信息方面。并不是所有程序都能够保护自己,能对付这种罕见长度 的字符串。 随机的输入 (未必都是合法的 )是另一种可能破坏程序的攻击方法。这也是“人们不会做这 种事”的推理的一个逻辑延伸。例如,人们对某些商用编译程序用一些随机生成的合语法的 程序做测试,这里采用的技巧是根据问题的规范—C语言标准—驱动一个程序,产生合法 的但又是希奇古怪的测试数据。 通过随机输入测试,考查的主要是程序的内部检查和防御机制,因为在这种情况下一般 无法验证程序产生的输出是否正确。这种测试的目标主要是设法引起程序垮台,或者让它出 现“不可能发生的情况”,而不是想发现直接的错误。这也是一种检查程序里错误检查代码能 否工作的好方式。如果用的都是有意思的输入,大多数错误根本就不会发生,结果处理这些 错误的代码无法得到执行,这就可能使程序错误隐藏在那些角落里。用随机输入测试有时也 可能得不到什么回报:例如它可能发现了某些问题,可是这些问题在现实生活中出现的可能 性微乎其微,以至都没有必要去考虑它们。 有些测试是针对明显的恶意输入进行的。安全性攻击经常使用极大的或者不合法的输入, 设法引起对已有数据的覆盖。检查这方面的弱点是非常明智的。有些标准库函数在这类攻击下 很容易受到伤害。例如,标准库函数g e t s没有提供限制输入行大小的方法,因此绝不要使用它, 任何时候都改用f g e t s(buf, sizeof(buf), stdin)。不加限制的s c a n f(“% s”, buf) 第 6章 测 试计计123 下载 “删去1 4 2 0个字符”


网友评论