(1)BUG定义&PIE Model

每个人心中都有自己所理解的BUG,仅以此文记录本人学习后对BUG的认识。世界上第一个有记载的BUG是由Grace Hopper所发现、记录的。详细介绍请自行查阅。在网上可以直接搜索:世界上第一个计算机BUG。


BUG的定义:

 Bug的定义有三个部分,即:Fault,Error,Failure.
        
Fault:这是一种静态的错误,也就是在coding过程中所犯的错误。
比如:一个程序员在编程的时候,突然接到了自己心爱的男友的电话,心情异常激动,结果不小心将for(i = 0;i < 3; i++)中的i = 0误打成i = 1,这种错误就可以归为Fault。
        
Error:当有Fault的代码,在运行过程中就会导致相应的Error。
如下代码,若将i = 0,打成 i = 1,则会导致 s =2 + 3(正常情况: i = 0,则s = 1 + 2 + 3)
Fault导致的s表现出计算错误,这种 s计算错误为Error。即i = 1 导致 s = 2 + 3这种漏算错误。
 (1)BUG定义&PIE Model_第1张图片          

Failure:称为失效行为,当Fault导致了Error,Error传播到外面,会导致预想之外的输出,这种错误为Failure。
从上面的代码可以看出,当Fault :i=1 导致Error:s = 2 + 3,代码继续运行会导致 平均数average的结果错误,average的计算错误表现在输出,即为Failure。
    
上面提到的就是BUG的定义的三个方面。
接下来, 还有这种常见的运行情况:
这时候会有三种情况:
第一种:没有执行到Fault
第二种:感染到Error,但Error因巧合导致隐藏
第三种:没有传播到外面体现Failure
第一种就是代码无法执行到Fault;
第二种,如下代码计算数组的平均数,将数组的数据改成int a[] = {0,5,3}; 
当 i = 0 时,s = 0 + 3 + 5 = 8
当 i = 1 时,s = 3 + 5 = 8
这种巧合,会导致s的值不受 i =0 或 1 的影响,Fault导致了错误,但是数据的巧合让我们无法观测到s 的值是有Error的存在,则导致隐藏的Error。
(1)BUG定义&PIE Model_第2张图片

第三种,将上面代码a数组的值为int a[] = {3,5,4};
正确情况:当 i = 0 时,s = 3 + 5 + 4 = 12
具有Error:当 i = 1 时,s = 3 + 5 = 8 ;这种情况下因为Fault导致了Error。
但当 i = 0时,average = 12 / 3 = 4
当 i = 1时, average = 8 / 2 = 4
这种巧合导致了Failure 无法传播到外面,我们无法观测到失效行为,这会导致隐藏的Failure。

以上所有的语言是对BUG的定义和解释,这是本人的学习记录,哪里有不对的地方,敬请大神批评指点!

PIE Model:对PIE模型的理解,我自己认为是基于在BUG定义上的。
PIE模型就是代码执行到Fault,感染产生Error,传播出去(输出),我们可以观测到Failure失效行为。这就是PIE模型。


 








第一种就是代码无法执行到Fault;

你可能感兴趣的:(软件测试)