单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。
单
元
测试
任
务
1.
单
元
测试
任
务
包括:
2.
模
块
接口
测试
;
3.
模
块
局部数据
结
构
测试
;
4.
模
块边
界条件
测试
;
5.
模
块
中所有独立
执
行通路
测试
;
6.
模
块
的各条
错误处
理通路
测试
。
模
块
接口
测试
是
单
元
测试
的基
础
。只有在数据能正确流入、流出模
块
的前提下,其他
测试
才有意
义
。
测试
接口正确与否
应该
考
虑
下列因素:
1.
输
入的
实际
参数与形式参数的个数是否相同;
2.
输
入的
实际
参数与形式参数的属性是否匹配;
3.
输
入的
实际
参数与形式参数的量
纲
是否一致;
4.
调
用其他模
块时
所
给实际
参数的个数是否与被
调
模
块
的形参个数相同;
5.
调
用其他模
块时
所
给实际
参数的属性是否与被
调
模
块
的形参属性匹配;
6.
调
用其他模
块时
所
给实际
参数的量
纲
是否与被
调
模
块
的形参量
纲
一致;
7.
调
用
预
定
义
函数
时
所用参数的个数、属性和次序是否正确;
8.
是否存在与当前入口点无
关
的参数引用;
9.
是否修改了只
读
型参数;
10.
对
全程
变
量的定
义
各模
块
是否一致;
11.
是否把某些
约
束作
为
参数
传递
。
如果模
块
内包括外部
输
入
输
出,
还应该
考
虑
下列因素:
1.
文件属性是否正确;
2.
OPEN/CLOSE
语
句
是否正确;
3.
格式
说
明与
输
入
输
出
语
句是否匹配;
4.
缓
冲区大小与
记录长
度是否匹配;
5.
文件使用前是否已
经
打
开
;
6.
是否
处
理了文件尾;
7.
是否
处
理了
输
入
/
输
出
错误
;
8.
输
出信息中是否有文字性
错误
;
检查
局部数据
结
构是
为
了保
证临时
存
储
在模
块
内的数据在程序
执
行
过
程中完整、正确。局部数据
结
构往往是
错误
的根源,
应
仔
细设计测试
用例,力求
发现
下面几
类错误
:
1.
不合适或不相容的
类
型
说
明;
2.
变
量无初
值
;
3.
变
量初始化或省缺
值
有
错
;
4.
不正确的
变
量名(拼
错
或不正确地截断);
5.
出
现
上溢、下溢和地址异常。
除了局部数据
结
构外,如果可能,
单
元
测试时还应该查
清全局数据(例如
FORTRAN
的公用区)
对
模
块
的影响。
在模
块
中
应对每
一条独立
执
行路径
进
行
测试
,
单
元
测试
的基本任
务
是保
证
模
块
中
每
条
语
句至少
执
行一次。此
时设计测试
用例是
为
了
发现
因
错误计
算、不正确的比
较
和不适当的控制流造成的
错误
。此
时
基本路径
测试
和循
环测试
是最常用且最有效的
测试
技
术
。
计
算中常
见
的
错误
包括:
1.
误
解或用
错
了算符
优
先
级
;
2.
混合
类
型运算;
3.
变
量初
值错
;
4.
精度不
够
;
5.
表达式符号
错
比
较
判断与控制流常常
紧
密相
关
,
测试
用例
还应
致力于
发现
下列
错误
:
1.
不同数据
类
型的
对
象之
间进
行比
较
;
2.
错误
地使用
逻辑
运算符或
优
先
级
;
3.
因
计
算机表示的局限性,期望理
论
上相等而
实际
上不相等的两个量相等;
4.
比
较
运算或
变
量出
错
;
5.
循
环终
止条件或不可能出
现
;
6.
迭代
发
散
时
不能退出;
7.
错误
地修改了循
环变
量。
一个好的
设计应
能
预见
各
种
出
错
条件,并
预设
各
种
出
错处
理通路,出
错处
理通路同
样
需要
认
真
测试
,
测试应
着重
检查
下列
问题
:
1.
输
出的出
错
信息
难
以理解;
2.
记录
的
错误
与
实际
遇到的
错误
不相符;
3.
在程序自定
义
的出
错处
理段运行之前,系
统
已介入;
4.
异常
处
理不当;
5.
错误陈
述中未能提供足
够
的定位出
错
信息。
边
界条件
测试
是
单
元
测试
中最后,也是最重要的一
项
任
务
。众的周知,
软
件
经
常在
边
界上失效,采用
边
界
值
分析技
术
,
针对边
界
值
及其左、右
设计测试
用例,很有可能
发现
新的
错误
。