软件测试概念的方法,软件测试概念方法以及实例.doc

软件测试概念方法以及实例

数据引用错误

是否有引用的变量未赋值或未初始化?这可能是最常见的编程错误,在各种环境中都可能发生。在引用每个数据项(如变量、数据元素、结构中的域)时,应试图非正式地“证明”该数据项在当前位置具有确定的值。

对于所有的数组引用,是否每一个下标的值都在相应规定的界限之内?

对于所有的数组引用,是否每一个下标的值都是整数?虽然在某些语言中这不是错误,但这样做是危险的。

对于所有的通过指针或引用变量的引用,当前引用的内存单元是否分配?这就是所谓的“虚调用(dangling reference)”错误。当指针的生命期大于所引用内存单元的生命期时,错误就会发生。当指针引用了过程中的一个局部变量,而指针的值又被赋给一个输出参数或一个全局变量,过程返回(释放了引用的内存单元)结束,而后程序试图使用指针的值时,这种错误就会发生。与前面检查错误的方法类似,应试图非正式地“证明”,对于每一个使用指针值的引用,引用的内存单元都存在。

如果一个内存区域具有不同属性的别名,当通过别名进行引用时,内存区域中的数据值是否具有正确属性?

变量值的类型或属性是否与编译器所预期的一致?

当使用的计算机上,当内存分配的单元小于内存可寻址的单元大小时,是否存在直接或间接的寻址错误?例如,在某些条件下,定长的位串不必以字节边界为起点,但是地址又总是指向字节边界的。如果程序计算一个位串的地址,稍后又通过该地址引用这个位串,可能会指向错误的内存位置。将一个位串参数传给一个子程序时,也可能发生这种情况。

当使指针或引用变量时,被引用的内存的属性是否与编译器所预期的一致?

假如一个数据结构在多个过程或子程序中被引用,那么每个过程或子程序对该结构的定义是否都相同?

如果字符串有索引,当对数组进行索引操作或下标引用,字符串的边界取值是否有“仅差一个”(off-by-one)的错误?

对于面向对象的语言,是否所有的继承需求都在实现类中得到了满足?

数据声明错误

是否所有的变量都进行了明确的声明?没有明确声明虽然不一定是错误,但通常却是麻烦的源头。

如果变量所有的属性在声明中没有明确说明,那么默认的属性能否被正确理解?

如果变量在证明语句中被初始化,那么它的初始化是否正确?在很多语言中,数组和字符串的初始化比较复杂,因此也成为容易出错的地方。

是否每个变量都被赋予了正确的长度和数据类型?

变量的初始化是否与其存储空间的类型一致?

是否存在着相似名称的变量(如volt和volts)?这种情况不一定是错误,但应被视为警告,这些名称可能会在程序中发生混淆。

运算错误

是否存在不一致的数据类型(如非算术类型)的变量间的运算?

是否有混合模式的运算?

是否有相同数据类型,不同字长变量间的运算?

赋值语句的目标变量的数据类型是否小于右边表达式的数据类型或结果?

在表达式的运算中是否存在表达式向上或向下溢出的情况?也就是说,最终的结果看起来是个有效值,但中间结果对于编程语言的数据类型可能过大或过小。

除法运算中的除数是否可能为0?

如果计算机表达变量的基本方式是基于二进制的,那么运算结果是否不精确?也就是说,在一个二进制计算机上,10*0.1很少会等于1.0。

在特定场合,变量的值是否超出了有意义的范围?

对于包含一个以上操作符的表达式,赋值顺序和操作符的优先顺序是否正确?

整数的运算是否有使用不当的情况,尤其是除法?

比较错误

是否有不同数据类型的变量之间的比较运算,例如,将字符串与地址、日期或数字相比较?

是否有混合模式的比较运算,或不同长度的变量间的比较运算?如果有,应确保程序能正确转换规则。

比较运算符是否正确?程序员经常混淆“至多”、“至少”、“大于”、“不小于”、“小于”和“等于”等比较关系。

每个布尔表达式所叙述的内容是否正确?在编写涉及“与”、“或”或“非”的表达式时,程序员经常犯错。

布尔运算符的操作数是否是布尔类型的?比较运算符和布尔运算符是否错误地混在了一起?这是一类经常会犯的错误,这里我们描述几个典型错误的例子。如果想判断i是否在2~10之间,表达式2x||y也是不正确的,正确的应该是(i>x)||(i>y)。如果要比较三个数字是否相等,表达式if(a==b==c)的实际意义却大相径庭。如果需要验证数学关系x>y>z,正确的表达式应该是(x>y)&&(y>x)。

在二进制的计算机上,是否有用二进制表示的小数或浮点数的比较运算?由于四舍五入,以及用二进制表示十进制数的近似度,这往往是错误的根源。

对于那些包含一个以上布尔运算符的表达式,赋值顺序以及运算符的优先顺序是否正确?也就是说,如果碰到如(if((a==2)&&(b==2)||(c==3)))的表达式,程序能否正确理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值