◆ 碰到庞杂顺序,循环次数多的时分,实现途径掩盖是很艰难的,也没有蕴含判断条件掩盖。
从上面的集中逻辑掩盖测试来看,它们互相弥补,尽量到达被测试顺序的100%,但是咱们还是要清晰测试是为了尽能够找出顺序中的同伴。却没有一种美中缺少的测试方式来发明一切的同伴,这也表现了测试的局限性。
● 功用掩盖(Function Coverage)率,属于黑盒测试范畴。
○ 需求掩盖:
◆ 需求掩盖率=(被验证到的需求数量)÷(总的需求数量)
○ 接口掩盖÷入口点掩盖:使得体系的每个接口被测试到。
以上所说的掩盖率都是属于构造化掩盖率的范畴,但是在面向对象范畴中却碰到挑衅。
面向对象的掩盖率:对于面向对象的一些特征的测试,如:多态性、继续性、封装性等。
class Base【
public:void foo()【helper();】
void bar()【helper();】
private:virtual void helper()【。。。】;】;
class Derived:public Base【
private:virtual void helper()【。。。】】;
对于上面那个顺序,假如你测试到了Base。foo()和 Dervied。bar(),外表上看,你测试到了Base::helper()和Derived::helper()方式,到达了分支和语句,甚至途径掩盖100%。但是Base::foo()和Base::bar()他们跟Base::helper之间的接口还没有掩盖到,所以必需增强测试。
在面向对象中,高低文是设计对比多的,高低文掩盖是一种搜集被测试软件如何履行数据的方式。能够运用于多态、继续和封装的特征,也能够扩大到多线程运用。
● 继续高低文掩盖(Inheritance Context Coverage):高低文内履行到的判断分支数据量占顺序内判断的总数的百分比。
○ 基类的方式在其高低文空间中的履行是完整独立于基继续类的高低文空间;继续类的方式在其高低文空间中的履行也独立于其基类的高低文空间。
○ 继续高低文判断掩盖率=(累加每个高低文内履行到的判断分支数)÷(高低文数+高低文内的判断分支总数)
● 基于状况的高低文掩盖(State-Base Context Coverage)
○ 基于状况的类:琢磨有状况依靠行动的类。
◆ 有边界的栈:“空状况”、“半空状况”、“满状况”,“空状况”运用pop()方式就抛出异样,“满状况”运用push()方式也会抛出异样。
○ 入口点掩盖(Entry-Point Coverage)÷接口点掩盖(Interface Coverage):如上面的有边界栈的类,只测试接口的话,是无法测试边界值的时分会不会抛出异样。
○ 白盒掩盖:如判断掩盖掩盖的接口不对应于公共接口的特征。而特定的解决是掩盖不了的。
○ 基于高低文状况转移图:描写状况及其迁徙途径的图。
○ 基于状况的高低文掩盖:对应于被测类对象的潜在状况。
◆ 基于状况的高低文入口点掩盖率=(累加每个状况内履行到的方式数)÷(状况数×类内方式总数)
● 已定义用户高低文掩盖(User-Defined Context Coverage)
○ 基于线程的高低文掩盖:运用到保护每个线程的独立的掩盖率。
其余掩盖率(偏重理解)
● 函数掩盖:函数掩盖率=(至少被履行到一次的函数数量)÷(体系中函数的总数)
● 指令块掩盖(Inheruction Blocks Coverage):指令快掩盖率=(至少被履行到一次的指令块数量)÷(体系中指令块总数) 其中:指令块示意函数外部一系列语句。