职业经验 测试开发 - 快速定位问题⚡️

小巴哥 · 2023年03月02日 · 最后由 小巴哥 回复于 2023年03月20日 · 8819 次阅读

写在前面

这两天工作实在是有点小忙,感觉好久没更新了,但是平时也是有感而发的比较多,今天遇到一个问题,感觉挺有意思,处理过程也非常有意义,希望能给大家一个借鉴吧。

测试平台又又又出问题了

今天一位小姐姐找到了我们大组长,说 测试平台添加自动化测试用例失败,之后我们组长把我拉到了一个群里让我去看一下,硬着头皮回复好的,由于这个功能不是我开发的,开发这个的同事请假了,我从来没看过这段代码,但是既然找到了我,只能放手一搏了。

沟通

找到了这位小姐姐沟通了一下什么情况,因为这个是使用好久的功能,出问题肯定是偶现问题,第一个就是询问复现步骤,根据小姐姐的说法,复现了该场景,我把请求通过 curl 的方式复制出来,这里说下 curl ,它是一个命令行工具,用于与服务器之间传输数据。它支持多种协议,我们常用的就是 http 协议,这个也很简单就是打开浏览器控制台,在相应请求上 copy as curl 即可。

image.png

为什么用 curl

第二步就是打开 postman,postman 有一个很好用的功能,就是导入功能,有的小伙伴不喜欢用 postman 就是因为还需要修改 请求头,请求参数,一个一个粘贴复制,这样确实很麻烦,但是如果用过 curl 导入,秒完成一个接口的添加,然后就把 请求链接修改成了我本地,用这个访问到了我本地进行调试。
image.png

找到问题

通过 postman 请求到了到了本地,我发现了确实 接口报错了,报错内容 # Data too long for column ‘xxxx‘ at row 1,根据字面意思, 原因是在添加 parameter 字段时,parameter 的值太长导致,mysql 报错。

image.png

解决问题

根据经验,我找到了该字段,首先想到的是 修改该字段的数值长度,我查了数据库看到该字段为 varchar 类型,长度 为 10000 ,尝试修改更大,还是报错,后来直接把字段类型修改为 longtxt
文本类型,在此请求,测试用例添加成功。

image.png

总结

工具利用的好,可以快速解决问题,办公效果翻倍,在平时工作时,大家遇到接口报错,可以给开发提 bug 时备注 curl 那么开发怎么问题也会非常迅速,更会觉得你很专业。最后, 从沟通到修改完成 20 分钟左右解决了问题,收到了领导和小姐姐的点赞,哈哈哈。

image.png

写在最后

我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!

共收到 15 条回复 时间 点赞
蔡藏锋 回复

没有见过这两个功能,但是根据你的描述,感觉和 操作系统有关,cmd 应该对应 windows 环境,bash 对应 linux 、mac 环境

大佬 curl 有 cmd 和 bash 两个功能,是要选择哪个去进行操作嘞,发现复制出来的格式有点奇怪

最后那个消息好熟悉,如流?百度?

小巴哥 回复

谢谢回复。加油!

Jerry li 回复

嗯,感谢提问
疑问 1 一般服务端会捕获到这种报错,所以浏览器一般看不到这样的问题,使用 postman 可能是我个人的习惯了
疑问 2 原因是我们测试平台的日志不算是特别完善,就导致了一些问题定位起来困难,这也是我们自身的问题,后续有时间会把日志进行优化
疑问 3 感谢大佬给的建议和指点,经验和实践上确实有不足的地方,可能没有按照开发的规范来严格要求自己平台的开发,规范开发流程也是一个好的团队该做的

不只是测开,其实测试同学也需要具备快速定位能力。但是对这个案例,我有以下疑问:
疑问 1. 为什么不能直接就在浏览器里面就看到报错信息,而且要这么麻烦在 postman 里面导入再发送同一个请求?
​疑问 2. 正在报错在服务器端不能直接捕获,一定要去重现者的电脑里面看?
​疑问 3. 数据库字段设计应该是有一定标准的,只是因为这个报错就直接把字段类型改掉,虽然能解决问题,但其实是缺乏了一个完整的问题分析和影响分析过程;而且修改的过程是一边改一边看效果,直到问题解决,是不符合我们改 bug 的最佳实践的,也缺乏足够的分析和验证。

刚刚看到社区微信号推送的这个文章,特地过来探讨一下😅😅😅

漂亮,不过这类还是前端也做下 formRules 会好一些
这样如果字符长度不够用就会被反馈一个需求,而不是一个缺陷啦,哈哈哈

小巴哥 回复

客气啦,算不上大佬。只是做一下经验交流。

我们线上和测试环境数据是隔离的,所以很多时候本地是很难直接复现问题的。定位排查高度依赖日志,所以看到第一反应是查线上日志。

陈恒捷 回复

嗯,感谢大佬指点,确实这样解决问题会更有效率,原因是我们测试平台的日志不算是特别完善,就导致了一些问题定位起来困难,之后会解决这种问题

不错的分享,过程很清晰。

提个小疑问,这里面的 找用户收集复现步骤 + 本地调试复现并看到报错 ,是否可以简化为直接看线上服务相应时间的日志?这样沟通成本更低,而且也避免一些非必现问题被放过。

“大家遇到接口报错,可以给开发提 bug 时备注 curl 那么开发怎么问题也会非常迅速,更会觉得你很专业”
我以前的做法都是手动去复制参数,学会了,直接 copy as cURL

@a747080030 修改超过一定数值会报这个问题的错https://blog.csdn.net/qq_37817473/article/details/99737271

@dyc289686387 感谢,已修改

typo: varchaer => varchar

问题来了,那为什么使用 varchar 会提示参数太长呢?65535 还不够用么🙄

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册