您的位置:首页 > 其它

软件功能性测试的21种故障模型(8-14)

2011-03-21 10:44 232 查看
查看( 119 ) / 评论( 0 ) / 评分( 0 / 0 )

8 输出属性修改后的结果

8.1缺陷产生原因

输出常常具有可修改的属性,如颜色、形状、维数及大小等,用户可以修改这些属性。

在这种情况下,开发人员必须编码、设立初始或默认属性值,然后编码允许用户编辑

这些属性。当用户改变了这些属性后,内部的相应变量值也随着变化,再次进行处理时,

这些值没有被重新恢复为默认值,输出的属性就被强制改变了。

8.2如何发现这类问题

该测试方法可以使用在那些输出具有可编辑性、可修改性的功能中。测试人员首先要

仔细了解能够产生的输出,特别要注意具有可编辑属性的输出。测试人员的任务就是

强制每个输出产生,并编辑其属性,然后再次强制输出产生。

8.3测试方法小结

Ø 应用场合:输出的结果,可以由用户修改属性得出。

Ø 测试方法:强制每个输出产生,并编辑其属性,然后再次强制产生输出。

Ø 测试知识储备:全面理解需求规格说明书中的内容,了解能够产生的输出。

-----------------------------------------------------------------------------------------------------------------------------------------

9 屏幕刷新显示

9.1缺陷产生原因

通常GUI软件会产生刷新问题,因为GUI在对窗口进行覆盖、移动和调整大小时,必须

刷新屏幕才能使对象重新显示。但是如果经常刷新,容易减慢应用程序的运行速度;

如果不刷新,又会影响用户对程序的使用,使用户必须停止工作,去寻找刷新的方法

才可以继续工作。所以开发人员有时候不能很好地确定什么时候需要刷新,需要刷新

多大范围的区域,这就发生了令人烦恼的刷新问题。

9.2如何发现这类问题

测试刷新问题的方法是增加、删除称移动屏幕上的对象,这样会使某些对象重新显示。

如果不能正确、及时地进行重新显示,就产生了软件缺陷。我们可以通过以下几个方法

来检查刷新:

Ø 从起始位置移动对象。先移动一点,然后增加移动幅度;先移动一次或两次,

然后多次移动,确保覆盖了所有区域。

Ø 从覆盖对象的边界开始一点点覆盖,使其中一个对象遮住别一个对象。

Ø 使用不同类型的对象。如果应用程序支持多种类型的对象,如文本对象、图形

对象等,就把这些不同对象混在一起使用。

9.3测试方法小结

Ø 应用场合:一个对象包含在另一个对象中,拖动被包含对象时,可能出现刷新问题。

Ø 测试方法:增加、删除和移动屏幕上的对象。

Ø 测试知识储备:全面理解需求规格说明书中的内容,了解程序中对象之间的关系。

-----------------------------------------------------------------------------------------------------------------------------------------

10 数据结构溢出

10.1缺陷产生原因

所有数据结构的大小都有上限。一些数据结构会逐步增加长度以充满机器内存容量或

磁盘空间,而其它数据结构具有固定的上限。开发人员经常对有关数据结构的内容

进行编码,忘记结构本身的物理局限。

10.2如何发现这类问题

Ø 确定数据结构的界限,尝试将过多的值输入数据结构。应该特别注意界限为

数据类型的边界256、1024、32768等上溢的测试。

Ø 对于下溢的测试,可以尝试多删除一个数据,例如当结构为空时,尝试再删除,

或者添加一个数据,尝试删除两个数据时的情况。

10.3测试方法小结

Ø 应用场合:程序中存在数组。

Ø 测试方法:尝试将过多的值输入数据结构,测试上溢;对于下溢的测试,

可以尝试多删除一个数据。

Ø 测试知识准备:全面理解需求规格说明书中的内容,确定数据结构的界限。

-----------------------------------------------------------------------------------------------------------------------------------------

11 数据结构不符合约束

