12、操作数与操作符不符
12.1 缺陷产生原因
几乎每个运算符都有它无效的操作数,对于具体的操作符,开发人员在使用它们时,必须编写错误检查代码。例如:除以零的问题。
12.2 如何发现这类问题
找到程序中包含的数据或输入(即操作数)的计算(即操作符)、数学表达式(即操作符和操作数的组合)及对图形的操作。另外,对多个操作数进行组合也更容易发生错误。例如,字符和数字都可以使用“+”操作符。对字符通过“+”把它们连成一串;对数字通过“+”来进行加法运算。如果系统尝试把字符和数字相加,即进行相互矛盾的操作,就会引起软件失效。
12.3 测试方法小结
◆ 应用场合:需要进行数值计算的程序或图形操作的程序。
◆ 测试方法:对于数值计算考虑操作数和操作符之间的限定关系,对于图形计算还要考虑各种输入数据之间的组合关系。
◆ 测试知识储备:全面掌握被测软件中操作符对操作数的要求。掌握不同的操作符和操作数具有的不同的有效和无效的取值范围。
---------------------------------------------------------------------------------------------------
13、递归调用自身
13.1 缺陷产生原因
函数有时会递归调用自身,如果不限制执行次数,递归就会出现问题,它不断地调用自身,很快地占用机器资源,最终产生溢出,使程序崩溃或挂起。产生这类问题的主要原因是开发人员没有编码来保证循环和递归调用的终止,通常是在循环的开始或结束时缺少检查条件。
13.2 如何发现问题
在软件中寻找可以使用递归调用的功能。这时可以制作一个列表,标明软件中可能嵌入递归的功能的列表,然后自己引用自己来检查程序是否能正确处理。
13.3 测试方法小结
◆ 应用场合:需要和其它对象进行交互的地方。
◆ 测试方法:考虑对象的自我交互或复制。
◆ 测试知识储备:全面掌握被测软件的需求。
14、计算结果溢出
14.1 缺陷产生原因
当所有的输入和数据都有效时,计算的最终结果也可以是无效的。所有变量都有值域范围,有时开发人员在执行计算时会忘记检查这些上限。
14.2 如何发现这类问题
一次又一次地执行计算或使用很大或很小的输入和数据进行计算,重点测试数据类型的初始值或边界值附近的值。
14.3 测试方法小结
◆ 应用场合:应用程序执行能够导出待产生结果并进行内部存储的计算。
◆ 测试方法:强制数据产生上溢或下溢。
◆ 测试知识储备:全面掌握被测软件的需求,了解计算变量的上下限。