谈谈今天遇到的一个坑爹的BUG

发表于:2018-1-31 13:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:minininja    来源:博客园

  今天测试的同事给我提了一个BUG,BUG内容是在当设置工作流条件为某个数字、货币、百分比类型的字段‘发生改变’为‘0’时,这个工作流在该字段发生任意变化时被触发了,而原本应该是只有在该字段变为0时才可以触发。
  接手这个bug,我先自己创建了一个工作流,分别用数字、货币、百分比在里面添加了3个条件,然后设置了通过条件组后执行的 任务。
  因为我之前有修改过工作流和字段公式以及货币数字字段的BUG,而且我们的工作流模块很复杂,所以我一开始为了节省时间,直接找到最后执行这段条件组的文件中。 打印并且测试,忙活了半个小时,无果,沮丧+20。
  然后只能老老实实的从保存操作开始找起,通过打印测试发现 字段的数据被保存了两遍,只有在第二遍中才保存了错误的值。然后从执行第二次保存的文件中往前查找,时间流逝。。。沮丧+30。 然后,通过跟正常保存的流程进行对比,发现是因为当改变任意数字时进行验证的时候直接验证为true然后直接执行了工作流中的任务。 进入这个验证当中查找,最终发现,是因为在里面的一个函数当中有一个判断
if (empty($value) {
return $hasChanged;
} else {
return $hasChanged && $fieldValue == $value;
}
  其中$value 是我们在条件组中设置的满足当前单个条件的值, $fieldvalue是我们填充的值。
  在这里我们设置的值为0,众所周知(很惭愧,我不知道),在php中,0会被判断为空 和false。
  所以,在这个条件当中,当值为0的时候,我们直接进入了前面那个判断,返回了错误的值。最后我在判断中,添加了不为0的情况。BUG果然没有被重现。
  历经2个小时,终于把这个BUG解决。
  总结:虽然模块确实比较复杂,但是这其实只是一个比较简单的Bug.那么为什么会花费这么多时间呢,我总结了几点:
  1.没有在完全理解bug的情况下就直接抄起键盘开始干,在我们看到这个Bug的时候,第一时间思考的应该是为什么0才会出现错误,而其他值不会。执行这个条件组的操作会在哪一步进行,验证又是在哪一步(这方面涉及到不清楚当前功能的逻辑结构)。
  2.基础知识不足。如果是大神的话,一眼就能知道这个Bug是由什么造成的。
  所以,这个Bug又给我上了一课,要加强基础知识,多思考。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号