软考计算题 · 判定节点 · 基本路径测试

环路复杂度判定节点法怎么算?

判定节点法是环路复杂度里最适合快速做题的方法。题目如果告诉你有几个判定节点,或者控制流图很容易看出几个分支点,就直接用“判定节点数+1”。它的难点不在公式,而在判断哪些东西真的算判定。

计算题专题 软考题库编辑部 持续更新

判定节点法的核心:每多一个分叉,就多一条独立路径的可能

判定节点可以理解成程序控制流发生选择的地方。典型例子是 if、while、for、case 这类结构。它们会让程序不再只是一路顺下去,而是出现不同走法。

常用公式是 V(G)=判定节点数+1。这个 +1 可以理解成没有任何判定时,程序至少也有一条基本路径。每增加一个判定点,就增加一份路径复杂度。

公式V(G)=判定节点数+1
适用题目直接给判定节点数,或图中分支点很容易识别

哪些通常算判定节点

if 判断、while 循环、for 循环、case 分支通常都要关注。它们共同特点是:会改变控制流的走向。普通赋值、普通计算、普通输出语句通常不算判定节点。

有同学会问:循环算不算?算。因为循环至少有“继续循环”和“退出循环”两种控制走向。不要只把 if 当判定,while 和 for 也常考。

结构是否通常算判定节点提醒
if最典型的二分支判断
while / for有继续执行和退出循环两种走向
case / switch多分支结构,具体数法要看题目给法
赋值语句不改变控制流
输出语句只是顺序执行动作

小例子:3个判定节点怎么算

如果题目说某程序控制流图中有 3 个判定节点,那么 V(G)=3+1=4。这个答案表示进行基本路径测试时,至少要设计 4 条独立路径。

注意,这里的 4 不是说随便测 4 组输入就一定充分,而是从控制流结构角度给出的最低路径覆盖提示。真正设计测试用例时,还要结合条件取值和业务规则。

代入过程

判定节点数 = 3。

V(G)=3+1=4。

基本路径测试至少关注 4 条独立路径。

判定法和边点法怎么选

题目给判定节点数,就优先用判定法;题目给边数和节点数,就优先用边点法;题目给图且区域容易看清,也可以用区域法。软考不会奖励你用最复杂的方法,能稳定算对才是重点。

如果图比较复杂,判定节点数和边点法可以互相校验。两边结果不同,先不要急着怀疑公式,先回去检查是不是漏掉循环回边,或者把普通节点当成判定节点。

相关题目解析

下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。