○ 条件覆盖(Condition Coverage)率:每个条件操作数(Operand)可能的取值被测试所占的比例。
◆ 条件覆盖率=(条件操作数值被至少执行一次的数量)/(条件操作数值的总数)
◆ 条件操作符容易被确认,有助于自动化测试;
◆ 优于判定覆盖,但不能替代判定覆盖率
○ 条件判断覆盖(Decision Condition Coverage/Branch Condition Coverage)率:设计足够多的测试用例来满足判定覆盖率和条件覆盖率
◆ 判定条件覆盖率=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数)
◆ 便于自动化,优于条件覆盖和判定覆盖;
◆ 不是完整的覆盖,还应该考虑路径覆盖。
○ 路径覆盖(Path Coverage)率:设计足够多的测试用例,遍历程序的所有可能的路径
◆ 路径覆盖率=(至少被执行一次的路径数)/(总的路径数)
◆ 遇到复杂程序,循环次数多的时候,完成路径覆盖是很困难的,也没有包含判定条件覆盖。
从上面的集中逻辑覆盖测试来看,它们相互补充,尽量达到被测试程序的100%,然而我们还是要明确测试是为了尽可能找出程序中的错误。却没有一种十全十美的测试方法来发现所有的错误,这也体现了测试的局限性。
● 功能覆盖(Function Coverage)率,属于黑盒测试范畴。
○ 需求覆盖:
◆ 需求覆盖率=(被验证到的需求数量)/(总的需求数量)
○ 接口覆盖/入口点覆盖:使得系统的每个接口被测试到。
以上所说的覆盖率都是属于结构化覆盖率的范畴,但是在面向对象领域中却遇到挑战。
面向对象的覆盖率:关于面向对象的一些特性的测试,如:多态性、继承性、封装性等。
class Base{
public:void foo(){helper();}
void bar(){helper();}
private:virtual void helper(){...};};
class Derived:public Base{
private:virtual void helper(){...}};
文章来源于领测软件测试网 https://www.ltesting.net/