软件测试的几个术语(故障 |
您所在的位置:网站首页 › 术语是什么意思例子 › 软件测试的几个术语(故障 |
1.解释
Fault--故障
编码过程中,存在于软件中的静态缺陷 (Defect) Error--错误软件运行过程中,运行fault后,触发得到的结果(错误)。 Failure--失效失效。error传到软件外部,用户和测试人员能够观测的到的失效行为。 指不完全符合给定的需求,实际结果或行为与期望结果或行为之间的偏差。 当一个系统不能执行所要求的功能时,即为Failure 观测到Failure的三个必要条件【PIE模型】Execution/Reachability-执行:执行必须通过错误的代码 Infection-感染:在执行错误代码的时候必须触发出一个错误的中间状态 Propagation-传播:错误的中间状态必须传播到最后的输出,使得观测到输出结果与预期结果不一致 ps:一个测试执行到包含fault的代码,不一定会产生错误的中间状态error 产生了错误的中间状态,不一定会有失效failure question:有没有一个fault,任何测试都不会将其测试出来?这样还能称之为fault吗?answer:有这样的fault 2.例子 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. 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,通过最终结果与完美代码的结果(或者说预期结果)的一致性体现出来。 由于个人能力有限,编不出合适的例子,本例借鉴于其他博主,本人又加以拓展和思考,若有错误,欢迎指正! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |