java白盒测试问题_白盒测试项目实践经验总结(三)-返回码问题

奇技指南

本篇主要介绍下测试时遇到的关于函数返回码的bug。

函数的返回值往往作为操作是否成功的标志,在函数内部,可能出现许多异常场景,针对每种异常场景,需要返回不同的值,以便上层调用函数处理。

被调函数是否能够在不同场景下返回对应的返回码;调用函数能否根据不同返回码正确处理,也是白盒测试时需要重点关注的内容。

下面就以上两个场景分别列举1个测试时发现的问题。

——本文来自公众号Qtest之道

9f20c9ced55024b2950d7a8275861f9a.png

返回码Bug1:

Bug描述: 异常情况下返回了代表正确场景的returncode。

e24ca58a6472784474e7ffbb77393931.png

变量ret存储函数返回码,初值为QCONF_OK,代表未发生异常/错误的正确场景。函数内部发生异常时,未给ret变量重新赋值,导致最后返回ret时,值仍然为QCONF_OK。上层调用时会根据被调函数的返回值分别进行处理,这样调用函数处就会全部转到正常逻辑处理分支,即便在出现异常的情况下。出现这个问题,还是不太容易排查。

解决方法

每个异常分支,分别给ret赋予不同的值,方便上层调用处根据ret的值针对性处理。

返回码Bug2:

Bug描述: 调用处对被调函数返回码判断错误,导致分支不可达。

1ba93490ff1f12ac8cf8a7704ac81df2.png

以上代码中获取被调函数的返回值,存储到ret变量中。后面接着判断ret值如果为-1,则重试。这里是想判断被调函数是否处理失败。而反观被调函数会发现,所有分支下,返回值都不会为-1。因此,调用处的语句块永远不会被执行。被调函数所有可能的返回码如下:

8025a700a987aa64672c97d810083851.png

出现这个错误的原因在于代码不规范,对于返回码的赋值,有时使用宏,有时直接使用数字,这里想当然的认为被调函数在处理失败时应该返回-1.

解决方法

将判断条件改成if(QCONF_OK != ret)代表被调函数可能出现的所有非正常情况。

总 结

针对以上出现的情况,做了一个简单的总结如下:

cb9ce971cfe72da9683c9224808cf9e3.png
8e0dd7e332e334d22d8a26ac7fa59e10.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值