欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

软件测试——faul,error&failure 与 Pie模型

程序员文章站 2024-03-22 12:16:58
...

软件测试——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&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&failure 与 Pie模型