软件测试——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(执行)
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条件
上一篇: SQL之数据库的定义与基本操作
下一篇: 大数据云计算——SparkCore核心