文章目录
- 引言
- PIE模型
- 随堂测试
引言
咳咳 QAQ
经历了将近两个月的假期,终于还是要忍受不了 会的毒打(寂寞),回归到学校课堂之中。
PIE模型
那么什么是IE模型呢
在了解PIE模型之前,我们要深入了解一下令我们程序猿深感痛楚的bug。
Bug的类型:
Fault:静态存在于软件中的缺陷,如code写错了。
Error:软件运行时,运行到fault触发产生错误的中间状态。
Failure:Error传不到软件外部,使得用户或测试人员观测到失效的行为。
是不是有种听天书的感觉~~
不急,代我慢慢道来
程序中:如for(i = 0;i
当有Fault的代码,在运行过程中就会导致相应的Error。
如下代码,若将i = 0,打成 i = 1,则会导致 s =2 + 3(正常情况:i = 0,则s = 1 + 2 + 3)
Fault导致的s表现出计算错误,这种 s计算错误为Error。即i = 1 导致 s = 2 + 3这种漏算错误。
当Fault :i=1 导致Error:s = 2 + 3,代码继续运行会导致 平均数average的结果错误,average的计算错误表现在输出,即为Failure。
如果input为(0,1,1,3) 时,虽然导致了error,但是输出中并没有体现出计算错误,这时Failure就不存在。
再看看PLE模型的定义
PIE模型的三个必要条件:
(1)Execution/Reachability:执行必须通过错误的代码
(2)Infection:在执行错误代码时必须触发一个错误的中间状态
(3)Propagation:错误的中间状态必须传播到最后输出,使得观测到的输出结果和预期结果不一致,即失效。
PIE模型实际上就是代码执行到Fault,感染产生Error,传播出去(输出),我们可以观测到Failure失效行为。这就是PIE模型。
随堂测试
了解自己是否掌握上述姿势,请独立完成下述题目
构造一个尽可能简单的程序P(包含两个Fualts: F1和F2),同时构造t1, t2和t3,使得
- t1单独执行到F1并且发现Failure;
- t2单独执行到F2并且发现Failure;
- t3同时执行到F1和F2,并且能够对F1产生Error,但没有Failure。//请标明详细注释
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!