软件测试学习笔记:找代码中的fault,并设计特定的测试用例

本文详细解析了两段代码中存在的问题,并设计了针对这些错误的测试用例。通过理论与实践相结合的方式,展示了如何正确地进行错误处理与测试,确保程序的稳定性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观察两段代码:

(1) 发现代码中的错误;

(2) 设计测试用例,不执行fault部分;

(3) 设计测试用例,执行fault部分,但不出现error情况;

(4) 设计测试用例, 出现error情况,但不发生failure。

代码一:

public int findLast (int[] x, int y) {
//Effects: If x==null throw
NullPointerException
// else return the index of the 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;
}
// test: x=[2, 3, 5]; y = 2
// Expected = 0

(1) for循环中循环条件为i>=0;

(2) x=[],y=2;

对于此测试用例,x为空,不执行for循环,直接返回NullPointerException;

理论结果:NullPointerException,

实际结果:NullPointerException;

(3) x=[1,2,3],y=2;

对于此测试用例,最后一个等于y的值不在x[0]处,而在x[1] 出,所以for循环并没有执行到"i>0"的条件出,所以不会出现error状态;

理论结果:1,

实际结果:1;

(4) x=[3,4,5],y=2;

对于此测试用例,虽然执行到了error状况,但由于x中并没有与y相等的值,所以得到结果是正确的,所以没有出现failure;

理论结果:-1,

实际结果:-1;

public static int lastZero (int[] x) {
//Effects: if x==null throw 
NullPointerException // else return the index of the LAST 0 in x. // Return -1 if 0 does not occur in x for (int i = 0; i < x.length; i++) { if (x[i] == 0) { return i; } } return -1; } // test: x=[0, 1, 0] // Expected = 2

(1)for循环的方向反,应该从i = x.length-1执行到i = 0; 

(2)无论如何代码都会执行进入for循环,所以不存在样例不执行fault;

(3)x=[1];这里执行时会进入for循环,即进入了fault,但是由于x中只有一个元素,所以不存在循环执行的正反问题,所以没有error状态;

理论结果:-1,

实际结果:-1;

(4)x=[1,0,2];此用例执行时会发生error状态,但是由于x中只有一个0,所以for循环执行顺序不会对结果产生影响,因此没有发生failure;

理论结果:1,

实际结果:1。

转载于:https://www.cnblogs.com/xzzily-mitao/p/5267528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值