单元测试之模块接口、局部数据结构、路径、边界条件、错误处理、代码书写规范

单元测试是以程序设计说明书为指导,测试模块范围内的重要控制路径,以揭露错误。

测试的相对复杂性和所发现的错误受到单元测试所限定的范围的限制。它在执行的过程中紧密的依照程序框架对模块进行测试,测试包含入口和出口的参数,输入和输出信息,错误处理信息,部分边界数值测试。需要在6个方面对所测模块进行检查。

1.模块接口测试

模块接口测试是单元测试的基础,当模块通过外部设备进行输入/输出操作时,只有在数据能正确流入、流出模块的前提下,模块才能完成他的功能。

模块接口测试应考虑下列因素:

★ 调用其他模块时所给的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;

★ 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

★ 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;

★ 调用预定义函数时所用参数的个数、属性和次序是否正确;

★ 输入的实际参数与形式参数的个数是否相同;

★ 输入的实际参数与形式参数的属性是否匹配;

★ 输入的实际参数与形式参数的量纲是否一致;

★ 是否修改了只做输入用的形式参数;

★ 是否存在与当前入口点无关的参数引用;

★ 是否修改了只读型参数;

★ 对全程变量的定义各模块是否一致;

★ 是否把某些约束作为参数传递。

★ 输出给标准函数的参数在个数、属性、顺序上是否正确;

★ 限制是否通过形式参数来传送;

★ 文件属性是否正确;

★ OPEN/CLOSE语句是否正确;

★ 格式说明与输入输出语句是否匹配;

★ 缓冲区大小与记录长度是否匹配;

★ 文件使用前是否已经打开;

★ 是否处理了输入/输出错误;

★ 输出信息中是否有文字性错误;

★ 在结束文件处理时是否关闭了文件。

2.局部数据结构测试

局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确的基础。模块的局部数据结构往往是错误的根源,力求发现最常见的几类错误:

★ 不合适或不相容的类型说明;

★ 变量无初值;

★ 变量初始化或省缺值有错;

★ 不正确的变量名(拼错或不正确地截断);

★ 出现上溢、下溢和地址异常。

3.路径测试

应对模块中重要的执行路径进行测试。由于错误的计算、不正确的比较或不正常的控制流而导致执行路径的错误。路径错误应考虑下列因素:

★ 运算的优先次序不正确或误解了运算的优先次序;

★ 运算的方式错,即运算的对象彼此在类型上不相容;

★ 算法错;

★ 初始化不正确;

★ 浮点数运算精度问题而造成的两值比较不等;

★ 关系表达式中不正确的变量和比较符号表示不正确;

★ 不正确地多循环一次或少循环一次;

★ 错误的或不可能的循环终止条件;

★ 当遇到发散的迭代时不能终止的循环;

★ 不适当地修改了循环变量等。

4. 边界条件测试

边界条件测试是单元测试中最重要的一项任务。软件经常在边界上失效,边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。边界条件测试应考虑下列因素:

★ 程序内有一个n次循环,n次循环应是1~n, 出错0~n;

★ 小于、小于等于、等于、大于、大于等于、不等于确定的比较值出错;

★ 出现上溢、下溢和地址异常。

5.错误处理测试

比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。这种出错处理也应当是模块功能的一部分。错误处理测试应考虑下列因素:

★ 出错的描述难以理解;

★ 出错的描述不足以对错误定位,不足以确定出错的原因;

★ 显示的错误与实际的错误不符;

★ 对错误条件的处理不正确;

★ 异常处理不当。

6.代码书写规范

代码书写规范应考虑下列因素:

★ 模块设计程序框架流程图;

★ 代码书写规范,对齐方式;

★ 代码的注释;

★ 参数类型,数据长度,指针,数组长度大小;

★ 输入输出参数和结果。

单元测试是对每个程序的单体调试。主要有以下几步:

(1) 程序语法检查;

(2) 程序逻辑检查。

在程序的逻辑检查之前,首先需要制作测试数据;即假设一些输入数据和文件数据。测试数据直接影响了程序的调试工作,所以制作的数据应该满足以下几个条件:

(1) 数据应能满足设计上要求的上下限及循环次数;

(2) 数据应满足程序中的各种检验要求的错误数据;

(3) 数据应能适宜于人工对程序的检查工作。

测试数据的内容包含4个方面:

(1) 正常的数据

(2) 不同的数据

(3) 错误的数据

(4) 大量的数据

通过以上不同角度的数据检验,证明程序逻辑是对的,程序的调试也就结束了。

在程序测试期,评价模块的五个主要特性是:

★ 模块接口;

★ 局部数据结构;

★ “重要”的执行路径;

★ 错误处理路径;

★ 影响上述几点的界限条件。

在其它任何测试开始之前,需要测试横穿模块接口的数据流。如果数据不是正确地进入和退出,其它的测试就谈不上。

在程序测试中接口测试的清单如下:

⑴ 输入参数的数目是否等于变元的数目

⑵ 参数与变元的属性是否匹配

⑶ 参数与变元的单位是否匹配

⑷ 传送给被调用模块的变元数是否等于参数的项目

⑸ 传送给被调用模块的变元属性是否同参数属性一致

⑹ 传送给被调用模块的变元单位是否同参数的单位一致

⑺ 属于内部的函数属性数目及变元次序是否正确

⑻ 对参数的任何访问是否与当前的入口点无关

⑼ 输入是否改动变元

⑽ 跨模块的全程量定义是否相容

⑾ 限制是否作为变元来传送

⑿ 参数是否被重复定义

你可能感兴趣的:(单元测试之模块接口、局部数据结构、路径、边界条件、错误处理、代码书写规范)