error:一個可以直接觀察到的、可以測量到的不正确值或者條件。是程式運作過程發生的不正确的中間狀态
fault:不正确的步驟、過程、資料定義(軟體編寫錯誤),比如:π定義5或者6等等。
failure:錯誤的結果(軟體崩潰、軟體失效)。
三者之間沒有必然的聯系,有fault不一定會出現error,有error也不一定會出現failure,出現那種錯誤與具體的例子有很大關系。
以一個簡單的含有錯誤的程式為例:
int findAndMean(int []a,int b)
//該函數用于計算指定數組的平均值并查找數組當中是否含有指定數字,有的時候值計算到
指定的數字就停止計算
{
int sum=0,mean;
int i=1;
//這裡應當是i=0,就是沒有比較第一個字元是否滿足;同時沒有将第一個值計算入内
for(;i<a.length;i++)
{
sum+=a[i];
if(a[i]==b)
{break;}
}
return sum/i;
}
測試用例:
t1:[0,1,2] b=4中間狀态:mean=3,正确;結果sum/i=1,正确
t2:[3,2,4] b=3中間狀态:mean=9,錯誤,正确的應當為三;結果sum/i=3,正确(本來為3/1)
t3:[3,1,2]b=3中間狀态:mean=6,錯誤,正确的應當為3;結果sum/i=2,錯誤(本來為3/1=3)