i = 0;
n=4; //N-Number of nodes present in the graph
while (i<n-1) do
j = i + 1;
while (j<n) do
if A[i]<A[j] then
swap(A[i], A[j]);
end do;
i=i+1;
end do;
我必须找到这个代码的圈复杂度,然后建议一些白盒测试用例和黑盒测试用例。但是我无法为代码制作CFG。向我解释圈复杂度的控制流程
i = 0;
n=4; //N-Number of nodes present in the graph
while (i<n-1) do
j = i + 1;
while (j<n) do
if A[i]<A[j] then
swap(A[i], A[j]);
end do;
i=i+1;
end do;
我必须找到这个代码的圈复杂度,然后建议一些白盒测试用例和黑盒测试用例。但是我无法为代码制作CFG。向我解释圈复杂度的控制流程
浏览复杂性相关材料我遇到了这个问题,以及在别人的博客和别人的书中讨论过的例子。眼看作为例子是相同的......
http://www.guru99.com/cyclomatic-complexity.html
不过,希望能够使有些问题对他人有用。
算法从http://www.cs.swan.ac.uk/~csmarkus/CS339/dissertations/GregoryL.pdf摘自:
首先两点可以有时折叠的,因为计算的复杂性可以不必涉及图形建筑物。然而,对于基本的路径集,您至少需要在您的脑海中绘制草图。
要计算的复杂性,你需要做出决定你如何去了解它。
复杂等于源代码:
决策点= IF,FOR,WHILE ... 由于`如果(A或/和b)等同于如果一个和/或者如果b,复合条件将复杂度加2,那么if的复杂度就是2(因为无论如何它都是2)。
示例图表和更多阅读链接:https://stackoverflow.com/a/21658235/999165。
麦凯布注意的是复杂号码是一个号码,如果线性独立的电路 - 通过代码路径,因而它也是一个最小的测试用例数。因此,您需要构建尽可能多的测试用例,以及您拥有的许多路径。路径由通过图形去选择,因为它是一个迷宫:
开始与路径计数器为零和: 1.向左走向上直到汇聚节点(退出点) 2.路径计数器+ 1 3.转到左再次,在达到接收器之前的最低决策点处,选择右边而不是左边 4.重复步骤1 - 3,直到所有决策点完全耗尽
您所遍历的节点组成您的路径。
http://www.guru99.com/cyclomatic-complexity.html确切地说,我在找什么。如果需要注意 - 方法/模块中的“独立路径的最大数目”,则复杂性V(G)具有实际意义/相关性。或者换句话说,对于该方法的输入,可能有多少控制流(开始到结束)。 – parasrish
示例似乎是从网上直播的?对于你的部分问题已经有了解释。另外,如果你有代码,你为什么要在这里提出黑盒测试?最后,请解释CFG,我的想法似乎都不符合上下文。 –