检查清单(Checklist)可以帮测试人员节省时间,因为很多有效的方法并不需要每个测试人员重新发现,前人已经有了充分的总结,并做了大量的有效性验证,其次,检查清单可以帮助测试人员避免遗漏,人的记忆是有局限的,难免会有遗漏的地方,通过检查清单检查可以有效的防止遗漏。近,IBM工程师苏京刚总结了Web软件测试中数据输入的检查清单,对Web测试人员提供了很好的参考。

  苏京刚主要从表格输入、数据验证、数据一致性、日期输入、数字输入、数字字符输入等方面归纳了Web测试中需要检查的要点。以数字输入为例,这是常见的测试点,检查清单包括六项内容:

  1、确保小、大值正确处理——对于数字输入域,一般都有自己的大值和小值,这两个极值的处理需要特别验证。除了验证大小值之外,测试人员好一起验证比小值小的值和比大值大的值是否能被产品恰当处理。举例,在定义一个连接的过程中需要输入一个端口号,该端口号的小值为 1。而当用户输入端口号为 0 时,可以成功添加该连接。而当用户去验证该连接时,提示端口号 0 是非法的。这是产品的一个缺陷。正确的处理方式是,当用户视图添加端口号为 0 时,给出错误提示信息,告知用户该端口号是非法的。另外一个需要考察的地方,当输入超出大小值时,产品需要给出清晰明确的警告和提示,告知用户正确的范围是什么。

  2、确保数值输入框的第一个字符位置输入空格时报错——当数值输入框的第一个字符为空格时,该输入已经不再是一个数值,应当做非法输入处理。产品处理过程中,需要给出错误信息。

  3、确保输入值输入框的后一个字符位置输入空格时报错——当数值输入框的后一个字符为空格时,该输入已经不再是一个数值,应当做非法输入处理。产品处理过程中,需要给出错误信息。

  4、确保正号 (+) 和负号 (-) 被正确处理——每个涉及到数值输入的地方,都涉及到一个数值符号的问题。因为数值有正负之分,需要保证产品对正负数的处理都准确恰当。对于能够接受带正号数值的输入框,处理结果应该跟不含符号 ( 默认为正数 ) 的数值输入的结果相同,因为本质上两个数值是相等的 ( 对输入数值的再显示除外,因为单纯显示上,两者相差一个 + 号 )。

  5、避免除数为0——除数为 0 是所有的运算中需要避免的。在软件产品中,如果涉及到除法运算,需要特别注意避免除数为 0 的情况发生。其中包含各种情况下的除数为 0,包括除数为输入值 0,除数为某中间计算结果为 0 等。

  6、在所有的运算中加入0——因为0 所有的运算中具有重要的作用,也是一个非常特殊的数值。因此在测试过程中,在所有涉及到的运算中加入 0 值对测试产品具有很好的效果,能测试到较多的与 0 相关的情况。

  同样的,数据一致性测试的清单也和边界值有关:

  1、检查输入大字符长度时显示、工作是否正常——每个输入域都有自己的输入字符长度限制,当输入长度达到大长度时,需确保产品显示和工作都正常。通常情况下,属于大长度字符时,给页面的显示难度带来很大挑战,因为此时需要在有限的页面显示的内容多。

  2、验证数字输入域是否接受负值及接受负值是否合理——数字数与区域有些情形下是不应该接受负值输入的,此时如果处理不当,当有负值输入时,将会有不可预知的情况出现。如果允许接受负值,测试对负值的处理是否正确也是测试中重要的一个方面。

  3、确保数据保存之后所有的数值在数据库中都得到完整的保存——在产品页面上对数据进行保存之后,需要确保所有数值都完整的保存到了数据库中。从不同途径访问到相同的数据都是一致的、同步的。为了验证这一点,测试人员需要尝试在保存之后重新打开并查看显示,看是否跟保存之前的数据完全一致,同时努力从不同的路径访问和应用相同的输入, 验证是否能得到一致的结果。

  数据验证测试往往被人忽视,苏京刚总结了三条测试点:

  1、任何时候当输入非法数据时,系统都不能表现糟糕——尽管软件产品设计的目的不是仅为了接收非法数据输入,但是产品需要确保当得到非法数据时依然不会表现的很糟糕,而依然应该做出恰当的处理。非法数据的类型分为很多种,包括数据长度、数据的大小、数据中的非法字符、数据输入的顺序等方面。

  2、如果用户在产品使用过程中删除 cookie 会有什么后果?——Cookie 是产品为了识别用户身份、保存用户配置信息、进行会话跟踪等而保存在本地终端上的数据。产品设计需要保证在用户使用过程中,如果用户删除 cookie,产品依然处理得当,不会有太糟糕的、不可预知的行为出现。

  3、如果用户在使用产品后删除 cookie 会有什么后果?——如果用户在使用产品之后删除 cookie,当用户再次访问产品时,需要保证产品依然做出恰当的处理,不会有出乎意料的动作发生。

  关于Web软件测试中数据输入的检查清单的详细内容,读者可以查看原文,其他还包括了表格输入、日期输入、数字字符输入等其他方面的检查清单。这些清单为Web测试人员在设计测试用例时提供了很好的参考。