(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这种漏算错误。
           

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。


第三种,将上面代码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;
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值