不止一次犯这种毛病了,记录一下,提高解决问题的速度,顺便也看看这类的错误日记能记多大的篇幅。
事件一:
发生时间:2023.02.02日
任务需求:我需要利用接口批量创建任务(任务是从源表采集数据到目标表),建任务的源表表名写入txt文件中,再通过Jmeter的 CSV 数据文件设置 组件实现动态传参,文件中有100个表名,表名作为“查询模型信息接口”入参,执行查询,从响应结果中提取模型ID的值。
结果:100个请求,请求都执行成功了,但有的接口无法从响应结果中提取到目标数据。
排查:
1)我先是怀疑CSV数据文件设置得不对,是否跳过了部分数据?---但不是,如果单独换成固定参数传入,还是不对,接口响应中仍然没有目标数据,那排除了CSV文件的问题
2)那是接口自身的功能问题?---也不是,在界面上查询模型,是可以找到目标数据。这时发现了,是要翻页才能找到目标数据,再次检查接口入参,接口URL中限定了返回结果数,目标数据不在第一页的10条数据中,导致提取失败。将返回结果数改大一点,解决问题。
排查的过程花了至少1个小时,把很多时间都花在了CSV数据文件设置是否出错上,走进了胡同里。休息了一段时间,再次打开脚本,才有了第2步的排查过程。还有一点,此次接口的入参放在了URL里,一般我在脚本开发时,直接从抓包工具里,复制粘贴URL,排查的时候往往会忽略了URL里的参数。以上。
事件二:
发生时间:2023.02.06日
任务需求:我需要利用接口,新增一个节点数据。
结果:明明已经在入参时定义好了参数,但接口响应报500,提示参数缺失。
排查:
1)先是对比消息体里的参数,对比来对比去还是发现不了问题,参数已经写了,怎么就没有?
2)休息了一段时间,脑子换口气,再来抓包,这次发现问题了,原来是请求头Content-Type设置得不对,调试过的Post请求大部分Content-Type是application/json格式,在脚本开发时经常复制粘贴别的请求头来未做修改和检查,仍是用Content-Type=application/json,导致程序无法识别数据,因此报上述错误。修正请求头部的Content-Type=application/x-www-form-urlencoded,问题解决。
以上,是一次只顾着检查入参,而没有检查请求头的经验教训。很多时候犯错,都是因为复制粘贴不检查导致的,吾日三省吾身,URL检查了吗?传参检查了吗?请求头检查了吗?