软件功能性测试的21种故障模型(二)
3、输入特殊字符集
案例演示
环境:Win2000、IE5
3.1 缺陷产生原因
应用程序接受字符串输入,如果程序没有针对特殊输入进行特殊编程,那么就有可能导致程序
挂起,主要包括以下3种情况:
◆ 字符集包括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。应用程序有时只能处理普通字符,当输入特殊字符时就会出现错误。
◆ 实现应用程序的程序设计语言有特定的处理一些字符和字符串的方法。例如,C语言把\n、++和&这样的字符用于特殊目的。如果将这些字符串键入到对话框中,程序必须进行错误处理,否则容易产生错误。
◆ 应用程序有时也使用设置名称、系统对象和程序的保留字符串集合。只要在程序中使用了这些字符串,就可能导致失效。
3.2 如何发现这类问题
◆ 根据被测软件所处的操作系统、使用的程序设计语言、字符集等信息列出表格,通过测试小组的讨论,标明应用表格中的哪些字符和数据类型作为输入来测试。
◆ 根据经验,软件很少会因为这种操作而崩溃,通常它会挂起没有响应。
3.3 测试方法小结
◆ 应用场合:需要接受字符输入的地方。
◆ 测试方法:根据被测软件的具体情况输入非法字符。
◆ 测试知识储备:尽可能多地了多地了解字符集、程序设计语言和操作系统中的保留字符串及其特定含义,可以使我们更好地分辨这类缺陷。
4、输入使缓冲区溢出的数据
案例演示
环境:Win2000、Word2000
4.1 缺陷产生原因
开发人员没有考虑传送给内存缓冲区的字符串的大小。如果缓冲区只能保留固定长度的字符串,输入更长的字符串就会改写其他的内存存储单元,引起操作系统强制性地终止应用程序。
4.2 如何发现这类问题
当应用程序允许输入字母、数字时,通过GUI控件(如文本框),或者通过API调用的参数来进行这种测试。
◆ 首先弄清楚要测试的输入域的长度,输入最大字符串测试。
◆ 输入一个比最大字符串长的字符串,应用程序可能出现错误提示信息,提示不允许输入;或者输入了更长的字符串使应用程序崩溃。
4.3 测试方法小结
◆ 应用场合:需要接受字符输入的地方。
◆ 测试方法:根据被测软件的具体情况输入最大字符串或输入一个比最大字符串更长的字符串。
◆ 测试知识储备:尽可能多地和开发人员讨论,以了解和确定输入域的合理长度。
---------------------------------------------------------------------------------------------------
5、输入产生错误的合法数据组合
案例演示
在Word中插入表格,列容许的最大值为63,行容许的最大值为32767
输入:列=55,行=32005,结果?
5.1 缺陷产生原因
测试多个输入值的组合,每个输入值已被单独测试过,但是这些值的组合可能会互相影响而引起软件失效。
5.2 如何发现这类问题
首先要确定测试哪些输入组合,并弄清楚它们之间的“关系”。如果具备以下任一特性,就可以认为这些变量是有“关系”的。
◆ 描述的是有关单个内部数据结构的属性和内容。例如,输入面板需要用户输入列表的“行”和“列”,这时测试人员要输入单个内部数据结构“列表”的属性“行和列”。
◆ 一起用在了一个计算中,也就是将多个输入用做一个内部计算的操作数,因此这些输入变量具有了相互“关系”。
5.3 测试方法小结
◆ 应用场合:输入值之间存在依赖关系。
◆ 测试方法:输入可能是存在问题的组合值。
◆ 测试知识储备:尽可能多的内部数据结构的属性和内容,并与开发人员探讨,以确定输入的数据值。