单元测试
单元测试概述
单元测试是对软件中的最小可测试单元进行检查和验证
单元测试包括:
模块接口: 对通过所有被测模块的数据流进行测试
局部数据结构: 检查模块中的数据结构是否正确的灵异和使用
边界条件: 检查数据流或控制流中条件或数据处于边界时的出错可能性
独立路径: 检查由于计算错误,判定错误,控制流错误导致的程序错误
**出错处理:**检查可能引发错误处理的路径以及进行错误处理的路径
单元测试原则:
- 快速的
- 独立的
- 可重复的
- 自我验证的
- 及时的
黑盒测试
设计良好的测试用例是关键
黑盒测试是将测试对象看做一个黑盒子,完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明
等价类划分是将输入域划分成尽可能少的若干子域,每个子域两两不相交,每个子域称为一个等价类 不同子域的输入 都应该有相同的输出结果 只需从每个子域中取一个就行
健壮性测试是对边界测试的一个简单补充
白盒测试方法
白盒测试是将测试对象看做一个透明的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试
基于控制流的白盒测试
代码覆盖率描述的是代码被测试的比例和程度,通过代码覆盖率可以得知哪些代码没有被覆盖,从而进一步不足测试用例
语句覆盖: 程序中每个可执行语句至少被执行一次 是最弱的逻辑覆盖准则
判断覆盖(分支覆盖) 程序中每个 判断的取真和取假分支至少经历一次
判定条件覆盖 判断中所有条件的可能取值至少执行一次,且所有判断的可能结果至少执行一次
条件组合覆盖 判断中每个条件的所有可能取值组合至少执行一次,并且每个判断本身的结果也至少执行一次
路径覆盖 覆盖程序中所有可能的执行路径
覆盖率数据只能代表测试过哪些代码,并不能够代表是否测试好这些代码
较低的测试覆盖率说明所做的测试还不够,但反之则不成立(即较高的测试覆盖率并不能说明所做的测试已经足够)
路径覆盖>判定覆盖>语句覆盖
不能盲目追求代码覆盖率
测试覆盖率应达到多少需要考虑软件整体的覆盖率情况及测试版本
基本路径测试
基本路径测试是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路劲集合,从而测试用例的方法
绘制控制流图 -> 计算环路复杂度 -> 确定基本路径 -> 设计测试用例
测试题
在单元测试中, 桩模块是用来代替被测模块的子模块的
条件覆盖要求每个判定中每个条件的所有取值至少满足一次