软件测试的几个术语(故障–Fault、错误–Error、失效–Failure)

1.解释

Fault–故障

编码过程中,存在于软件中的静态缺陷 (Defect)  

Error–错误

软件运行过程中,运行fault后,触发得到的结果(错误)。

Failure–失效

失效。error传到软件外部,用户和测试人员能够观测的到的失效行为。

指不完全符合给定的需求,实际结果或行为与期望结果或行为之间的偏差。

当一个系统不能执行所要求的功能时,即为Failure

观测到Failure的三个必要条件【PIE模型】

Execution/Reachability-执行:执行必须通过错误的代码

Infection-感染:在执行错误代码的时候必须触发出一个错误的中间状态

Propagation-传播:错误的中间状态必须传播到最后的输出,使得观测到输出结果与预期结果不一致

ps:

一个测试执行到包含fault的代码,不一定会产生错误的中间状态error

产生了错误的中间状态,不一定会有失效failure

question:有没有一个fault,任何测试都不会将其测试出来还能称之为fault吗swer:有这样的fault

2.例子

这个题目要求我们在数组中从后往前找到匹配期望值的索引,但是在for循环中,由于当i = 0时候没有满足 i>0的条件,无法遍历到 i = 0,所以实际上没有比对第一个数。这就是我们的Fault。

1.当测试用例为 test:x = [] 时,抛出空指针异常,此时没有执行下面的程序,所以没有执行fault。

2.当测试用例为 test:x = [2,3,5], y = 3 的时候

期望值:1 实际值:1 同时由于我们在 i = 1的时候,正确返回。所以我们虽然执行了含有fault的程序,但是并没有产生错误,所以 执行了fault,没有执行error。

3.当测试用例为 test:x = [2,3,5],y = 1的时候

期望值:-1 实际值:-1 虽然我们得到了正确的结果,但是按照设计,应该在遍历完x = 0 以后,返回 -1;而实际程序在遍历完x = 1之后直接返回了 -1,所以 执行了fault,产生了error,但没有出现failure。

4.当测试用例为 test:x = [2,3,5],y = 2的时候

期望值:0 实际值:-1 我们得到了与预期不一致的结果,按照设计,应该在遍历完x = 0 以后,返回 0;而实际程序在遍历完x = 1之后直接返回了 -1,所以 执行了fault,产生了error,也产生了failure。

3.个人理解

是否执行Fault,取决于是否执行了出现Fault的语句。

是否执行Error,不容易把握。先针对代码原本要完成的功能,在脑海里预想一个完美的代码。然后对比那个完美代码和存在Fault的代码在输入相同的测试样例的时候,看它们在执行期间状态是否一致。

是否执行Failure,通过最终结果与完美代码的结果(或者说预期结果)的一致性体现出来。

由于个人能力有限,编不出合适的例子,本例借鉴于其他博主,本人又加以拓展和思考,若有错误,欢迎指正!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月11日
下一篇 2018年10月11日

相关推荐