优点:代码覆盖率高
缺点:覆盖所有代码路径难度大、业务功能可能覆盖不全、测试开销大
方法:静态:桌面走查(交叉检查,代码交给其他人检查)、代码审查(组织会议,作者讲解代码,看是否负责规范,侧重于规范)、代码走查(组织会议,与会人员准备数据,人工查看代码走向,侧重于功能实现)、代码扫描工具(辅助检查编码规范)
动态:逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)、基本路径测试法。
逻辑覆盖法
逻辑覆盖法:是通过对程序逻辑结构的遍历实现程序的覆盖。
覆盖率:是用来度量测试完整性的一个手段。
语句覆盖
设计测试用例,使得程序中每条语句至少被执行一次。
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
语句覆盖不能准确的判断运行中的逻辑关系错误。(无法发现if(x>0||y>0))
判定覆盖
判定覆盖,又称分支覆盖,设计程序用例,使得程序中的每个判断的真和假都至少被执行一次。即程序的每个分支至少执行一次。
只要满足了判定覆盖标准就一定满足语句覆盖标准。
判定覆盖会忽略条件中取或的情况。
条件覆盖
设计测试用例,使得判定覆盖的每个条件至少有一次去真值,有一次取假值。
条件覆盖比判定覆盖,增加了对判定覆盖中所有条件的测试。
条件覆盖并不能保证判定覆盖。
条件覆盖、判定覆盖区别
两个条件a>0&&b>0、c>0
判定覆盖使得a>0&&b>0、c>0两个判别式分别取真取假
条件覆盖使得a>0、b>0、c>0三个判别式分别取真取假
判定覆盖是针对判别式取真取假,与判定条件无关,而条件覆盖是针对判定条件取真取假,与判别式无关,两者都有一定的局限性。
判定条件覆盖
设计测试用例,使得被测试程序中的每个判定本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值(真假)也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。
满足判定条件覆盖标准一定满足条件覆盖、判定覆盖和语句覆盖。
判定条件覆盖会忽略条件中取或的情况(无法发现if(x>0||y>0,虽然都取了,但是x>0时与y无关)。
条件组合覆盖
设计测试用例,使得被测试程序中的每个判定中条件覆盖的所有可能至少执行一次。
条件组合覆盖能满足判定覆盖、条件覆盖、判定条件覆盖,也就包括语句覆盖。
条件组合覆盖不能保证所有路径被执行。
路径覆盖
路径覆盖可以对程序进行测试的测试,比前面五种覆盖面都广。
满足路径覆盖,并不一定满足条件覆盖,也就不能满足条件组合覆盖。
基本路径测试法
在程序控制流图的基础上,通过分析程序的环路复杂度,导出基本可执行集合,从而设计测试用例。
步骤