1. 单元测试
单元测试( Unit Testing )是对软件中的最小可测试单元进行检查和验证。
程序 = UT + CODE
单元测试内容
单元测试原则
单元测试质量
覆盖率达到70%~80%就可以了,过高的覆盖率可能会导致成本的大大增加
2. 测试用例
3. 黑盒测试技术
-
等价类划分
等价类划分是将输入域划分成尽可能少的若干子域,在划分中要求每个子域两两互不相交,每个子域称为一个等价类。
有效等价类是对规格说明有意义、合理的输入数据构成的集合,能够检验程序是否实现了规格说明中预先规定的功能和性能。
无效等价类是对规格说明无意义、不合理的输入数据构成的集合,以检查程序是否具有-定的容错性。
-
边界值分析
健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还要增加一一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。
4. 白盒测试技术
控制流图
控制流图( CFG,Control Flow Graph )是- -个过程或程序的抽象表示。
代码覆盖标准
- 语句覆盖(最弱的逻辑覆盖准则)
程序中的每个可执行语句至少被执行一次。
(测试用例虽然覆盖可执行语句,但无法检查判断逻辑是否存在问题)- 判定覆盖
程序中每个判断的取真和取假分支至少经历一次 ,即判断真假值均被满足。
(由于大部分判定语句是由多个逻辑条件组合而成,若仅判断其整个最终结果
而忽略每个条件的取值情况,必然会遗漏部分测试路径)- 条件覆盖
每个判断中每个条件的可能取值至少满足一次。
eg:
(条件覆盖不一定包含判定覆盖, 上例中没有覆盖判断①的取真分支和判断②的取假分支)- 判定条件覆盖
判断中所有条件的可能取值至少执行一次,且所有判断的可能结果至少执行一次。
(判定条件覆盖能够同时满足判定、条件两种覆盖标准。没有考虑条件的各种组合情况)- 条件组合覆盖
判断中每个条件的所有可能取值组合至少执行一次,并且每个判断本身的结
果也至少执行次。
(1-2-5路径没有被覆盖)- 路径覆盖
覆盖程序中的所有可能的执行路径。
对条件组合覆盖的结果进行了修改,得到下图测试用例:
如何看待测试覆盖率
- 覆盖率数据只能代表测试过哪些代码,不能代表是否测试好这些代码。
- 较低的测试覆盖率能说明所做的测试还不够,但反之不成立。
- 路径覆盖>判定覆盖>语句覆盖
- 测试人员不能盲目追求代码覆盖率,而应该想办法设计更好的测试用例。
- 测试覆盖率应达到多少需要考虑软件整体的覆盖率情况以及测试成本。