天天看點

軟體測試——faul,error&failure 與 Pie模型

軟體測試——faul,error&failure 與 Pie模型

1.fault

靜态存在于軟體中的缺陷,通常稱之為缺陷。

2.error

在運作過程中,fault出發了一個中間狀态,稱之為error。

3failure

通常稱之為失效,是指error一直傳播到軟體的外面,使使用者可以觀察到失效的行為

舉個例子更好了解:

<周遊數組>

public class CSta {
	public static void main(String args[]) {
		int numbers[]= {3,4,5};
		t1(numbers);
	}
	private static void t1(int numbers[]) {
		// TODO Auto-generated method stub
		int length=numbers.length;
		int n=1;
		double mean,sum;
		sum=0.0;
		for(int i =1;i<length;i++)//i=0
		{
			sum+=numbers[i];
			System.out.println("sum"+n+"="+sum);
			n++;
		}
		mean=sum/(double)length;
		System.out.println("sum:"+sum+"\nmean:"+mean);
		
	}
}
           

sum最後值應該為數組的每一位的數組相加。

我們都知道,周遊數組應該用:

for(int i =0;i<length;i++)

本來的結果是:

sum1=3.0

sum2=7.0

sum3=12.0

sum:12.0

mean:4.0

因為數組下标是從0開始的。

但這裡卻是 for(int i =1;i<length;i++)

是以結果為:

sum1=4.0

sum2=9.0

sum:9.0

mean:3.0

這樣就導緻了周遊數組不完整的問題。

在這個程式中

fault為:靜态變量int i=1

error:sum=4+5=9

(正常狀态是3+4+5=12)

failure:mean=3

(正常狀态是12/3=4)

–整個運作過程中通過派模型來刻畫–

三者對應了派模型(Pie Model):

Propagation(傳播) Infection(感染) Execution(執行)

軟體測試——faul,error&amp;failure 與 Pie模型

Pie模型的三種情況:

1.fault,error,failure全部觸發,如上面的程式

2.error觸發,但error與failure未觸發(error不觸發,failure就不會觸發)

Test:int numbers[]={0,4,5}

當i=0時(正常情況全部周遊):sum=0+4+5=9; mean=3

當i=1時(非正常情況第一個數未周遊):sum=4+5=9; mean=3

結果一緻,無法觸發error

3.fault觸發,error觸發,但failure未必會觸發

Test:int numbers[]={3,5,4}

public class CSta {
	public static void main(String args[]) {
		int numbers[]= {3,5,4};
		t2(numbers);
	}
	private static void t2(int[] numbers) {
		// TODO Auto-generated method stub
		double sum=0.0,mean;
		int n=1;
		int length=numbers.length-1;
		for(int i=0; i<length;i++)
		{
			sum+=numbers[i];
			System.out.println("sum"+n+"="+sum);
			n++;
		}
		mean=sum/(double)length;
		System.out.println("sum:"+sum+"\nmean:"+mean);
	}
}
           

分析:

非正常情況(如上程式):

sum1=3.0

sum2=8.0

sum:8.0

mean:4.0

正常情況(完整周遊數組):

sum1=3.0

sum2=8.0

sum3=12.0

sum:12.0

mean:4.0

1.fault:

int length=numbers.length-1;

for(int i=0; i<length;i++)

最後一個數沒有周遊到,是以達成fault

2.error:

完整周遊:sum最終值為12.0

非完整周遊:sum最終值為8.0

是以達成error條件

3.failure

完整周遊:mean=8/2=4

非完整周遊:mean=12/3=4

兩次執行結果的最終值mean相等,是以不達成failure條件

軟體測試——faul,error&amp;failure 與 Pie模型