本文共 1591 字,大约阅读时间需要 5 分钟。
逻辑覆盖:一种动态白盒测试方法,基于程序的内部逻辑结构进行的测试。主要包括
语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖 1. 语句覆盖
- 语句覆盖:使被测程序中的每一条可执行语句至少执行一次
- 语句覆盖率=(至少被执行一次的可执行语句的数量)/(可执行语句的总数)
- 语句覆盖是最弱的逻辑覆盖标准
- 语句覆盖优点: 1、检查所有语句; 2、结构简单的代码的测试效果较好; 3、容易实现自动测试; 4、代码覆盖率高; 5、如果是程序块覆盖,则不涉及程序块中的源代码
- 语句覆盖缺点:对控制结构不敏感,对程序执行逻辑结构的覆盖率低,不能发现判断逻辑运算符中出现的错误
2. 分支覆盖/判定覆盖
- 分支覆盖/判定覆盖:报告在控制结构中是否测试了布尔表达式取值分别为真和假的情况
- 分支覆盖保证只要程序能跳转,就能跳转到所有可能的目标语句
- 判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)
- 实际应用:首先设计若干个测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足
- 只要满足了判定覆盖标准的测试用例就一定满足语句覆盖标准,反之则不然
- 判定覆盖的测试充分性仍然较弱,它只是判断整个判定表达式的最终取值结果,而不考虑表达式中每个条件的取值情况
3. 条件覆盖
- 条件覆盖:使每个判断中的每个条件的可能取值至少满足一次
- 条件覆盖率:在测试时运行被测程序后,所有判断语句中的每个条件的可能取值(真值和假值)出现过的比率
- 条件覆盖率=(条件操作数值至少被评价一次的数量)/ (条件操作数值的总数)$$
- 条件覆盖缺点: 1、并不能全面覆盖所有路径 2、用例数量的增加
4. 判定-条件覆盖
- 条件覆盖不一定包含判定覆盖,反之亦然。因此,就需要一种能将两者结合起来的逻辑覆盖标准,这就是判定-条件覆盖,也称为分支-条件覆盖或条件判定组合覆盖
- 分支条件覆盖率:在测试时运行被测程序后,所有判断语句中每个条件的所有可能值(为真为假)和每个判断本身的判定结果(为真为假)出现的比率
- 分支条件覆盖率=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数)
- 判断条件覆盖率实际上就是分支覆盖率和条件覆盖率的组合
- 判定-条件覆盖并不一定能够查出逻辑表达式中的所有错误。从测试充分性上来看,满足判定-条件覆盖就一定能够满足条件覆盖、判定覆盖和语句覆盖
- 实际应用:首先设计若干个测试用例,然后运行被测程序,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次
- 判定-分支覆盖优缺点 1、既考虑了每一个条件,又考虑了每一个分支,发现错误能力强于分支覆盖和条件覆盖 2、并不能全面覆盖所有路径 3、用例数量的增加
例1
例2
5. 路径覆盖
- 路径覆盖就是设计足够多的测试用例,使被测程序的每条可执行路径都至少执行一次
- 路径覆盖率:在测试运行时运行被测程序后,程序中所有可能的路径被执行过的比率
- 路径覆盖率=(至少被执行到一次的路径数)/(总的路径数)
- 对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的
- 在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,便可认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这就是通常所说的基本路径测试方法
- 基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例
- 基本路径测试方法包括以下4个步骤: (1)画出程序的控制流图。 (2)计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 (3)导出基本路径集,确定程序的独立路径 (4)根据(3)中的独立路径,设计测试用例的输入数据和预期输出
转载地址:http://hkxzi.baihongyu.com/