2012-12-10 22 views
2
public int f(int i) { 
    int j = i+1; 
     if(i % 2 == 0) { 
     j = doit(i); 
     } 
     if (i % 3 == 0) { 
     j = doit(i+1); 
     } 
    return j; 
    } 

爲了實現此方法的全路徑覆蓋測試,參數i需要多少個不同的值?什麼是java中的全路徑覆蓋測試?

寫下許多不同的值,這將實現該方法的全路徑覆蓋測試?

全路徑覆蓋測試到底是什麼?你怎麼做呢? (請詳細介紹一下,我有一個測試來了,我還是真的被這個迷惑) TIA

+0

這是功課嗎? – SomeKittens

+1

對他的功勞,他提到了一個測試;-)。作爲這種情況下的提示,您需要4個輸入,您需要一個組合,其中每個表達式都是真和假,如FF TF FT TT,以便測試每個代碼路徑組合。 – PeterJ

+0

它來自一個實踐測試,由學生如此編譯的答案,如果他們是100%準確的,但我很困惑什麼全路徑覆蓋測試是 – cloud9resident

回答

2

如果以這樣的方式,邏輯的所有可能的路徑進行測試測試你的代碼,它是稱爲全路徑測試。

在您的例子您有導致成以下4種組合兩個備用的路徑:

  1. 控制進入在第一,如果塊僅(例如I = 2
  2. 控制進入在第二如果塊僅(例如I = 3
  3. 控制進入在兩個如果塊(例如I = 6
  4. 精讀trol不會進入if塊(例如I = 5

如果測試與覆蓋上述4種情景你的代碼,這將是你的代碼的完整路徑測試。

+0

啊哈我想我現在開始得到它,基本上我必須是tt,tf,ft,ff他們正在嘗試測試的方法。那麼爲了實現這種方法的全路徑覆蓋測試,參數i的不同值總是2^n,其中n是我們試圖通過的方法的數量? – cloud9resident

+0

@ cloud9resident總體思路是測試邏輯的每個可能的流程。如果你有'if-else'塊,那麼只有2個測試場景就足夠了,一個用於'if',一個用於'else'。 –

1

完整路徑覆蓋是指在測試過程中執行代碼的每條可能路徑(在不同的迭代中執行,並不一定都是在一次測試期間)。在代碼的上方的情況下,將需要的i四個不同值來觸發:

  • 首先,如果,不第二
  • 第二IF,而不是第一
  • 兩個IFS
  • 既不如果

由於這似乎是功課,我會留下發現i什麼值需要你。

+0

答案是0,1,2,5,但我不知道他們是如何得到這個答案的,你只是插入這些數字爲我,看看你是否可以通過他們的方法通過每個路徑? – cloud9resident