[软件测试]

来源:互联网 发布:最全的外文数据库 编辑:程序博客网 时间:2024/06/05 08:32

在软件测试中,首先我们就会讲到什么是Fault,Error,Failure。这三个单词的翻译都可以很笼统的称为-“错误”。但是它们三个的区别到底在哪里呢?我们先来看完整的定义:

Fault的定义:可能导致系统或功能失效的异常条件(Abnormal condition that can cause an element or an item tofail.),可译为“故障”。


Error的定义:计算、观察或测量值或条件,与真实、规定或理论上正确的值或条件之间的差异(Discrepancy between a computed, observed or measured value or condition and the true, specified, or theoretically correct value or condition.),可译为“错误”。Error是能够导致系统出现Failure的系统内部状态。


Failure的定义:当一个系统不能执行所要求的功能时,即为Failure,可译为“失效”。(Termination of the ability of an element or an item to perform a function as required.)

这个完整的定义,网上随处可见。但是我相信不少人看了之后还是一知半解。Fault的定义显而易见,只要程序中存在这种使系统失效的条件,那么这就叫Fault。如果你有接触到,或者说可能运行该Fault的机会,那么我们就说你执行了Fault。例如,如果一个函数中存在一个逻辑错误,那么这个逻辑错误就是Fault。但是你并没有运行到这个函数,所以我们说,你没有执行Fault。

那么什么是Error呢?我们来看他的定义:计算、观察或测量值或条件,与真实、规定或理论上正确的值或条件之间的差异。简单的说,如果你设计了一段程序,这段程序在你设想的情况下可以运行。如果这段程序很不幸,在运行的时候,中间有些步骤,或者中间变量与你设计的不同,这就叫Error。


程序就好比是从起点运行到终点。如果在过程中,有偏差,即使最终到达了我们期望的终点,过程也是Error的。


接下来我们来看Failure。这个是最好理解的了。我们只看最后的结果和我们预想的是否一致,来判断程序是否失效。


接下来我们来看个题目:


这个题目要求我们在数组中从后往前找到匹配期望值的索引,但是在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,所以执行了error,没有执行failure。


同理,我们来看这一题:


题中程序的目的是我们找到数组的最后一个0的索引,也就是说从后往前匹配第一个0,但是for循环中,i从0开始遍历,找到第一个0即返回,这就是我们的fault。

1.当测试用例为 test:x = []的时候,抛出异常,不执行fault。

2.当测试用例为 test:x = [0]的时候

期望值:0 实际值:0 在返回0的时候, i = 0,和我们设计的过程一样。所以执行了fault,没有执行error。

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

期望值:-1 实际值:-1 但是返回-1的时候,i = 3,遍历到了最后,所以和我们设计的过程不符合,所以执行了error,没有执行failure。


P.S.文章不妥之处还望指正


2 0
原创粉丝点击