单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。


 


测试


 


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.         错误陈 述中未能提供足 够 的定位出 错 信息。


 


边 界条件 测试 是 单 元 测试 中最后,也是最重要的一 项 任 务 。众的周知, 软 件 经 常在 边 界上失效,采用 边 界 值 分析技 术 , 针对边 界 值 及其左、右 设计测试 用例,很有可能 发现 新的 错误 。