软件测试覆盖率,大体上可以分为,逻辑覆盖和功能覆盖。
逻辑覆盖,属于白盒测试的范畴。其中经常接触到的或者说是用到的包括如下几个分类:
语句覆盖
判断覆盖
条件覆盖
判断条件覆盖
路径覆盖
语句覆盖,指的是被测试程序的每个可执行语句至少被执行一次。
判断覆盖,指的是被测试程序的每个判断至少去真分支和假分支一次。
条件覆盖,指的是被测试程序的每个条件的可能取值至少满足一次。这里要多说一句的就是,这次题目里提到的halstead方法就是在条件覆盖中涉及到的概念。
判断条件覆盖,也可以叫分支条件覆盖,指的是被测试程序中的判断中的每个条件的所有可能值至少出现一次。
路径覆盖,指的是所设计的测试用例要覆盖被测试程序中所有可能的路径。
以上就是白盒测试中经常用到的测试方法,其中的条件覆盖涉及到了halstead方法。
一下就引出halstead方法。
halstead方法是一个程序复杂度度量方法,halstead度量方法不仅仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐释程序语言的等级高低。它以程序中出现的操作符(Operator)和操作数(Operand)为计数对象,以它们的出现次数作为计数目标来测算程序容量和工作量。
操作数包括:常量、变量。
操作符包括:IF-ELSE,While(),return,for(;;),?:,sizeof等等
任何程序都可以由操作符和操作数通过有限次的组合连缀而成。
具体的复杂度的表述,为如下:
任意程序P,P的符号表词汇量 η = η 1+ η 2( η 1:惟一操作数数量, η 2:惟一操作符数量)。设N1是P中出现的所有操作数,N2是程序中出现的所有操作符。度量指标如下: 程序长度N=N1+N2 程序容量V=N × log2 η 当我们编写程序的时候,代码体积会因实现方式和编写者的习惯有所差异,还会因所采用的程序语言(比如保留字的数量,语句的结构等)而有所不同。因此,又有如下标准: 程序语言等级L=V ?/ V(V ? 是程序实现时可能的最小代码容量) 编写程序的效率E=V / L halstead的度量分析指出,在软件开发中,把系统划分为单独的模块所带来的实质性利益,在于短代码的难度要比长代码低。
逻辑覆盖,属于白盒测试的范畴。其中经常接触到的或者说是用到的包括如下几个分类:
语句覆盖
判断覆盖
条件覆盖
判断条件覆盖
路径覆盖
语句覆盖,指的是被测试程序的每个可执行语句至少被执行一次。
判断覆盖,指的是被测试程序的每个判断至少去真分支和假分支一次。
条件覆盖,指的是被测试程序的每个条件的可能取值至少满足一次。这里要多说一句的就是,这次题目里提到的halstead方法就是在条件覆盖中涉及到的概念。
判断条件覆盖,也可以叫分支条件覆盖,指的是被测试程序中的判断中的每个条件的所有可能值至少出现一次。
路径覆盖,指的是所设计的测试用例要覆盖被测试程序中所有可能的路径。
以上就是白盒测试中经常用到的测试方法,其中的条件覆盖涉及到了halstead方法。
一下就引出halstead方法。
halstead方法是一个程序复杂度度量方法,halstead度量方法不仅仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐释程序语言的等级高低。它以程序中出现的操作符(Operator)和操作数(Operand)为计数对象,以它们的出现次数作为计数目标来测算程序容量和工作量。
操作数包括:常量、变量。
操作符包括:IF-ELSE,While(),return,for(;;),?:,sizeof等等
任何程序都可以由操作符和操作数通过有限次的组合连缀而成。
具体的复杂度的表述,为如下:
任意程序P,P的符号表词汇量 η = η 1+ η 2( η 1:惟一操作数数量, η 2:惟一操作符数量)。设N1是P中出现的所有操作数,N2是程序中出现的所有操作符。度量指标如下: 程序长度N=N1+N2 程序容量V=N × log2 η 当我们编写程序的时候,代码体积会因实现方式和编写者的习惯有所差异,还会因所采用的程序语言(比如保留字的数量,语句的结构等)而有所不同。因此,又有如下标准: 程序语言等级L=V ?/ V(V ? 是程序实现时可能的最小代码容量) 编写程序的效率E=V / L halstead的度量分析指出,在软件开发中,把系统划分为单独的模块所带来的实质性利益,在于短代码的难度要比长代码低。