標籤:
一、問題描述:
構造程式,分別是: •不能觸發Fault •觸發Fault,但是不能觸發Error •觸發Error,但是不能產生Failure
二、Fault、Error、Failure區別
Fault:可能導致系統或功能失效的異常條件,可譯為“故障”。
Error:計算、觀察或測量值或條件,與真實、規定或理論上正確的值或條件之間的差異,譯為“錯誤”。Error是能夠導致系統出現Failure的系統內部狀態。
Failure:當一個系統不能執行所要求的功能時,即為Failure,可譯為“失效”。
二、結對對象:韓思明
部落格地址:http://www.cnblogs.com/a294098789/
雙方貢獻:1:1
隊友優點:認真負責、細心細緻、有很好的代碼編寫水平、注重代碼的規範和格式。好隊友!
結對程式設計照片:
三、採用語言:java(代碼實現如下):
1 package com.sicnu.findnumber; 2 3 public class FindLastNumber { 4 5 public static void main(String[] args) { 6 //找出目標值aim在數組最後出現的位置,若在數組中不存在則表示-1 7 int array[] = {2}; 8 int aim = 2; 9 int pos = -1;10 11 if(array.length <= 1){12 if(aim == array[0]){13 pos = 1;14 }else{15 pos = -1;16 }17 18 }else{19 pos = findLast(aim,array);20 21 }22 23 for(int i = 0; i < array.length; i++){24 System.out.print(array[i] + " ");25 }26 System.out.println();27 System.out.println("find :"+ aim +" The last position:"+pos);28 29 30 }31 32 33 /**34 * @param aim35 * @param array36 * @return37 */38 public static int findLast(int aim, int array[]){39 int position = -1;40 for(int i = 1; i < array.length ;i++){//wrong!41 if(array[i] == aim){42 position = i;43 } 44 }45 46 return position + 1;47 48 }49 50 }
四、結果程式碼分析:
錯誤分析:此題所要找的是,目標值在數組中出現的最後一個位置,應該是從數組從後往前找,而題中代碼是,從前往後找,並且是從數組的第二個往後找的,所以是出錯代碼!
•不能觸發Fault
測試案例輸出:
數組為單個元素,當數組元素只有一個時,如題上代碼,直接比較的是數組的值與目標值,並沒有調用findLast()方法,所以並沒有觸發Fault。
•觸發Fault,但是不能觸發Error
測試案例輸出:
調用了findLast()方法,也就是觸發了Fault,但是程式結果仍然是正確,因為8在數組中只有一個且正好處於最中間的位置,此時最後一個出現和第一個出現位置是相同的,所以並未觸發Error。
•觸發Error,但是不能產生Failure
在尋找目標值5時,本來程式尋找的先後順序出錯,找的是第一個出現的值,但是由於程式又出錯在是從第二個找起的,本來第一出現的5被略過,就找到了位於第5個位置的5,因此最後程式啟動並執行結果陰差陽錯是正確的。
五、心得體會:
在軟體測試課程學習中,通過編寫此程式,我對軟體中 fault,error,failure 有了深刻的理解,同時,更讓我明白,軟體測試的測試案例應該在同一等價劃分上盡量多種,畢竟測試案例的巧合不能是測試的瓶頸。這些,也讓我對軟體測試有了不一樣的理解。
結對程式設計——關於Fault、Error、Failure程式設計