最近迭代新开了一个小需求,就是 app 里的反馈页面上新增一个带图片的需求。
原本以为是一个小需求,可是在后面使用小米手机的时候,却发现图片一直上传失败,打开自带的内置调试工具发现是上传的接口报错,可是无法查看到具体的信息。
我本来想用抓包来看看具体的原因,可是因为测试机的安卓版本为 12,在正常情况下无法抓包。
于是上网搜索几种解决的方案:
1.手机 root,使用 xposed 框架(无奈这种方法风险大,变砖了小弟承担不起就排除了)
2.使用虚拟机 VirtualVMos+ 小黄鸟来抓包,使用此方法下 bug 却消失,让我怀疑是不是小米系统的问题
3.让安卓端修改测试包的证书安全配置代码,开放证书,我把这种建议提交给安卓端的负责人,但以安全性唯有拒绝了。
让我去找后端日志看看,结果告知请求时以非简单请求,即 option 请求,没有请求报错,没有请求成功的状态。
这种情况有没有好的方法去定位问题呢
针对抓包这个点,按 8 楼的方法,完全可以做成 release 无法抓包,内部 debug 才能抓包的方式,这样并不会影响安全性。实在不行,单独为你这个情况拉一个新分支改配置,打一个特殊包,改动的代码不合并到其他分支上,也没啥安全问题呀。况且还是开发让你协助抓包定位问题的,但又不给你提供便利,这个有点说不过去。
另外,如果复现步骤不复杂,可以直接到开发位置上,开发通过 debug 模式运行这个包,你手动复现这个问题,这样也可以获得更丰富的错误信息,有助于修复问题。
PS:如果你想真的自由地定位问题,拥有代码权限、日志权限,以及了解开发技术,都是很需要的。如果没有这些,你想定位问题,会发现寸步难行。
是不是权限问题?
1、电脑建热点手机连电脑 wifi,在电脑抓包
2、换其他手机试有没有问题
3、转给开发看
其实当你发现了问题,不是应该第一时间提给开发,让他们去排查吗? 你如果有兴趣,再看有什么方式可以抓包,验证你的想法?
测试的第一职责是发现问题,汇报问题,确认和解决问题是开发应该做的,切记不要颠倒次序了。
是的,因为我们一般情况下发现问题,都会把接口抓起来,定位问题再转给开发去看。这个 bug 提交给开发看了他那边也想我这里去抓包看具体的数据情况
1、与图片的格式(png,jpeg 等)及大小,有关系?
2、图片上传的过程,如图片保存在手机的缓存,buffer 不足?
3、图片上传的是链接地址,但物理地址上的图片被删除了?
无法抓包,可以参考 https://www.jianshu.com/p/392362115090 让开发针对 debug 配置单独构建一个 apk
让我去找后端日志看看
方法不是告诉你了?
就是懒得打包搪塞你呢,学习一下成本不高,链接 8 楼发了
针对抓包这个点,按 8 楼的方法,完全可以做成 release 无法抓包,内部 debug 才能抓包的方式,这样并不会影响安全性。实在不行,单独为你这个情况拉一个新分支改配置,打一个特殊包,改动的代码不合并到其他分支上,也没啥安全问题呀。况且还是开发让你协助抓包定位问题的,但又不给你提供便利,这个有点说不过去。
另外,如果复现步骤不复杂,可以直接到开发位置上,开发通过 debug 模式运行这个包,你手动复现这个问题,这样也可以获得更丰富的错误信息,有助于修复问题。
PS:如果你想真的自由地定位问题,拥有代码权限、日志权限,以及了解开发技术,都是很需要的。如果没有这些,你想定位问题,会发现寸步难行。
是的,我觉得完全可以通过分支来操作来给我打一个特殊包让我抓包。让我抓包的是前端,但是打包的是客户端,客户端推脱也正常,因为这个是需求外面的弹窗是客户端的,里面是前端开发的 web 页面。
感谢大佬最后的建议,确实,我们公司即没代码权限,刚来的时候,想问问带我的老人可以看代码的权限吗,他反问一句我们不需要看代码你看代码干嘛。。在公司里其实能抓包分辨前后端问题以及看对应的数据就已经算定位好问题了,这可能也是因为公司业务发展快,一周一个迭代,测试一共有 15 个人,但都是只是功能测试,连自动化也没有在自己的 app 上的得到落实。
问题得到解决了。原来是因为前端的使用图片上传的组件的问题,她换成了原生的写法,问题解决了 。
如果需要抓包,目前安卓因为证书的限制,https 协议很难在真机完整抓包,建议使用模拟器或者采用 iPhone 手机;如果能够保证网络是经过电脑,也可以使用 wireshark
抓包只为排除接口问题,你这问题应该跟手机适配有关系,建议还是特殊 app 处理 +logcat 的方式
这里的网络经过电脑,我可以理解是通过电脑开热点然后用手机链接热点,再用 wireshark 进行抓包吗。但是我用笔记本开热点,用手机链接网络,当手机使用网络,电脑上的 fiddler 没有请求