在开发人员完成他们的产品测试之后,我将会出于两个具有代表性的原因来审查他们的工作。第一,我想要在和客户交流时能够说出应用软件是什么样子和它如何工作。第二,我想要看一看有没有什么显而易见的错误可以在客户看到结果之前得到更正。

我知道有我在中间会让我的开发人员感觉受到挫折。这种挫折并不是因为我是一个瓶颈,而我通常试图在开发人员告诉我应用软件已经完成的当天之内开始我的测试工作。真正使他们感到受挫的是他们可以对应用软件进行测试并认为他们已经找到了所有的东西。然而,通常在我开始测试之后的30分钟之内,我会在一张纸上记录下来我有疑问或是看起来不正常的事情。

通常这种测试方式也会使我感到受挫。有时,我奇怪开发人员如何能够说应用软件已经完成,而他们所忽视的内容我在几分钟之内能够找到。然而,一般来说,出现的错误通常是由对测试理念的缺乏所导致。开发人员关注于提供正常工作的应用软件,而我倾向于从一个用户的角度看一看是否能打破它。我还会寻找其中的一些矛盾和直觉性的缺乏,这些反映出了使用者的经验。

提供正确的应用软件
测试工作具有一些不同的方面。一方面是去验证终的产品达到所认可的要求。测试工作要求测试人员确保所有所要求的功能和特性都已经给出并可用。然后,确保这些功能和特性以所期望的方式工作。这种测试方式并没有错,但是你还需要更进一步。

试着作为一个用户去打破应用软件
很多开发人员所欠缺的地方是,他们以他们所期望的用户的反应方式为基础进行测试工作。他们没有进行足够的思考,离开惯常的途径进行测试。例如,比方说你有一个Web应用软件,其中有大量的在线处理过程,如果第一个页面要求输入用户名和密码,那么我一开始什么值都不输入,然后看一看会发生什么。我能不能进入?有没有错误出现?有些时候是不是屏幕会静止不动?这时,应用软件应该将其视为一个非法的响应并返回恰当的错误信息。

用户会向所有可能位置输入任何值


当我进入应用软件界面时,我会输入各种各样奇怪的值。如果这里需要输入的是字母,那么我输入一个数字,然后我会输入类似于“(*&%$’的特殊字符。很多次,应用软件都会发生问题,真是让我感到惊异。我对所有的区域都做了相同的测试,如果一个区域包含一个drop-down列表,我会试着键入一个值。如果某些区域是事先制定的,我会改变他们。如果一些值是数据库的关键字而不能动,我会改变他们。我还试着通过在区域中加入页面所允许的足够多的数字或字符,让他们溢出。然后我会点击可选的按钮和链接看一看会发生什么。

同样的,我还试着搞乱所有的预制定区域。我总是告诉我的开发人员说,如果你不希望一个区域被改变,那么你不要允许用户将指针放在上面和键入。我向你保证,如果你将一个区域设置为开放的可以输入,那么一定会有某些人在某些时候,出于某种原因试图向其中键入数值。

用户为什么会向一个需要输入数字的区域键入特殊字符呢?问题在于他们或许不会有意去这样做,然而,键入错误去却随时都会发生。如果你向用户给出一个数字区域,那么随着时间的过去,错误的键入会导致在任何的区域之中输入任何的字符。我认为这样的问题应该现在找出来,而不是让一个Web应用软件在用户手中出问题。

用户会尝试逻辑流的所有组合
除了一些简单的编辑性错误之外,我还会尝试每一个逻辑流的组合。当我看到一个Web页面时,我会尝试每一个超链接看一看结果是什么。开发人员会看着我纳闷为什么用户会这样做。再说一次,问题是他们可能不是有意去这么做,然而,你应该设想每一个逻辑组合都可能会在某个时间被尝试。
看一看外观
我着眼的后一件事是整体的视觉和感觉。我试图确保屏幕有一个漂亮的外观,漂亮的字体,而且他们是协调一致的。例如,如果你在列表中一些项目的后放置一个句号,那么他们都应该带有句号,否则都没有,这取决于你的编辑上的习惯。同样,字体也应该保持一致,如果在一个区域的标题的字体是14,那么他们都应该是这个大小。这样做都是为了使应用软件看起来具有专业性。

做坏的准备
在我所管理的团体之中,开发人员做出了很好的工作,确保他们的应用软件以所指定的方式工作。但在很多情况下,他们没有从一个用户的角度做出足够的测试工作。他们应该关注于确保应用软件的坚固可靠。用户在百分之九十的时间之内,会像你所期望的那样对应用软件进行操作,然而,剩下的百分之十的时间里,他们会做一些奇怪的事情。当发生这样的事情时,你的应用软件需要对其妥当并成功地进行处理。你不希望一个很棒的应用软件在用户第一次输入12位数字的社会保障号码而不是9位数字时垮掉。你要确保进行了测试工作保证你的应用软件如宣传的那样进行工作。还有,尽可能地对意外因素的组合进行多种测试。你需要确保没有任何的错误数据或处理流程致使用户得到任何意料之外的系统信息。