一次无脑接口测试导致的无效排查的经历
目录
项目背景
公司自研了私有化的对象存储服务,目前需要对上传接口进行功能测试。
问题
使用第三方测试工具 ApiPost 测试上传接口时,发现 dzuuid 参数始终无法正确解析出来,于是开始了排查工作。
ApiPost 测试界面如下图所示:
除了单文件上传模式,上传接口还支持分片上传模式,上图中的 dzuuid 参数就是用来表示分片属于哪个文件的,在服务器端对应参数 Identifier。现在的问题是服务器端解析 dzuuid 参数时始终为空,打印日志如下:
[Info] 2021/12/23 20:00:24 权限地址为空,跳过 auth.go 46[2021-12-23 20:00:26.970][info][file.go:392] 上传文件类型: MP4[2021-12-23 20:00:26.970][info][file.go:362] chunk.Identifier:
服务器日志截图如下:
解决
首先,把上传请求中的 file 参数解析后出来,代码如下:
返回值 header,类型为 multipart.FileHeader 指针,我们将其打印出来,日志输出详情如下:
[2021-12-23 20:00:26.970][info][file.go:363] &{{0xc000200540 -1 200} 0xc0001e0300 0xc0001e0400 [] [0xf6e780 0xf6f720 0x1002b60 0xfff4e0 0xfbb120 0xfff220 0x1006e80] 6 /bag/file/upload 0xc0001984e0 0xc00054e750 {{0 0} 0 0 0 0} map[X-B3-Flags: X-B3-Parentspanid: X-B3-Sampled: X-B3-Spanid: X-B3-Traceid: X-Request-Id: auth:map[]] [] map[] map[dname:[0.doc] dtranscode:[false] dtype:[3] dzchunkindex:[0] dztotalchunkcount:[1] dzuuid :[123123123] identifier:[666666]] 0}
日志截图如下:
通过日志,我们发现,上传的 dzuuid 参数并非我们想象的那样,只是“dzuuid”那么简单,实际上是“dzuuid ”的样子。有点像“挂羊头卖狗肉”的意思,哈哈。
终于知道原因了,是自己写错参数名称了,在设置 dzuuid 参数时,末尾多写了几个空格。
综上所述
对象存储服务的上传接口没有问题,原来是一场误会,接口调用方的问题,测试用例的问题。
作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄
版权声明: 本文为 InfoQ 作者【liuzhen007】的原创文章。
原文链接:【http://xie.infoq.cn/article/c36154a15d8689c24862b2b70】。文章转载请联系作者。
评论