强制错误信息出现是使错误代码执行的最好方法。软件应该正确地响应错误的输入或者首先应该成功地防止输入进入到软件中。有把握了解的的唯一办法是用一批错误的输入测试应用程序。或许最重要的是了解应用程序如何响应不正确的输入。我设法验证以下三种不同的错误处理器的类型:
输入过滤器(Input filters):能够用于预防错误的输入进入所测试的软件(software under test)。有效的过滤错误的输入,例如,一个图形用户界面,只允许合法的输入通过界面
输入校验(Input checking): 可以执行以确保软件不会执行使用错误的输入。最简单的例子是每次输入一个到系统中,开发人员插入一条IF语句以确保数据在处理之前输入是合法的。换句话说,如果输入是合法的,那么就除了它,否则显示一个错误信息。在这个优先的攻击时,我们的目标是确保我们看见了所有这样的错误信息。
异常处理器(Exception handlers): 是一种最后才采用的方法,并且常用于在系统由于处理了错误输入而导致的失败之后清理错误。换句话说,错误的输入允许进入稀土女冠,被处理后,系统出现了错误。异常处理器是一种常见的程序,在软件失败时被调用。它通常包括重新设置内部变量,关闭文件并且恢复软件和用户交互能力的代码。一般来说,也会显示一些错误信息。
测试人员必须考虑所测试软件可以接受的输入并且集中在不正确数值上。在这里的方法是输入太打,太小,太长,太短的数值,这些数值是超出了可接受的范围或是错误的数据类型的数值。这种方法可以发现的主要的缺陷是遗漏了错误的情况-开发人员不知道哪些输入的数据是错误的或被忽略的个别情况。遗漏的情况通常导致软件中止或崩溃。测试人员也应该查看错误信息放错位置的情况。有时开发人员正确地获得了错误信息,但是却把它安排给了错误的输入数值。因此,对于那个提交的输入数值而言,这个错误信息就好像是胡说八道。
最后,纯粹恶作剧的数据是不能提供任何信息的错误消息。尽管这样的信息不会引起对用户直接的伤害,但是他们是草率的并且在用户的头脑里投下了对软件制造商的诚信的怀疑。“Error 5—Unknown Data” 对于一些开发人员来说可能看上去是一个好的主意,但是它将在用户的头脑里产生挫败,用户不知道他们什么地方做错了。不管测试人员正在测试一个GUI面板中的输入字段还是测试一个API调用中的参数,测试人员必须在执行这个攻击时思考输入的属性。如下是一些常见的应该思考的属性:
输入类型(Input type): 输入无效类型通常将产生一个错误信息。例如,如果“问题”的输入类型是整数,那些尝试输入一个真实的数字或一个字符。
输入长度(Input length): 对于字符(字母和数字)类型的输入,输入少量的很多的字符将引起错误信息。
边界值(Boundary values):每一个数字数据类型有边界值,并且有时这些数值代表着特殊的情况。例如,整数0就是正数和负数的边界。