在软件测试中,确定fault(故障、错误)通常涉及以下步骤:
理解需求
仔细阅读和理解软件需求文档,明确软件的功能和预期行为。
设计测试用例
根据需求设计测试用例,包括正常情况和异常情况。
对于可能出现的错误情况,设计特定的测试用例来验证软件是否能够正确处理。
执行测试
运行测试用例,观察软件的执行结果。
记录测试结果,包括成功的测试和发现的错误。
分析结果
对于每个测试用例,分析实际结果与预期结果是否一致。
如果结果不一致,确定是fault(错误)还是error(异常)。
记录和报告
记录发现的fault,详细描述错误发生的情况和条件。
编写测试报告,总结测试结果和发现的问题。
示例1:数组索引问题
Program1:
Fault:最终索引 `i` 应在 -1 时停止,而不是 0。
Error:无
Failure:无
Program2:
Fault:因为是要找最后一个为 0 的元素索引,所以应从后往前找,而不是从前往后找。
Error:无
Failure:无
示例2:函数 `findlast`
```python
def findlast(x, y):
i = len(x) - 1
while i >= 0:
if x[i] == y:
return i
i -= 1
return -1
```
Fault:
1. 循环条件中,`i` 的大小判断条件为 `i >= 0`。
2. 当数组 `x` 为空时,不会执行 fault,`x = []`。
3. 当寻找的 `y` 值,不在测试数组 `x` 中的第一位,即可执行含有 fault 的程序,但是无 error,`x = [1, 2, 3]`, `y = 2`。
4. 当数组 `x` 中没有等于 `y` 值的成员时,执行了 error,并没有执行 failure,`x = [1, 2, 3]`, `y = 4`。
示例3:函数 `lastZero`
```python
def lastZero(x):
for i in range(len(x) - 1, -1, -1):
if x[i] == 0:
return i
return -1
```
Fault:
1. 由于找的是最后位置的‘0’,所以 for 循环中的条件循环应为:`int i = x.length - 1; i >= 0; i--`。
2. 当数组为空时,抛出异常,没有执行 fault,`x = []`。
3. 当数组中只存在一个 0 的时候,执行 fault 时,没有 error,`x = [0, 1, 2]`, `expected = 0`。
4. 当数组中没有 0 时,抛出异常,返回 -1,执行了 error。
通过这些步骤和例子,可以更准确地确定软件测试中的fault,并采取相应的措施进行修复。