单元测试一直都是考试的热点,近几年在上午题中出现的频率很高。在进行单元测试时,测试人员需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,再加上黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。考试主要从单元测试的概念、阶段和内容开展,为此总结了如下知识点供大家学习。


概念:单元测试又称模块测试,是针对软件设计的最小单位——程序模块, 进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。


阶段:单元测试按照软件测试在开发阶段的划分,排在第一个阶段,后面是集成测试。


单元测试的内容:在单元测试中进行的测试工作需要在以下五个方面对所测模块进行检查。

①模块接口测试:在单元测试的开始,应对通过所测模块的数据流进行测试。如果数据不能正确地输入和输出,就谈不上进行其他测试。为此,对模块接口可能需要如下的测试项目:

(1)调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;

(2)所测模块调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属性、顺序上是否匹配;

(3)是否修改了只作输入用的形式参数;

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

(5)全局量的定义在各模块中是否一致;

(6)限制是否通过形式参数来传送。

当模块通过外部设备进行输入/输出操作时,必须附加如下的测试项目:

(1)文件属性是否正确;

(2)OPEN语句与CLOSE语句是否正确;

(3)规定的I/O格式说明与I/O语句是否匹配;

(4)缓冲区容量与记录长度是否匹配;

(5)在进行读写操作之前是否打开了文件;

(6)在结束文件处理时是否关闭了文件;

(7)正文书写/输入错误,以及I/O错误是否检查并做了处理。


②局部数据结构测试:模块的局部数据结构是最常见的错误来源,应设计测试用例以检查以下各种错误:

(1)不正确或不一致的数据类型说明;

(2)使用尚未赋值或尚未初始化的变量;

(3)错误的初始值或错误的缺省值;

(4)变量名拼写错或书写错误;

(5)不一致的数据类型。

可能的话,除局部数据之外的全局数据对模块的影响也需要查清。


③路径测试:由于通常不可能做到穷举测试,所以在单元测试期间要选择适当的测试用例,对模块中重要的执行路径进行测试。应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。对基本执行路径和循环进行测试,可以发现大量的路径错误。

常见的不正确计算有:

(1)运算的优先次序不正确或误解了运算的优先次序;

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

(3)算法错;

(4)初始化不正确;

(5)运算精度不够;

(6)表达式的符号表示不正确。

常见的比较和控制流错误有:

(1)不同数据类型的相互比较;

(2)不正确的逻辑运算符或优先次序;

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

(4)关系表达式中不正确的变量和比较符;

(5) "差1”错,即不正确地多循环一次或少循环一次;

(6)错误的或不可能的循环中止条件;

(7)当遇到发散的迭代时不能中止的循环;

(8)不适当地修改了循环变量等。


④错误处理测试:比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。这种出错处理也应当是模块功能的一部分。若出现下列情况之一, 则表明模块的错误处理功能包含有错误或缺陷:

(1)出错的描述难以理解;

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

(3)显示的错误与实际的错误不符;

(4)对错误条件的处理不正确;

(5)在对错误进行处理之前,错误条件已经引起系统的干预等。


⑤边界测试:在边界上出现错误是常见的,例如在一段程序内有一个n次循环,当到达第n次,重复时就可能会出错。另外,在取最大值或最小值时也容易出错。因此,要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。