这是我参与「第五届青训营 」笔记创作活动的第4天;
前言
本篇笔记记录大项目开发过程中遇到的BUG及解决的过程,收获二三,总结一二。
测试
关于测试的部分,除了自定义输入输出的单元测试,还要试着做一些跑流程的功能测试。比方说我开发的用户鉴权功能模块,各API用Postman去测,包括接口入参与返回值、错误提示之类的都很合标准,但是push到远程交由队长去验收的时候队长说我开发的接口在客户端上用不了。
这就是自以为OK的开发只有经过用户的检验才算勉强过关,断不可仅简单自测就上线。
问题排查
要排查出Bug在哪是个技术活。
我首先对比了我创建的项目与官方给到的Demo在代码层面有什么不同,简单比较后发现我的监听路径少了Base的部分:
纠正之后重新构建测试,发现还是连不上。
在Postman上反复比较,监听两个不同端口的simplified-tik-tok和douyin-demo的入参与返回值的不同,但是完全发现不了不同,于是尝试抓包调试。
Charles
在学校中使用过Wireshark,之前的实习用过Charles,这里选择使用后者。
要学习抓包,首先要了解代理的概念。 代理有两种,一种是正向代理,另一种是反向代理。
正向代理时,用户在url栏中访问的是直接目标,并不需要关心代理服务器是什么。
反向代理时,用户访问的目标是反向代理服务器,这个反向代理服务器会从内网中拿取数据再传给用户,但用户并不知道这些数据其实并不是反向代理服务器本身的。
Charles是正向代理工具,也可以发送HTTP请求。
www.charlesproxy.com/latest-rele… 从这里获取最新的Charles,可以免费下载试用版。
下载成功后在这里更改代理走的端口,由于Charles的默认端口与Herze的默认端口冲突,这里更改为另外的端口:
同时可以在Postman或手机WLAN的设置里将代理设为该端口地址,便可实现网络请求走Charles。
通过抓包Http请求发现,走我的项目的请求返回了307,被重定向了。原来是我的路径少了一个/,被Herze自带的默认中间件重定向了,而给定的客户端不具备复发请求的功能,所以收不到预期的返回值。
后记
Debug的旅程是一个考验耐心和技巧的过程,最终的错误往往也意想不到。经过这次的Debug经历提高了自己发现问题并解决问题的能力,并掌握了代理的概念和抓包的分析请求的能力,期待更多的进步。