11.1缺陷产生原因

在编程过程中对内部数据结构都有所约束,包括大小、维数、类型、形状、屏幕

上的位置等。我们测试的重点就是用户能够设置的属性,这些属性使用了一组参数

来约束。在建立数据项和随后对数据项进行修改的任何时刻都要对数据属性的约束

进行检查。初始化代码中修改后的代码有错误,在修改错误的时候只修改了初始化

部分,而忽略了对其他部分的修改,使得其修改不完全,不彻底。

11.2如何发现这类问题

Ø 确认候选数据,并列出其可修改的属性。对每个属性列出有效值的允许范围、约

束的条件等。

Ø 确定所有可修改属性的功能位置。

Ø 对数据进行初始化,改变每个属性以确定是否正确进行了约束。

如果数据约束遭到破坏,可能导致系统崩溃,或者表现为响应时间延迟,错误信息

不正确以及使用错误数据产生的无效输出。

11.3测试方法小结

Ø 应用场合:应用程序内部的数据结构存在约束。

Ø 测试方法:破坏内部数据结构的约束。

Ø 测试知识储备:全面理解需求规格说明书中的内容,确定内部数据结构的所有约束。

-----------------------------------------------------------------------------------------------------------------------------------------

12 操作数与操作符不符

12.1缺陷产生原因

几乎每个运算符都有它无效的操作数,对于具体的操作符,开发人员在使用它们时,

必须编写错误检查代码。例如:除以零的问题。

12.2如何发现这类问题

找到程序中包含的数据或输入(即操作数)的计算(即操作符)、数学表达式(即操

作符和操作数的组合)及对图形的操作。另外,对多个操作数进行组合也更容易发生

错误。例如,字符和数字都可以使用“+”操作符。对字符通过“+”把它们连成一串;

对数字通过“+”来进行加法运算。如果系统尝试把字符和数字相加,即进行相互矛盾

的操作,就会引起软件失效。

12.3测试方法小结

Ø 应用场合:需要进行数值计算的程序或图形操作的程序。

Ø 测试方法:对于数值计算考虑操作数和操作符之间的限定关系,对于图形计算还

要考虑各种输入数据之间的组合关系。

Ø 测试知识储备:全面掌握被测软件中操作符对操作数的要求。掌握不同的操作符

和操作数具有的不同的有效和无效的取值范围。

-----------------------------------------------------------------------------------------------------------------------------------------

13 递归调用自身

13.1缺陷产生原因

函数有时会递归调用自身,如果不限制执行次数,递归就会出现问题,它不断地调用自

身,很快地占用机器资源,最终产生溢出,使程序崩溃或挂起。产生这类问题的主要原

因是开发人员没有编码来保证循环和递归调用的终止,通常是在循环的开始或结束时缺

少检查条件。

13.2如何发现问题

在软件中寻找可以使用递归调用的功能。这时可以制作一个列表,标明软件中可能嵌入

递归的功能的列表,然后自己引用自己来检查程序是否能正确处理。

13.3测试方法小结

Ø 应用场合:需要和其它对象进行交互的地方。

Ø 测试方法:考虑对象的自我交互或复制。

Ø 测试知识储备:全面掌握被测软件的需求。

-----------------------------------------------------------------------------------------------------------------------------------------

14 计算结果溢出

14.1缺陷产生原因

当所有的输入和数据都有效时,计算的最终结果也可以是无效的。所有变量都有值域范

围,有时开发人员在执行计算时会忘记检查这些上限。

14.2如何发现这类问题

一次又一次地执行计算或使用很大或很小的输入和数据进行计算,重点测试数据类型的

初始值或边界值附近的值。

14.3测试方法小结

Ø 应用场合:应用程序执行能够导出待产生结果并进行内部存储的计算。

Ø 测试方法:强制数据产生上溢或下溢。

Ø 测试知识储备:全面掌握被测软件的需求,了解计算变量的上下限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: