软件测试的几个术语(故障--Fault、错误--Error、失效--Failure)
1.解释
Fault--故障
编码过程中,存在于软件中的静态缺陷 (Defect)
Error--错误
软件运行过程中,运行fault后,触发得到的结果(错误)。
Failure--失效
失效。error传到软件外部,用户和测试人员能够观测的到的失效行为。
指不完全符合给定的需求,实际结果或行为与期望结果或行为之间的偏差。
当一个系统不能执行所要求的功能时,即为Failure
观测到Failure的三个必要条件【PIE模型】
Execution/Reachability-执行:执行必须通过错误的代码
Infection-感染:在执行错误代码的时候必须触发出一个错误的中间状态
Propagation-传播:错误的中间状态必须传播到最后的输出,使得观测到输出结果与预期结果不一致
ps:
一个测试执行到包含fault的代码,不一定会产生错误的中间状态error
产生了错误的中间状态,不一定会有失效failure
question:有没有一个fault,任何测试都不会将其测试出来?这样还能称之为fault吗?answer:有这样的fault
2.例子
[code]public int findLast (int [ ] x,int y) { // Effects: If x is null throw NullPointerException // else return the index of last element in x that equals y. // if no such element exists,return -1. int count = 0; for (int i = x.length-1; i > 0 ; i--) { if (x [ i ] == y) { return i; } } return -1; }
这个题目要求我们在数组中从后往前找到匹配期望值的索引,但是在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,通过最终结果与完美代码的结果(或者说预期结果)的一致性体现出来。
由于个人能力有限,编不出合适的例子,本例借鉴于其他博主,本人又加以拓展和思考,若有错误,欢迎指正!
阅读更多- 软件测试中的错误缺陷失效故障术语解析
- 软件测试(二)——分析程序中的错误(Fault,Failure,Error)
- [软件测试] - No.1 Fault Error Failure 区别
- 【软件测试】作业二:fault & error & failure
- 软件测试(二)之 Failure, Error & Fault
- C++语言的fault/error/failure(软件测试)
- fault tolerance中的错误和故障检测(Error and Fault Detection Mechanisms)
- 计算机术语——fault、failure、exception和error的区别
- [软件测试_hw2]Failure&Error
- 软件测试相关的63个国外网站和几个国内网站
- 结对编程学习fault、error、failure三种状态
- Error: Failure while executing: git checkout -q master (错误解决)
- 一些软件测试术语和解释
- 【软件自动化测试-QTP实战技能 6】== QTP中运行错误的捕捉和记录
- 软件测试中的认知偏差:为什么测试人员错过了错误?
- 报告软件测试错误的规范
- 运行时错误 -2147418113 8000ffff灾难性故障 'Run time error 'c (8000ffff)': Catastrophic Failure'
- 搭建openstack时,出现Request returned failure status. HTTPInternalServerError (HTTP 500) 错误!
- 软件测试认识的几个误区
- pkg文件中的error: file I/O fault 错误