第一步:画出控制流图

画出其程序流程图和对应的控制流图如下

第二步:计算圈复杂度

有以下三种方法计算圈复杂度: - 流图中区域的数量对应于环型的复杂性; - 给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量; - 给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。

第三步:导出测试用例

  • 根据上面的计算方法,可得出四个独立的路径。
  • (一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)
    • 路径1:4-14
    • 路径2:4-6-7-14
    • 路径3:4-6-8-10-13-4-14
    • 路径4:4-6-8-11-13-4-14

总结:McCabe的确定基路径集合的算法

  • McCabe开发了一种算法,用于确定程序的基本路径集合,方法如下:

    1、选择一个基线路径(应该对应某个“正常案例”,建议选择尽可能多判断节点的路径)

    2、沿基线路径后退,碰到判定节点后翻转,将翻转后的路径作为基线路径,重复本步骤,直到所有的判定节点都被翻转。

    • 注意:为遵循先易后难的原则,对于循环,一般先让路径跳过循环,然后考虑进入循环。
  • 基本路径集通常并不唯一。