2017-03-09 190 views
-4

鑑於以下代碼片段,需要多少測試才能100%決策覆蓋?任何人都可以解釋這個程序的輸出

if width > length then 
    biggest_dimension = width 
    if height > width then 
     biggest_dimension = height 
    end_if 
else 
    biggest_dimension = length  
    if height > length then 
     biggest_dimension = height  
    end_if  
end_if 

對上述問題的回答是4。 4個測試用例需要100%的決策覆蓋率。任何人都可以告訴以下問題的答案解釋嗎?

回答

0

如果你想找到widthheightlength之間的最大尺寸,那不是最理想的方法。這是我想要的使用:

if(length > width) 
    biggest_dimension = width 
else 
    biggest_dimension = length 
endif 

if(biggest_dimension < height) 
    biggest_dimenstion = height 
endif 

這有點類似冒泡排序,但它的簡單得多,因爲元素的個數爲3,您可以在此處詳細瞭解排序算法:Bubble, quick, heap, insertion...

0

有四個測試案例因爲內if語句將只如果外語句爲真訪問,因此只能有四種組合:

  • 外=真,內=真
  • 外=真,內部=假
  • 外=假,內部=真
  • 外=假,內部=假

當外說法是錯誤的,它移動到你的else語句。

希望這是有道理的。

2

control flow

我已經構建了你的代碼,以幫助解釋的控制流程。

爲了達到100%的決策覆蓋率,需要進行4次測試,因爲「IF」語句的「真」和「假」兩方都必須由代碼執行。編寫的代碼在第一個「IF」聲明的每一面都有一個「IF」聲明,需要4次不同的測試才能做出每個決定。

實施例試驗:

  • 測試1:寬度=50釐米,長度= 40釐米,高度=40釐米

  • 試驗2:寬度=50釐米,長度= 40釐米,高度=60釐米

從這兩個測試中,決策覆蓋率現在將達到50%,因爲已經執行了一半的決策結果(第一個「IF」的「真」一側)。

  • 試驗3:寬度= 40釐米,長度=50釐米,高度=40釐米

  • 測試4:寬度= 40釐米,長度=50釐米,高度=60釐米

有了這兩個測試,第一個「IF」的「錯誤」方面被執行。這將使決策覆蓋率達到100%。

相關問題