我是靠谱客的博主 冷静书包,最近开发中收集的这篇文章主要介绍java白盒测试问题_白盒测试项目实践经验总结(二)—边界值问题边界值Bug1边界值Bug2,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

奇技指南

长期测试经验告诉我们,大量的错误发生在输入或输出范围的边界值上,而不是在输入输出范围的内部。

本文是系列总结第二篇,列举3个测试时遇到的边界值bug的典型例子~

本文来自Qtest之道

系列1--白盒测试项目实践经验总结(一)

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

边界值Bug1

Bug描述: 判断内存大小能否容纳字符串时,判断条件未正确处理边界值,导致边界值情况下,使用sprintf函数向目标内存写数据,会丢失最后一个字符。

if((size_t)dest_size < strlen(idc) + strlen(host) + strlen(tmp))

{

LOG_ERR(“%s failed. Dest buffer_size is not enough.”,_func_);

return ERR_BUF_NOT_ENOUGH;

}

如上,代码中是想判断目标内存区大小能否存得下即将放入的字符串,如果空间不足,则返回一个错误;否则,则使用sprintf将字符串直接写入目标内存。

出问题的关键在于这里在判断时忽略了字符串末尾的0。

3f335e1e2a2c3e684bb28890b648bbb7.png

而当实际的目标内存空间大小为11个字节时,不满足以上判断条件,于是认为目标内存是足够容纳字符串的,于是通过sprintf写入后最终的结果变成这样(最后一个字符d被截取掉了):

0ec30d50b4c12dd60658ecac6770a3fa.png

解决:将条件判断中的

16923be2d2e5ddaf5f49b486417f316d.gif

边界值Bug2

Bug描述:发送消息次数小于最大重试次数时,继续重试;达到最大重试次数后退出。代码中如果一直重试失败,最后实际发送次数会比最大重试次数多1.

代码中当发送消息失败时,会判断重试次数是否小于最大重试次数,如果是,则记录一条日志并重试。初始时,try_send_times=0,当if(try_send_times

if (status == -1)

{

// send message failed

if (errno == EAGAIN)

{

if (try_send_times < MAX_SEND_MSG_TIMES)

{

LOG_WARN("msg queue is full! try_send_times:%d

最后

以上就是冷静书包为你收集整理的java白盒测试问题_白盒测试项目实践经验总结(二)—边界值问题边界值Bug1边界值Bug2的全部内容,希望文章能够帮你解决java白盒测试问题_白盒测试项目实践经验总结(二)—边界值问题边界值Bug1边界值Bug2所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部