我爱编程

软件测试之fault,error&failure

2018-04-16  本文已影响0人  渣空格

软件测试的错误

/**
 *  代码段1
 *  计算平均数 
 */
public static int average(int [] nums) {
    double result = 0;
    for(int i=0;i<nums.lenght;i++){
        result += nums[i]
    }
    result = result / nums.lenght;
    return result;
}
  

三者的关系

  • 由于人类试图通过上述3个基本术语来覆盖所有现实中的失效场景,所以就有“Fault -> Error -> Failure”。即,故障发生了,会导致错误,错误有可能造成系统功能的减弱或丧失。
  • 当Fault是另外一个组件/系统的失效时,则有Failure (Fault) -> Error -> Failure;当将Fault说成是某组件状态Error时,则有Error (Fault) -> Error -> Failure。
  • 事实上,这是一种递归循环的关系,递归关系要成立必须有一个明确的结束条件,这个条件就是要找出Root Cause,否则将无法完成一个失效分析。
    来自穆春阳科学网博客

常见的运行情况

通常会有三种情况

  1. 没有执行到fault
    • 出现了某些异常,代码没有执行到fault处
  2. 感染到Error,但是Error因为某些特定的情况无视了
    • 因为传入数据的特殊,例如计算平均数的时候,根据代码段1,int a = {0,2,4};
      当i = 0 的时候,平均数等于0 + 2 + 4 = 6;6 / 3 = 2;
      当i = 1 的时候,平均数等于2 + 4 = 6; 6 / 3 = 2;
      这样的话i=0或者i=1的时候得到的结果都是一样的
  3. 没有传播到外面体现Failure
/*
 * 代码段2
 * 计算平均数
 */
public static double average(int a[]){
    int i = 0;
    double result = 0;
    for (i=0; i < a.length; i++) {
        result += a[i];
    }
    result = result / i ;
    return result;
}
上一篇 下一篇

猜你喜欢

热点阅读