单元测试是软件测试的第一步,其详细描述如下:
第一,单元测试的主要任务。
单元测试针对每个程序的模块,主要测试5个方面的问题:模块接口、局部数据结构、边界条件、独立的路径和错误处理;如下图所示:
(1)模块接口
这是对模块接口进行的测试,检查进出程序单元的数据流是否正确;模块接口测试必须在任何其它测试之前进行。
模块接口测试至少需要如下的测试项目:
1)调用所测模块时的输入参数与模块形式参数在个数、属性和顺序上是否匹配
2)所测模块调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属性和顺序上是否匹配
3)是否修改了只作输入用的形式参数
4)调用标准函数的参数在个数、属性和顺序上是否正确
5)全局变量的定义在各模块中是否一致
(2)局部数据结构
在模块工作过程中,必须测试模块内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。
对于局部数据结构,应该在单元测试中注意发现以下几类错误:
1)不正确的或不一致的类型说明
2)错误的初始化或默认值
3)错误的变量名,如拼写错误或书写错误
4)下溢、上溢或者地址错误
(3)路径测试
在单元测试中,最主要的测试是针对路径的测试;测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误。
常见的错误有:误解的或不正确的算术优先级,混合模式的运算,错误的初始化,精确度不够精确和表达式的不正确符号表示。
针对判定和条件覆盖,测试用例还要能够发现如下错误:不同数据类型的比较,不正确的逻辑操作或优先级,应当相等的地方由于精确度的错误而不能相等,不正确的判定或不正确的变量,不正确的或不存在的循环终止,当遇到分支循环时不能退出和不适当地修改循环变量。
(4)边界条件
边界测试是单元测试的最后一步,必须采用边界值分析方法来设计测试用例,认真仔细地测试为限制数据处理而设置的边界处,看模块是否能够正常工作。
一些可能与边界有关的数据类型如数值、字符、位置、数量和尺寸等,还要注意这些边界的首个、最后一个、最大值、最小值、最长、最短、最高和最低等特征。
在边界条件测试中,应设计测试用例检查以下情况:
1)在n次循环的第0次、1次、n次是否有错误
2)运算或判断中取最大值、最小值时是否有错误
3)数据流、控制流中刚好等于、大于、小于确定的比较值是否出现错误
(5)出错处理
测试出错处理的重点是模块在工作中发生了错误,其中的出错处理设施是否有效。
检验程序中的出错处理可能面对的情况有:
1)对运行发生的错误描述难以理解
2)所报告的错误与实际遇到的错误不一致
3)出错后,在错误处理之前就引起系统的干预
4)例外条件的处理不正确
5)提供的错误信息不足,以至于无法找到错误的原因
第二,单元测试的执行过程。
何时进行单元测试?单元测试常常是和代码编写工作同时进行的,在完成了程序编写、复查和语法正确性验证后,就应进行单元测试用例设计。
在单元测试时,如果模块不是独立的程序,需要设置一些辅助测试模块;辅助测试模块有两种:
1)驱动模块(Drive):用来模拟被测试模块的上一级模块,相当于被测模块的主程序;它接收数据,将相关数据传送给被测模块,启动被测模块,并打印出相应的结果
2)桩模块(Stub):用来模拟被测模块工作过程中所调用的模块,它们一般只进行很少的数据处理
驱动模块和桩模块都是额外的开销,虽然在单元测试中必须编写,但并不需要作为最终的产品提供给用户。
被测模块、驱动模块和桩模块共同构成了一个如下图所示的单元测试的测试环境:
zz from http://blog.csdn.net/zhouzxi/article/details/7107167