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,我的想法似乎都不符合上下文。 –