软件测试中的错误Failure, Error, Fault的实战题目

     在上一篇文章中我们提到了这三者的区别,当然我们不但要能分清它们,根据测试case知道它究竟触发到哪个或哪几个,我们还要进行逆向思维,在给出程序的情况下要能根据需求设计测试case,今天我们就结合课后作业一起来看看。

    一.题目1

    

 1 public int findLast (int[] x, int y) {
 2 //Effects: If x==null throw NullPointerException
 3 // else return the index of the last element
 4 // in x that equals y.
 5 // If no such element exists, return -1
 6 for (int i=x.length-1; i > 0; i--)
 7 {
 8 if (x[i] == y)
 9 {
 10 return i;
 11 }
 12 }
 13 return -1;
 14 }
 15 // test: x=[2, 3, 5]; y = 2
 16 // Expected = 0

  1.找到程序中的Fault:

      Fault:循环条件出错,for循环中i应该大于或等于0而不是大于0;

   2.设计一个未执行Fault的测试用例:

 x=null;y=2;

  3.设计一个执行Fault,没有触发Error的测试用例:

 数组x的第一个元素不是与y相等的唯一的元素即可避免Error,如x=[4,2,3,4,5];y=4;

  4.设计一个触发Error,但不导致Failure的测试用例:

 当数组只有一个元素的时候,循环无法进行,返回-1,触发Error。但若x中唯一的元素与y不相等,则Failure不会产生。如x=[2];y=3.

 

二.题目2

    

 1 public static int lastZero (int[] x) {
 2 //Effects: if x==null throw NullPointerException
 3 // else return the index of the LAST 0 in x.
 4 // Return -1 if 0 does not occur in x
 5 for (int i = 0; i < x.length; i++)
 6 {
 7 if (x[i] == 0)
 8 {
 9 return i;
 10 }
 11 } return -1;
 12 }
 13 // test: x=[0, 1, 0]
 14 // Expected = 2

       

1.找到程序中的Fault:

  Fault:循环错误,程序为从前往后遍历,若找到一个0就返回,不能保证是最后的,应改为从后往前遍历,即 :for (int i=x.length-1; i >= 0; i--);

2.设计一个未执行Fault的测试用例:

  显然,未改正之前不能找到这样的例子,以为int i=0一定会执行;

3.设计一个执行Fault,没有触发Error的测试用例:

  当x=null时执行fault且会抛出异常,但不会触发error;

4.设计一个触发Error,但不导致Failure的测试用例:

  若数组中有一 个元素为零,则会触发错误但不会失败,例如:x=[1,2,0,3]. 

    好了,经过上面两道例题的分析和解答,相信大家对fault,error和failure已经能完全区分并学会逆向思维找到对应的测试案例了,在软件测试技术的道路上又迈开了新的步伐。

转载于:https://www.cnblogs.com/yuanmaoting/p/8540265.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值