在测试方法中粗略的介绍了几种测试方法。其中,白盒测试的动态分析方法中提到逻辑覆盖率测试有:语句覆盖、分支覆盖/判定覆盖、条件覆盖、条件—判定覆盖和路径覆盖。这里将详细阐述逻辑覆盖率测试。
准备知识:
可执行语句:可执行的一项操作;
真、假分支:Ture、False
操作数(Opreand)、操作符(Operator):
操作数:常量(整数、十六进制数、八进制数、实数、字符、字符串)、变量(简单类型、数组类型、记录类型、指针类型、联合等);
操作符:单一操作符、二进制操作符、条件操作符、赋值操作符等。
覆盖率
概念:覆盖率是度量测试完整性的一个手段,是测试有效性的一个度量。
计算公式:
覆盖率=(至少被执行一次的item数)/item总数
目的:评估测试的有效性,找出弱点,有目的的补充用例。
缺点:测试成本随着覆盖率的提高而增加。(在一般的测试中有个指标)
分类:
● 逻辑覆盖率(Logical Coverage),也叫代码覆盖率(Code Coverage)或结构化覆盖率,属于白盒测试的范畴。
○ 语句覆盖(Statement Coverage)率:程序中可执行语句被测试的比例。
◆ 语句覆盖率=(至少被执行一次的可执行语句的数量)/(可执行语句的总数)
◆ 它最简单的覆盖,适合用于自动化测试;
◆ 几乎所有的测试都能实现语句覆盖率100%,所以它不是测试完整性好的度量。
○ 判定覆盖(Decision Coverage)率/分支覆盖(Branch Coverage)率:程序中真、假分支被测试占的比例。
◆ 判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)
◆ 它直接针对代码,容易被理解,实现判定覆盖率100%是可能的;
◆ 优于语句覆盖,但对于复合条件,两个或多个条件项的组合可能导致只有特定的分支被测到。