您的位置:首页 > 编程语言

测试之代码检查错误罗列

2017-10-31 11:13 99 查看
阅读《软件测试艺术(中文第二版)》对代码检查错误进行归纳罗列如下:

1、数据引用错误

1>引用的变量未赋值,或者未初始化;

2>引用的数组下标值是否在界定范围内;

3>引用的数组下标是否为整数;

4>所有通过指针或引用变量的引用,当前引用的内存单元是否分配(当指针的生命周期大于引用内存单元的周期时就会报错);

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

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

7>内存分配的单元小于内存可寻址的单元大小时;

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

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

10>如果字符串有索引,当对数组进行索引操作或下标引用,字符串的边界取值是否有“仅差一个”的错误;

11>是否所有的继承需求都在实现类中得到了满足。

2、数据声明错误

1>是否所有的变量都进行了明确的声明;

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

3>如果变量在声明语句中被初始化,那么它的初始化是否被正确理解;

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

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

6>是否存在着相似名称的变量。

3、运算错误

1>是否存在不一致的数据类型的变量间的运算;

2>是否有混合模式的运算;

3>是否有相同数据类型、不同字长变量间的运算;

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

5>在表达式的运算中是否存在表达式向上或向下溢出的情况;

6>除法运算中的除数是否可能为0;

7>如果计算机表达变量的基本方式是基于二进制的,那么运算结果是否不精确(在二进制计算机上,10x0.1很少会等于1.0);

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

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

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

4、比较错误

1>是否有不同数据类型的变量之间的比较运算;

2>是否有混合模式的比较运算,或不同长度的变量间的比较运算;

3>比较运算符是否正确(至多、至少、大于、不小于、小于、等于);

4>每个布尔表达式所叙述的内容是否都正确;

5>布尔运算符的操作数是否是布尔类型的。

6>在二进制的计算机中,是否有用二进制表示的小数点或浮点数的比较运算;

7>包含一个以上布尔运算符的表达式,赋值顺序以及运算符的优先顺序是否正确;

8>编译器计算布尔表达式的方式是否会对程序产生影响。

5、控制流程错误

1>索引变量的值是否会大于可能的分支数量;

2>是否所有的循环最终都终止了;

3>程序、模块或子程序是否最终都终止了;

4>由于实际情况没有满足循环的入口条件,循环体是否有可能从未执行过;

5>如果循环同时由迭代变量和一个布尔条件控制,如果循环越界,后果如何;

6>是否存在“仅差一个”的错误(如迭代数量恰好多一次或少一次);

7>是否对应的语句组、代码块对应完整;

8>是否存在不能穷尽的判断。

6、接口错误

1>形参数量是否等于对应的实参数量、顺序是否正确;

2>实参属性是否与形参属性对应匹配;

3>实参量纲是否与形参量纲对应匹配;

4>传递的实参数量是否是接收模块期望的形参数量;

5>模块间传递的实参属性是否与形参属性对应匹配;

6>模块间传递的实参量纲是否与形参量纲对应匹配;

7>如果调用了内置函数,实参的数量、属性、顺序是否正确;

8>如果某个模块或类有多个入口点,是否引用了与当前入口点无关的形参。

9>是否有子程序改变了某个原本仅为输入值的形参;

10>如果存在全局变量,在所有引用他们的模块中,他们的定义和属性是否相同;

11>常数是否以实参形式传递过(常数作为实参传递很危险)。

7、输入/输出错误

1>如果对文件明确声明过,其属性是否正确;

2>打开文件的语句中各项属性的设置是否正确;

3>格式规范是否与I/O语句中的信息相吻合;

4>是否有可用的内存空间,来保留程序将读取的文件;

5>是否所有的文件在使用之前都打开了;

6>是否所有的文件在使用之后都关闭了;

7>是否判断文件结束的条件,并正确处理;

8>对I/O出错情况是否正确处理;

9>任何打印或显示的文本信息中是否存在拼写或语法错误;

8、其他检查

1>如果编译器建立了一个标识符交叉引用列表,那么对该列表进行检查,查看是否有变量从未引用过,或仅被引用过一次;

2>如果编译器建立了一个属性列表,那么对每个变量的属性进行检查,确保没有赋予过不希望的默认属性值;

3>如果程序编译通过了,但计算机提供了一个或多个“警告”或“提示”信息,应对此逐一进行检查;

4>程序或模块是否对其输入的合法性进行了检查;

5>程序是否遗漏了某个功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