背景
这两天有一个之前做的需求出了问题。业务整体是一个流程类的业务,先通过一个多阶段的弹窗页面,从ABCDE等多个条件中选取三个生成一个任务,然后后台去跑任务,生成数据。具体需求是根据弹窗中的条件中,修改A、B、C的部分内容,出现A+、B+、C+条件,根据ABC的不同类,分别生成提取不同的字段,填充任务的不同组成部分,落在代码上就是json中某字段的提取和sql拼接中的string替换问题
。
测试过程
已经完成了任务,然后代码自测的时候,对添加了ABC条件的语句进行了替换,功能正常进行,任务也跑通了,然后联系了测试进行测试,说了测试思路
测试老师,我个人理解,这个需求要测试的内容主要是,1、任务能不能成功生成;2、修改后的A+B+C+的条件加上之后,任务能不能成功生成;3、条件从一天到30天之后,数据会不会增长;4、任务能不能成功执行和运行时间有没有太长
然后测试也按照我给的思路进行了测试,最后确认能成功。然后代码就上线了,结果上线一阵子就出现了问题。
bug与解决办法
就是有的任务,不选择ABC的条件,这三个条件只要缺少一个,就会出现任务生成失败的的bug。
具体的原因出现在json中某字段的提取和sql拼接中的string替换问题
上。
因为提取了条件之后,会拼接字段串,最后拼接到sql里,因为sql中字符串参数需要在两端加单引号比如 'id'
,所以会将拼接的字符串进行截取
str.subString(1,str.getlength()-1)
报错就是字符串角标超限。
原因是ABC这三个条件缺少的时候,提取的字符串为空,拼接结果是""
,导致截取的时候就超限了。
解决办法就是截取之前进行判断,如果是""
或着长度不大于1,就会默认替换的时候换为""
,效果等于不替换。这样就规避了这个bug。
经验教训
这个事情发生之后,领导也教育我自测要测试的更全面。既要测这三个条件都有的,也要测这三个题条件有一个或两个,或者三个都没有的情况。这样测试才全面。
这种测试的思路,我需要更多的培养一下,这个和单元测试好像还有关系,我也的去学习一下。