基本测试技巧 软件测试方法
基本测试被McCabe描述为通过源代码或程序流程图产生程序模块的控制流图。流程图可用来列举独立的控制路径和计算秩数v(G)——一种过程复杂度的测度(参见Myers的秩复杂度测量的扩展[17])。覆盖独立路径的测试用例的基本集随后被创建。
控制流图是一种用节点代表程岸段,边代表从给定程序段到别的程序段的连接的一种网络图。边描出了从一个节点到另一个节点的控制转移,可以代表条件的和非条件的任何转移形式。节点代表了一种具有多发射边的决策。循环是一个具有返回节点的发射边的节点。区域是图内被节点和边包围的范围。每一个图都有人口和出口节点。路径是整个图中从一个节点到另一个节点穿越边的路径,该路径从人口节点开始到出口节点结束[11]。
4节点是顺序执行的行为块,而边是一个块到男一个块的控制转移。If/Th朗/Else/Endif和嵌套的If/rhen/Else/Endif是有条件地转移控制到特殊行为组的语句的例子。
程序模块中的内部结构复杂性是模块执行功能数、模块的输入和输出数、模块的决策数的结果。结构化编程学说指出一个模块应该执行且只执行一个功能[21、22]。如果这一基本原则被遵循了,由功能数引起的复杂度就会最小化。结构化程序还基于如下一个前提:每个模块有且只有一个进入点和退出点。如果这样的话,由于模块接口的简化,由输入和输出引起的复杂度将会得到控制。这样抉策数就成了引起模块复杂度的主要结构化维因素。
Me(五be复杂度测度是模块的决策结构的指示。它通过控制流圈中决策的数量来测量过程复杂度[儿、12]。秩复杂度是个有用的度量,这是因为它也代表了感知的复杂度。Miller发现人类大脑可同时处理的最大信息量是3比特(用比特作为信息的单位是为了区分两个平等的可能选择)。整个可选择事物的数目是2的幂,它等于包含在复杂决策中的区分数目[13]。
根据他的发现,Min盯制定了7±2规则。由于每个选择都是可区分的,7个选择是人脑默记的最优值。Mm口确定人类可同时处理的最多选择数是9[13]。如果这一定理被用到程序模块的决策结构。程序必须处理以理解复杂决策的比特数是2次幂的函数,它代表了在决策中包含的条件的数量。一个3级深度的If/Else嵌鞋包括23或者8个选择.它低于Mill日给出的限制。再增加一个决策嵌套就会使选择达到了16,超出了限制。因此,秩复杂度大于10的模块,对人的瞬间记忆来说是难于完全理解的。所以如果c大于10。那么模块就应该被重构,否则它将可能不可溯试。秩数可用三个简单的公式来计算。第一个表明秩数的公式是
C=E—N+2 ’、i一- 。式中,c是秩数(为了简化符号和使符号更有意义,c用来代替V(G),2用于代替2P(P通常为O’);E是边的数目;Ⅳ是节点的数目。秩复杂度可通过边与节点的关系函数来计算
复杂度也可以根据控制流图中的区域的函数来计算。边不能够互相交叉,并且违反这个规则形戚的区域是雨合祛的区域叫只有合法区域才可代人复杂度公式进行计算。 +r1基于区域数的计算公式如下h:_ 。
” C。R十l式中,c是秩数;R是合法区域数。
秩数也可以根据图中的简单决策数来计算。简单决策是这样一个分支,它评估一个与单一条件相关联的条件状态。嵌套的条件和由逻辑运算符(AND、OR等)连接的条件应该被看成完全独立的决策。
公式如下: ,
C=D+1
式中,D是简单决策的数目。 一
文章来源于领测软件测试网 https://www.ltesting.net/